पिछले Chapter तक हमने Android Development से सम्बंधित बहुत सारे Basic Concepts को विस्तार से समझने की कोशिश की और कुछ UI Elements यानी User Interface Controls को use करते हुए एक Android App के विभिन्न हिस्सों व Lifecycle के बारे में काफी गहराई से Discuss किया।
इस Chapter में भी हम Android Development से सम्बंधित कुछ और बातों को जानेंगे लेकिन इस Chapter में हमारा मूल उद्देश्य एक Android App के User Interface के Develop करने से सम्बंधित होगा क्योंकि ज्यादातर Android App में किसी न किसी तरह का कोई न कोई User Interface जरूर होता है और Android Apps में UI Controls व उनसे सम्बंधित Event Handling का पूरा एक Specify System है, जिसे ठीक से समझे बिना Android App Develop करना सम्भव नहीं है।
Android App के लिए UI Develop करना कुछ हद तक काफी आसान है क्योंकि Android Framework वर्तमान समय तक का सबसे Modern Framework है, जिसे Developers के लिए सरलतम बनाए रखने की कोशिश की गई है, ताकि कम से कम समय में Best Possible Android App Develop किया जा सके।
Android App का UI Develop करना आसान इसलिए भी है क्योंकि Android SDK द्वारा Android App के लिए बहुत कम UI Controls Provide किए गए हैं और कम UI Controls इसलिए Provide किए गए हैं, क्योंकि सामान्यत: Android Apps Mobile जैसी छोटी Screen वाली Devices के लिए ही बनाया जाता है और इन छोटी Screen की Devices के लिए बहुत ज्यादा जटिल प्रकार के UI Controls की जरूरत नहीं होती। इसीलिए कोई भी Android Developer, Android SDK द्वारा Provide किए जाने वाले लगभग सभी UI Controls व उनके Features को बड़ी ही आसानी से याद रख सकता है।
साथ ही Android UI इस बात का भी ध्यान रखता है कि किसी Specific जरूरत को पूरा करने के लिए Developer को कम से कम Codes लिखने पड़ें। बल्कि UI से सम्बंधित ज्यादातर Complexities को Android System स्वयं ही अपने स्तर पर Handle कर लेता है, ताकि App Developer Coding के स्थान पर अपने Android App से सम्बंधित उन Functionalities पर ज्यादा Concentrate कर सके, जिसे वह उस Android App से Achieve करना चाहता है।
UI Class Hierarchy
किसी भी अन्य SDK की तरह ही Android SDK भी Button, TextBox, EditBox आदि GUI Controls Provide करता है लेकिन इन सभी तरह के Controls को Android SDK दो मुख्य Classes android.view.View व android.view.ViewGroup के माध्यम से Provide करता है।
Android SDK में View व ViewGroup ये दोनों ही Classes, Android App के UI से सम्बंधित Controls Provide करने वाली मुख्य Core Classes हैं। View Class एक General Purpose View Object को Represent करता है, इसीलिए पिछले Chapter में हमने setContentView() Method में निम्नानुसार Codes के माध्यम से एक TextView Control के Reference को Parameter के रूप में Pass करके उसे Activity से Associated First Screen के रूप में Display कर दिया था:
TextView tvWithoutView = new TextView(this);
this.setContentView(tvWithoutView);
tvWithoutView.setText(“Aha! No need of activity_main.xml”);
ऐसा करना इसीलिए सम्भव हो सकता है क्योंकि Java के Inheritance Concepts के अनुसार कोई भी Base Class न केवल उसी Base Class के Objects का बल्कि उसकी किसी भी Derived Class के Object का भी Reference Hold कर सकता है और setContentView() Method को Parameter के रूप में हमेंशा एक View Class के Object Reference की जरूरत होती है, इसीलिए जब उपरोक्त Code में हम एक TextView Control के Object को setContentView() Method में Parameter की तरह Pass करते हैं, तो बिना किसी परेशानी के ये Method TextView Control के Text को Output में Display कर देता है क्योंकि Android SDK में प्रत्येक UI Control View Class से ही Derive होता है और TextView Control भी उसी View Class से Derived UI Control है।
वास्तव में android.view.View Class स्वयं java.lang.Object Class से Derived है, इसलिए इसमें java.lang.Object Class के सभी Members (Data Members and Member Functions) Inherited हैं, जबकि android.view.ViewGroup Class स्वयं android.view.View Class से Derived है, इसलिए इसमें android.view.View Class के सभी Members Inherited हैं।
अत: किसी भी Android App के लिए View Class वास्तव में Highest Level की Generic Class है, जबकि ViewGroup Class एक Specialized Class है और Specialized Class हमेंशा ज्यादा Special Task Perform करते हैं।
View Objects को View Class द्वारा Create किया जाता है। जबकि इसी View Class को Inherit करके हम अन्य Lower Level या अधिक Customized Specialized Classes Create भी कर सकते हैं और ViewGroup Class इसी तरह की एक Specialized Class है, जो कि अपनी Super Class View की Characteristics को Inherit करती है।
इसलिए किसी भी Android App के Basic Screen Layout को View Class द्वारा ही Control किया जाता है, जो कि उन ज्यादा Complex Data Structures को Hold करता है जिनके द्वारा किसी Device के किसी Specific Screen Size के लिए View का Content व Layout Parameter Represent होता है।
यानी किसी Specific Device के Specific Screen Size पर हमारा Android App किस तरह से Display होगा, इस बात को पूरी तरह से View Class ही Control करता है और हमारी जानकारी के बिना स्वयं ही Automatically Control करता है जिसके लिए एक App Developer के रूप में हमें कुछ भी नहीं करना होता।
विभिन्न UI Controls को Android SDK की View Class द्वारा ही Extend किया गया है और ViewGroup भी उन्हीं में से एक है, इसीलिए हम setContentView() Method में किसी भी View यानी Layout से सम्बंधित XML Resource File जैसे कि activity_main.xml को भी R.layout.activity_main Statement के माध्यम से Parameter के रूप में Specify कर सकते हैं, जो कि हमारी Activity से सम्बंधित Layout View Hierarchy को Represent करता है।
क्योंकि जब Android App Run होता है, तब प्रत्येक XML Resource व उनमें Specified XML Markups Internally Java Codes में ही Convert होते हैं और फिर उन Parsed Java Codes को ही Android Platform द्वारा Execute किया जाता है।
यानी एक Android App जब Run किया जाता है, तो उसकी सभी XML Files के XML Codes की XML Specification के आधार पर Parsing होती है जिसके परिणामस्वरूप एक Java Class File Create करते हैं और इसी Java Class File को Android Platform द्वारा Run किया जाता है। इसीलिए हम अपने Android App के Layout व User Interface से सम्बंधित जो भी काम XML File के XML Codes द्वारा करते हैं, उन्हीं सब कामों को सीधे ही Java Codes के माध्यम से भी कर सकते हैं।
हालांकि ViewGroup स्वयं View Class से Extended हैं, लेकिन इससे भी कई अन्य Classes Derived हैं, जिन्हें Layouts के नाम से जाना जाता है। यानी ViewGroup Class वास्तव में किसी Android App के विभिन्न प्रकार के Layouts को Manage करने से सम्बंधित विभिन्न Layout Classes की Base Class है।
यदि आपने कभी जावा के AWT अथवा SWING Package का प्रयोग करते हुए GUI Create किया है, तो आप आसानी से समझ सकते हैं कि AWT/SWING की तरह ही Android SDK भी UI Layouts के लिए Container Concept को Follow करता है और ViewGroup एक प्रकार का Container होता है, जो अन्य UI Controls या Containers को Hold करने का काम करता है। इसीलिए किसी भी Android App के विभिन्न UI Controls को हमेंशा किसी न किसी Container में ही Hold किया जाता है और पूरा Layout हमेंशा उस Container के अन्दर Define करने के बाद अन्त में उस Container को ही Output में Display कर दिया जाता है।
यदि हम इसी बात को हमारे Android App के संदर्भ में समझें, तो हमारे Android App से सम्बंधित activity_main.xml File हमारी Activity के Visual User Interface Controls का Container होता है जिसमें अपने Android App के विभिन्न UI Controls की Positioning, Sizing व Orientation आदि को Specify किया जाता है और setContentView(R.layout.activity_main) Method द्वारा इसी Layout File को Memory में Load किया जाता है, जो कि Activity से सम्बंधित Output Screen के रूप में Display होता है।
किसी Android App के लिए UI Create करने के लिए हम कई तरीके Use कर सकते हैं। हम पूरा UI Java Codes के माध्यम से सीधे ही Activity File में Create कर सकते हैं। हम UI को XML File के रूप में भी Define कर सकते हैं और हम इन दोनों तरीकों को आपस में Mix भी कर सकते हैं। यानी UI को XML File के माध्यम से Define कर सकते हैं और फिर जरूरत के अनुसार उन्हें Java Codes के माध्यम से Change, Modify या Update भी कर सकते हैं।
लेकिन इससे पहले कि हम आगे बढ़ें, View, Widget, Control, Container व Layout जैसे कुछ Terms को ठीक से समझ लेना जरूरी है, ताकि आगे आने वाले Chapters में जब इन्हें Use किया जाए, तो किसी तरह का Confusion न रहे।
View, Widget and Control
ये तीनों ही किसी न किसी UI Element को Represent करते हैं। Button, TextView, List, Grid, Window, Dialog Box आदि सभी इसी के उदाहरण हैं और सरलतम शब्दों में समझें तो इन तीनों को ही एक दूसरे के लिए Interchangeably Use कर सकते हैं।
यानी हम चाहे View कहें, Widget कहें या Control कहें, तीनों का मतलब एक ही है कि हम किसी User Interface Element के संदर्भ में बात कर रहे हैं और ये सभी View Class से Derived किसी Class के Objects ही होते हैं।
Container
जैसा कि हमने पहले भी बताया कि ये भी एक तरह का View ही होता है, लेकिन ये एक ऐसा View होता है, जो किसी अन्य UI View या Container View को Hold यानी अपने अन्दर Contain करने का काम करता है, इसीलिए इसे Container View भी कहा जाता है। उदाहरण के लिए Grid View एक प्रकार का Container ही है जो कि Cells को Contained रखता है।
Layout
ये अन्य Containers व Views का एक Visual Arrangement होता है और अन्य Layouts को Contain कर सकता है। इसके विषय में हम आगे विस्तार से जानेंगे क्योंकि किसी भी Android App के GUI का ये एक सबसे महत्वूपर्ण Part होता है।
सामान्यत: ViewGroup Class से Derived सभी View Classes एक प्रकार के Container को ही Represent करते हैं और Layout View भी एक प्रकार का Container ही होते हैं। इसलिए ViewGroup Class से Derived किसी भी Class के Object को हम Container कह सकते हैं।
ये Article इस वेबसाईट पर Selling हेतु उपलब्ध EBook Android in Hindi से लिया गया है। इसलिए यदि ये Article आपके लिए उपयोगी है, तो निश्चित रूप से ये EBook भी आपके लिए काफी उपयोगी साबित होगी।
Android in Hindi | Page: 628 | Format: PDF