activity_main.xml in Android App

activity_main.xml – जिस तरह से MainActivity.java नाम की Controller File Automatically Create होती है, ठीक उसी तरह से activity_mail.xml नाम की View File भी Automatically Create होती है और इसी File को MainActivity.java Controller द्वारा setContentView() Method के माध्‍यम से View यानी First Screen Layout के रूप में Android Device पर Display किया जाता है।

ये File हमारे Android App के “/res/layout/” Path पर Stored होती है और हम हमारे Android App में जितनी भी Activities Create करते हैं, उन सभी से सम्‍बंधित Controller Java File, हमारे Android App Architecture के “/java/com.domain.packagename/” Path पर Create होती है, जबकि प्रत्‍येक Activity के साथ Associated View File, “/res/layout/” Path पर Create होती है।

साथ ही Create होने वाली Activity File व उससे Associated View File के Naming में भी एक Convention Follow होता है, जिसके अन्‍तर्गत Activity File का जो नाम होता है, वैसा ही नाम Associated View File का भी होता है लेकिन Activity File के नाम के प्रत्‍येक Capital Letter से Just पहले View File के नाम में Underscore Replace हो जाता है, साथ ही प्रत्‍येक View File के नाम की शुरूआत Default रूप से “activity_” शब्‍द से होती है।

उदाहरण के लिए यदि हम SecondActivity नाम की एक और Activity File Create करें, तो Default रूप से Create होने वाली Associated View File का नाम activity_second.xml जबकि Controller Java File का नाम SecondActivity.java होगा। इसी तरह से यदि हम SecondScreenActivity नाम की एक और Activity File Create करें, तो Default रूप से Create होने वाली Associated View File का नाम activity_second_screen.xml जबकि Controller Java File का नाम SecondScreenActivity.java होगा।

activity_main.xml File में Default रूप से Create होने वाले Layout Defining XML Codes निम्‍नानुसार होते हैं:

<?xml version="1.0" encoding="utf-8"?>
 <RelativeLayout 

    xmlns:android="http://schemas.android.com/apk/res/android" 
     xmlns:tools="http://schemas.android.com/tools"
     android:id="@+id/activity_main"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     android:paddingBottom="@dimen/activity_vertical_margin"
     android:paddingLeft="@dimen/activity_horizontal_margin"
     android:paddingRight="@dimen/activity_horizontal_margin"
     android:paddingTop="@dimen/activity_vertical_margin"
     tools:context="com.bccfalna.myapp.MainActivity">
 
     <TextView
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:text="Hello World!" />
 </RelativeLayout>

इस File में सबसे पहले Statement के रूप में निम्‍न Declaration किया किया गया है, जो कि Android System को इस बात का Instruction देता है कि Current File एक XML File है, जिसमें XML Version 1.0 Standards पर आधारित UTF-8 Font Supported XML Codes लिखे गए हैं:

<?xml version="1.0" encoding="utf-8"?>

एक Android App कई तरह के Layouts Support करता है, जिनका विस्‍तृत वर्णन हम आगे आने वाले Chapters में करेंगे, लेकिन Current View File में <RelativeLayout … /> Element के माध्‍यम से Android System को इस बात का Instruction दिया गया है कि ये View File RelativeLayout Supported है। यानी इस View File के सभी Visual Elements एक दूसरे से Relative Mode में Arranged हैं।

चूंकि किसी भी Android Activity से सम्‍बंधित View File में जिस किसी भी Layout Mode का प्रयोग किया गया हो, वह Layout Mode मूलत: उस Layout XML File का Root Node होता है और View से सम्‍बंधित अन्‍य सभी अन्‍य Elements के Elements इसी Root Node में Nested रहते हैं। इसीलिए उपरोक्‍त Code में <TextView … /> Element, <RelativeLayout … /> Element के अन्‍दर Nested है।

इस Layout File के प्रत्‍येक Element किसी न किसी Visual Control जैसे कि Button, TextBox, Label आदि से सम्‍बंधित होता है और इन Visual Controls के विभिन्‍न Aspects को Element के Attributes के माध्‍यम से Specify किया जाता है। इसलिए हमारे Android App का MainActivity किस तरह से दिखाई देगा, इस बात को तय करने का काम activity_main.xml File में Specified <RelativeLayout … /> Element के विभिन्‍न Attributes करते हैं और किस Element व किस Attribute को किस तरह से काम करते हुए किसी Specific Visual Element को कैसा दिखाना है, इस बात से सम्‍बंधित सभी Declarations व Definitions को जिस XML Schema में Specify किया गया है, उसे XML Namespace के माध्‍यम से Identify किया जाता है और Current XML File में निम्‍नानुसार xmlns Attribute के माध्‍यम से Represent किया जाता है:

xmlns:android="http://schemas.android.com/apk/res/android"

Namespace एक प्रकार से Java के Package अथवा C/C++ की Header Files के समान होते हैं, जिनमें Current Program File में Use किए जाने वाले विभिन्‍न Functions की Declaration/Definitions होती हैं। इसलिए उपरोक्‍त Code द्वारा हम Android System को इस बात का Instruction देते हैं कि Current XML File में Element व Attributes के रूप में जो भी नाम Use किए जा रहे हैं, उनकी Definitions को XML Schema के अन्‍तर्गत http://schemas.android.com/apk/res/android URI से Access किया जाना है।

यानी एक TextView Element, Android Device की Screen पर कैसा दिखाई देना चाहिए, इस बात को जिस XML Namespace में Define किया गया है, उस XML Namespace वाले Schema के TextView Element को Uniquely Represent करने के लिए ही हम xmlns Attribute का प्रयोग करते हुए एक Alias Create करते हैं, ताकि हर बार उस Element को Refer करने के लिए हमें पूरा URI न लिखना पड़े।

इस Code में हमने xmlns:android Attribute के माध्‍यम से Android System के XML Parser को इस बात का Instruction दिया गया है कि “android:” Prefix के साथ आगे लिखे गए सारे XML Attribute Codes की Definitions को http://schemas.android.com/apk/res/android URI से Access किया जाए। परिणामस्‍वरूप अगली Line में Specify किया गया XML Attribute android:id वास्‍तव में http://schemas.android.com/apk/res/android:id को ही Refer कर रहा है, और यदि हम <RelativeLayout … /> Element में xmlns:android Attribute को Specify नहीं करते, तो पूरी XML File में प्रत्‍येक Attribute के लिए हमें पूरा XML URI Specify करना पड़ता। यानी उपरोक्‍त Code कुछ निम्‍नानुसार होते:

<?xml version="1.0" encoding="utf-8"?>
 <RelativeLayout 
     xmlns:tools="http://schemas.android.com/tools"
     http://schemas.android.com/apk/res/android:id="@+id/activity_main"
     http://schemas.android.com/apk/res/android:layout_width="match_parent"
     http://schemas.android.com/apk/res/android:layout_height="match_parent"
     http://schemas.android.com/apk/res/android:paddingBottom="@dimen/activity_vertical_margin"
     http://schemas.android.com/apk/res/android:paddingLeft="@dimen/activity_horizontal_margin"
     http://schemas.android.com/apk/res/android:paddingRight="@dimen/activity_horizontal_margin"
     http://schemas.android.com/apk/res/android:paddingTop="@dimen/activity_vertical_margin"
     tools:context="com.bccfalna.myapp.MainActivity">
 
     <TextView
         http://schemas.android.com/apk/res/android:layout_width="wrap_content"
         http://schemas.android.com/apk/res/android:layout_height="wrap_content"
         http://schemas.android.com/apk/res/android:text="Hello World!" />
 </RelativeLayout>

हालांकि ये Codes Practically सही नहीं हैं और यदि आप अपने Android App के Layout File के Codes को इन Codes से Replace करेंगे, तो आपको Rendering Error ही प्राप्‍त होगा, क्‍योंकि Rendering से सम्‍बंधित कई अन्‍य Functionalities भी हैं, जिनकी जरूरत Android System के XML View Parser को होती है। इसलिए Android App की View File में First Attribute के रूप में हमेंशा xmlns:android Attribute को Compulsory रूप से Specify करना जरूरी होता है, ताकि अन्‍य Attributes को “android:” Prefix के साथ Specify किया जा सके, जिसे Android System का XML Parser समझता है।

वास्‍तव में होता ये है कि Android Device पर Installed Android System का XML Parser पहले से ही इस बात को जानता है कि <RelativeLayout … /> या <Button … /> Element को किस तरह से Visually Render करना है, इसलिए Layout File में सभी XML Codes को Exactly उन्‍हीं Element व Attribute Names के माध्‍यम से Specify करना जरूरी होता है, जिस तरह से उन्‍हें XML Namespace की उस Schema File में Define किया गया है, जो कि Android System के XML Parser में है।

ये ठीक उसी तरह से है जैसे कि किसी C/C++ Program में Screen को Clear करने के लिए हमें clrscr(); Function Name को ही Use करना होता है और ये Function Output Screen को किस तरह से Clear करेगा, इस बात का पूरा Definition conio.h Header File में पहले से ही Specified है।

परिणामस्‍वरूप जब Compiler हमारे Program को Compile करता है, तो Screen को Clear करने से सम्‍बंधित Instructions को conio.h Header File से प्राप्‍त कर लेता है, लेकिन Compiler ऐसा तभी कर सकता है, जबकि हमने हमारी Program File में इस Header File को Include किया हो और कहीं न कहीं clrscr() Function Name को Call किया हो।

इस XML File में Screen View को Specify करने के लिए कई Attributes को Use किया गया है, लेकिन क्‍योंकि हम Android Studio में अपने View को Drag and Drop तकनीक का प्रयोग करते हुए Visually Design कर सकते हैं, इसलिए इन सभी Attributes को विस्‍तार से समझना व याद रखना जरूरी नहीं है। हालांकि जहां भी जरूरत होगी, Special Attributes के बारे में हम विस्‍तार से चर्चा करेंगे।

Android in Hindi - BccFalna.comये Article इस वेबसाईट पर Selling हेतु उपलब्‍ध EBook Android in Hindi से लिया गया है। इसलिए यदि ये Article आपके लिए उपयोगी है, तो निश्चित रूप से ये EBook भी आपके लिए काफी उपयोगी साबित होगी।

Android in Hindi | Page: 628 | Format: PDF

BUY NOW GET DEMO REVIEWS