12 February 2013

Android विकास के साथ शुरू हो रही है – भाग 2

IOS ट्यूटोरियल टीम के सदस्य अली Hafizji, एक IOS और Android डेवलपर भारत में रह रहे एक ब्लॉग पोस्ट है.

एक बोली स्टीव नौकरियाँ ने कहा कभी नहीं :-)
इस ट्यूटोरियल Android विकास, इस साइट की पहली चढ़ाई के साथ एक मंच गैर एप्पल के लिए विकास में शुरू हो रही है की एक निरंतरता है! इसे बाहर की जाँच अगर आप पहले से ही नहीं है.
यदि आप आखिरी बार के साथ पीछा कर रहे थे, तो आप एक “नमस्ते विश्व” Android एप्लिकेशन बनाया है, यह एक डिवाइस या emulator पर काम कर रहे हैं, और फिर एक साधारण मास्टर / विस्तार QuoteReader app बुलाया है कि हमारे नायक द्वारा उद्धरण की एक सूची प्रदर्शित करता है, स्टीव नौकरियाँ .
इस ट्यूटोरियल तुम QuoteReader परियोजना के लिए कुछ प्रमुख सुधार के माध्यम से लेता है, जिस तरह से अपने साथ कुछ महत्वपूर्ण Android अवधारणाओं समझा. अंत तक, आप निम्नलिखित सीखा है हूँ:
लेआउट Android में कैसे काम करते हैं.
सबसे आम XML लेआउट विशेषताओं और उनके उपयोग करता है.
कैसे QuoteReader को संशोधित करने के लिए अनुमति बोली संपादन, के रूप में के रूप में अच्छी तरह से पूर्ण आकार छवियों.
कैसे उपयोगकर्ता प्रत्येक बोली दर करने के लिए अनुमति देने के लिए.
कैसे जोड़ सकते हैं और उद्धरण हटा दें.
प्रारंभ करना: समझौता लेआउट
पहले मैं Android के विकास के लिए एक महत्वपूर्ण अवधारणा परिचय है कि हम एक भाग में कवर नहीं किया जा रहा हूँ.
लेआउट Android स्क्रीन है कि Android उपकरणों पर आने की विविधता के लिए समाधान कर रहे हैं. ये स्क्रीन अलग पिक्सेल घनत्व, आयाम, और पहलू अनुपात हो सकता है.
हाँ, यह ठीक है – iOS डेवलपर्स यह एक बहुत आसान करने के लिए बस और iPad iPhone स्क्रीन आयामों के साथ के बारे में चिंता करने की ज़रूरत है! :]
ठेठ Android उपकरणों को भी स्क्रीन अभिविन्यास (चित्र या परिदृश्य) बदल रहा है जबकि आवेदन चल रहे हैं की अनुमति देते हैं, तो लेआउट बुनियादी सुविधाओं के लिए मक्खी पर प्रतिक्रिया करने में सक्षम होने की जरूरत है. लेआउट डेवलपर्स विचारों की शारीरिक संबंध के रूप में वे स्क्रीन पर तैयार कर रहे हैं व्यक्त करने के लिए एक रास्ता देने का इरादा कर रहे हैं.
Android में लेआउट एक पेड़ के रूप में एक एकल रूट और विचारों का एक पदानुक्रम के साथ कर रहे हैं. पिछले ट्यूटोरियल में XML लेआउट फ़ाइलों के किसी भी वापस देखो, और आप देखेंगे कि XML टैग पेड़ की जड़ के रूप में एक स्क्रीन लेआउट के साथ इस तरह के एक पदानुक्रम बनाने के लिए,. पेड़ में प्रत्येक दृश्य देखा गया यह होता है और मानना है कि यह होता है की बच्चे के माता पिता कहा जाता है.
जब लेआउट एंड्रॉयड (XML से वास्तविक स्मृति दृश्य वस्तुओं परिवर्तित कह का एक अच्छा तरीका) द्वारा फुलाया जाता है, यह दो चरणों के माध्यम से चला जाता है:
चरण उपाय: इस चरण के दौरान, Android लेआउट पेड़, ऊपर से नीचे तक और प्रत्येक दृश्य traverses ऊर्ध्वाधर ऊंचाई और क्षैतिज चौड़ाई ही अंतिम प्रदर्शन में प्रदर्शित करने की जरूरत की राशि की घोषणा की.
लेआउट चरण: इस चरण में भी है एक ऊपर से नीचे चंक्रमण, लेकिन अब प्रत्येक दृश्य आकार में अपने बच्चों के हर उपाय पास के दौरान यह द्वारा घोषित पदों.
एक बार दोनों चरणों को पूरा कर रहे हैं, विचार स्क्रीन पर तैयार कर रहे हैं.
चिंता मत करो अगर आप अभी भी थोड़ा उलझन में कैसे व्यवहार में यह काम करता है – आप जल्द ही देखेंगे! :]
आमतौर पर इस्तेमाल किया XML गुण
सभी XML विशेषताओं का सही उपयोग सीखने के लिए पहली बार में एक थोड़ा कठिन लग सकता है. यह निश्चित रूप से कुछ करने के लिए लेआउट मापदंडों के भारतीय नौसेना पोत और बहिष्कार गुरु के लिए समय लगता है. इस खंड में, मैं सबसे व्यापक रूप से इस्तेमाल किया लेआउट मानकों और उनके सही उपयोग के कुछ चर्चा करेंगे.
सबसे पहले, लेआउट गुण है कि साथ “layout_” शुरू करने के लिए एक दृश्य LayoutParams, जो देखा गया द्वारा इस्तेमाल के लिए अपने माता पिता को बता वे कैसे होना चाहिए के साथ क्या करना है … हां, बाहर रखी. :]
दूसरे शब्दों में, इन विशेषताओं लेआउट मुद्रास्फीति के उपाय चरण के दौरान देखने के आकार निर्धारित करने के लिए किया जाता है.
इन विशेषताओं के सबसे सामान्य रूप से प्रयुक्त layout_width और layout_height हैं, क्योंकि वे प्रत्येक दृश्य के आकार को परिभाषित करने के लिए उपयोग किया जाता है. इन दो विशेषताओं के लिए सबसे अधिक इस्तेमाल मान रहे हैं:
match_parent और fill_parent: ये सेट देखने के आयाम के रूप में माता पिता के रूप में बड़ा हो. हम main.xml और quote_detail.xml में यह पहले से ही इस्तेमाल किया.
wrap_content: इस बस के लिए अपनी सामग्री को फिट करने के लिए पर्याप्त आयाम सेट. हम quote_detail.xml में यह पहले से ही इस्तेमाल किया.
यह समझने के लिए सबसे आसान तरीका नेत्रहीन है. तो यहाँ fill_parent रूप layout_width सेट के साथ एक बटन के एक उदाहरण है:

और यहाँ के रूप में layout_width wrap_content सेट के साथ एक बटन के एक उदाहरण है:

अगला, layout_gravity और गुरुत्वाकर्षण विशेषताओं पर एक नज़र है. ये दोनों काफी भ्रमित शुरू हो सकता है. बस याद है कि “लेआउट” के साथ एक शुरुआत करने के लिए माता – पिता में देखने की स्थिति के साथ क्या करना है. इसलिए layout_gravity परिभाषित करता है कैसे एक दृश्य के माता पिता के दृश्य में तैनात किया जाएगा, जबकि गुरुत्वाकर्षण बस को परिभाषित करता है कैसे देखने की सामग्री के भीतर ही रखा जाएगा.
नीचे दी गई छवि layout_gravity center_horizontal करने के लिए सेट किया गया है:

इस छवि के नीचे गुरुत्वाकर्षण बाएँ निर्धारित कर दिया गया है:

अगले layout_weight है. जब आप किसी भी विचार है कि आप इस ट्यूटोरियल में बना देंगे में इस विशेषता का उपयोग नहीं कर जाएगा, तो आप इसके बारे में पता होना चाहिए. यह पैरामीटर केवल LinearLayouts के साथ प्रयोग किया जाता है और यह आप बच्चे के विचारों के महत्व को प्राथमिकता देता है.
उदाहरण के लिए, यदि आप एक ऊर्ध्वाधर LinearLayout में कई विचार हैं, तो आप को परिभाषित कर सकते हैं कैसे विचारों के प्रत्येक अतिरिक्त अंतरिक्ष ले इतना है कि पूरे स्क्रीन भर जाता है. यह वास्तव में उपयोगी है. इसका मतलब यह है कि आप प्रत्येक बच्चे के लिए निश्चित आकार को परिभाषित करने की ज़रूरत नहीं है – बजाय, Android प्रणाली आप के लिए सब कुछ कर रहे है.
इस छवि के नीचे तीन बटन एक ऊर्ध्वाधर LinearLayout में रखा है, लेकिन कोई भी एक वजन लेआउट सौंपा है:

जबकि अगले छवि में, 1, 2 और 3 के तीन बटन वजन क्रमश दिए गए:

डेटा स्रोत बदलने
इससे पहले कि आप अपने लेआउट के नए ज्ञान का उपयोग करने के लिए QuoteReader app में सुधार करने के लिए करते हैं, तो आप कुछ वास्तु परिवर्तन लिए QuoteReader के लिए बनाने की जरूरत है.
सबसे पहले, आप के लिए एक वर्ग है कि अपनी सूची में प्रत्येक और हर आइटम के डेटा शामिल बनाने की जरूरत है. अपनी वर्तमान स्थिति में, QuoteReader थंबनेल, उद्धरण और पूर्ण आकार छवियों के लिए तीन अलग अलग ArrayLists रखता है. इस दृष्टिकोण के साथ समस्या यह है कि वस्तुओं के किसी भी के बीच कोई संबंध है. यही है, अगर मैं थंबनेल ArrayList से थंबनेल निकालने, यह उद्धरण ArrayList से इसी बोली नहीं निकाल देंगे.
इसे ठीक करने के लिए, पहले अपने डेटा स्रोत को बनाए रखने के लिए एक अलग पैकेज बनाते हैं. “फ़ोल्डर पर राइट क्लिक करें और नई -> पैकेज का चयन करें. पैकेज “com.tutorial.quotereader.datasource नाम.” इस पैकेज में कक्षा डेटास्रोत खींचें, और ठीक क्लिक जब पॉपअप प्रकट होता है.
अब अपने मद के लिए एक नया वर्ग बनाने. नए पैकेज पर राइट क्लिक करें और नई -> कक्षा का चयन करें. वर्ग DataSourceItem नाम, और समाप्त क्लिक करें. इस वर्ग थंबनेल (बिटमैप), पूर्ण आकार छवि (बिटमैप), (स्ट्रिंग) बोली और है कि बोली की रेटिंग (फ्लोट मूल्य) के आयोजन के लिए जिम्मेदार होगा.

वर्ग के लिए निम्नलिखित निजी चर और getters / setters जोड़ें:
निजी बिटमैप mThumbnail;
निजी बिटमैप mHdImage;
निजी स्ट्रिंग mQuote;
निजी नाव mRating;

सार्वजनिक बिटमैप (getmThumbnail) {
mThumbnail वापसी;
}

सार्वजनिक बिटमैप (getmHdImage) {
mHdImage वापसी;
}

सार्वजनिक स्ट्रिंग (getmQuote) {
mQuote वापसी;
}

पब्लिक फ्लोट (getmRating) {
mRating वापसी;
}

सार्वजनिक शून्य setmRating (mRating फ्लोट) {
= mRating this.mRating;
}

सार्वजनिक शून्य setmHdImage बिटमैप (mHdImage) {
this.mHdImage = mHdImage;
}

सार्वजनिक शून्य setmQuote (String mQuote) {
this.mQuote = mQuote;
}
आप बिटमैप वर्ग के लिए एक लापता आयात के लिए कुछ त्रुटियों को मिल सकता है – इस संकल्प, स्रोत आयात व्यवस्थित और यह स्वचालित रूप से आवश्यक आयात जोड़ देगा. यदि आप कभी भी इस ट्यूटोरियल के बाकी हिस्सों में आयात लापता हो, तो आप इस तकनीक का उपयोग कर सकते हैं. काम, है ना?
इसके बाद, दो भवन निर्माताओं जोड़ें. नीचे दिए गए कोड काफी आत्म व्याख्यात्मक होना चाहिए:
सार्वजनिक (DataSourceItem) {
mQuote = “नई समीक्षा जोड़ा जाता है”;
}

सार्वजनिक DataSourceItem (बिटमैप थम्बनेल, बिटमैप hdImage, स्ट्रिंग बोली) {
अगर (थंबनेल == बातिल | hdImage == बातिल | | | बोली == रिक्त)
फेंक नई IllegalArgumentException ();
mThumbnail = थंबनेल;
mHdImage = hdImage;
= बोली mQuote;

2.5f = mRating;
}
अब कि आप अपने मद के लिए तैयार है, तो आप डेटास्रोत वर्ग को संशोधित करने की जरूरत है ताकि तीन ArrayLists होने के बजाय, आप बस एक है, और सरणी सूची में प्रत्येक वस्तु प्रकार DataSourceItem की है.
ओपन DataSource.java और निम्नलिखित के साथ सामग्री की जगह:
com.tutorial.quotereader.datasource पैकेज;

आयात java.util.ArrayList;

android.content.Context आयात;
android.graphics.drawable.BitmapDrawable आयात;

आयात com.razeware.QuoteReader.R;

सार्वजनिक वर्ग डेटास्रोत {

निजी प्रसंग mContext;
निजी ArrayList <DataSourceItem> mItemsData;

सार्वजनिक प्रसंग (संदर्भ) डेटास्रोत {
this.mContext = संदर्भ;
mItemsData = new ArrayList (<DataSourceItem>);
(setupItemsData);
}

सार्वजनिक ArrayList <DataSourceItem> (getmItemsData) {
mItemsData वापसी;
}

निजी शून्य (setupItemsData) {
(mItemsData.add नया
((BitmapDrawable) (mContext.getResources) getDrawable (R.drawable.steve_hd_1)) (getBitmap), mContext.getResources () (R.string.quote_1) getString));
(mItemsData.add नया
((BitmapDrawable) (mContext.getResources) getDrawable (R.drawable.steve_hd_2)) (getBitmap), mContext.getResources () (R.string.quote_2) getString));
(mItemsData.add नया
((BitmapDrawable) (mContext.getResources) getDrawable (R.drawable.steve_hd_3)) (getBitmap), mContext.getResources () (R.string.quote_3) getString));
(mItemsData.add नया
((BitmapDrawable) (mContext.getResources) getDrawable (R.drawable.steve_hd_4)) (getBitmap), mContext.getResources () (R.string.quote_4) getString));
(mItemsData.add नया
((BitmapDrawable) (mContext.getResources) getDrawable (R.drawable.steve_hd_5)) (getBitmap), mContext.getResources () (R.string.quote_5) getString));
(mItemsData.add नया
((BitmapDrawable) (mContext.getResources) getDrawable (R.drawable.steve_hd_6)) (getBitmap), mContext.getResources () (R.string.quote_6) getString));
(mItemsData.add नया
((BitmapDrawable) (mContext.getResources) getDrawable (R.drawable.steve_hd_7)) (getBitmap), mContext.getResources () (R.string.quote_7) getString));
(mItemsData.add नया
((BitmapDrawable) (mContext.getResources) getDrawable (R.drawable.steve_hd_8)) (getBitmap), mContext.getResources () (R.string.quote_8) getString));
(mItemsData.add नया
((BitmapDrawable) (mContext.getResources) getDrawable (R.drawable.steve_hd_9)) (getBitmap), mContext.getResources () (R.string.quote_9) getString));
(mItemsData.add नया
((BitmapDrawable) (mContext.getResources) getDrawable (R.drawable.apple_hd).) (GetBitmap), mContext.getResources () (R.string.quote_10) getString)).
}

सार्वजनिक int (getDataSourceLength) {
(mItemsData.size);
}

}
अब आप को बदलने के लिए डेटा मॉडल विभिन्न गतिविधियों भर में नियंत्रित किया जाता है के लिए जा रहे हैं. पहले ट्यूटोरियल में, आप प्रत्येक गतिविधि में नए डेटास्रोत वस्तुओं का निर्माण करके ऐसा किया. यह दृष्टिकोण किसी भी अब काम नहीं, क्योंकि आप डेटा को संशोधित करने के लिए जा रहे हैं और आप यह सभी गतिविधियों भर में एक ही होना चाहता हूँ. ऐसा करने के लिए, आप सिंगलटन डिजाइन पैटर्न का उपयोग करेंगे.
DataSource.java लिए निम्नलिखित जोड़ें:
निजी स्थैतिक डेटास्रोत mDataSource;
सार्वजनिक स्थैतिक डेटास्रोत getDataSourceInstance (संदर्भ संदर्भ) {
अगर (== बातिल mDataSource)
= नई डेटास्रोत mDataSource (संदर्भ);
mDataSource वापसी;
}
आगे जा रहे हैं, आप केवल इस स्थैतिक विधि का उपयोग करने के लिए डेटा स्रोत के लिए एक संदर्भ मिल जाएगा.
उद्धरण संपादन
जब यह संपादन QuoteReader में एक बोली के लिए आता है, वहाँ दो कदम हैं. पहली बोली के वास्तविक पाठ बदल रहा है. 2 पूर्ण आकार बोली के ऊपर प्रदर्शित छवि बदल रही है.
चरण 1: पाठ संपादन
और सबसे पहले, एक बोली को संपादित करने के लिए आप EditText है, जो केवल textview के एक संपादन संस्करण का उपयोग करने की आवश्यकता है. EditText, 1 खुले जोड़कर लेआउट quote_details.xml का उपयोग करें और EditText textview को बदलने के.
हम भी मापदंडों में से कुछ के लिए कुछ tweaks बना देंगे और एक LinearLayout लेआउट बदल. फ़ाइल को संशोधित तो अंतिम लेआउट इस तरह दिखता है:
<XML संस्करण = “1.0″ कूटबन्धन = “utf-8″?>
<Scrollview xmlns: android = “http://schemas.android.com/apk/res/android”
android: layout_width = “fill_parent”
android: layout_height = “fill_parent”>
<LinearLayout
android: layout_width = “fill_parent”
android: layout_height = “wrap_content”
android: अभिविन्यास = “ऊर्ध्वाधर”>
<ImageView
android: id = “@ + विस्तार / छवि”
android: layout_width = “fill_parent”
android: layout_height = “350dip”
android: layout_marginLeft / = “5dip”>
<EditText
android: id = “@ + विस्तार / बोली”
android: layout_width = “fill_parent”
android: layout_height = “wrap_content”
android: inputType = “पाठ”
android: textSize = “24dip”
/>
<LinearLayout />
<Scrollview />
ठीक है, यह बाहर का परीक्षण करने के लिए समय! पहला QuoteDetail.java के लिए कुछ परिवर्तन करना:
/ / Textview से EditText बदलें mQuote
निजी EditText mQuote;

/ / बनाने के चर mDataSource और जोड़ने के बजाय इस लाइन हटाएँ
निजी DataSourceItem mItem;

/ / एक EditText परिवर्तन mQuote के कलाकारों को
mQuote = (EditText) findViewById (R.detail.quote);

/ / इस के साथ imageView और भाव की स्थापना लाइनों बदलें
mItem = DataSource.getDataSourceInstance (यह) (getmItemsData) (MPOSITION).
mImageView.setImageBitmap (mItem.getmHdImage ());
mQuote.setText (mItem.getmQuote ());
और QuoteReaderActivity.java में निम्न परिवर्तन:
/ / QuoteAdapter निर्माता mDataSource बनाने लाइन बदलें
mDataSource = DataSource.getDataSourceInstance (mContext);

/ / बदलें थंबनेल और getView में बोली की स्थापना लाइनों
थंबनेल = (imageView) convertView.findViewById (R.list.thumb);
thumbnail.setImageBitmap (. mDataSource.getmItemsData () (स्थिति) getmThumbnail ());
बोली = convertView.findViewById (textview) (R.list.text);
quote.setText (. mDataSource.getmItemsData () (स्थिति) getmQuote ());
अब संकलन और कार्यक्रम चलाते हैं. आप देखेंगे कि जब आप विस्तार पेज दर्ज करते हैं, तो आप एक बोली के लिए पाठ दर्ज कीबोर्ड के साथ प्रस्तुत कर रहे हैं. आप जो कुछ भी आप की तरह टाइप कर सकते हैं, लेकिन अगर आप QuoteReader गतिविधि (आपके डिवाइस पर वापस बटन दोहन करके) पर वापस जाएँ, आप अपने परिवर्तनों को नोटिस किया था प्रभाव वास्तव में नहीं ले जाऊँगा.
परिवर्तन को स्थायी बनाने के लिए, आप डेटा स्रोत में प्रविष्टि को संशोधित करने की जरूरत है. ऐसा करने के लिए आप एक श्रोता बनाने के लिए एक कॉलबैक के रूप में जल्द ही के रूप में उपयोगकर्ता पाठ संपादन समाप्त हो गया है देने की जरूरत है. एक बार जब आप जानते हैं कि उपयोगकर्ता संपादन समाप्त हो गया है, तो आप डेटा स्रोत के संबंधित मद में बोली बदल सकते हैं.
QuoteDetail.java onCreate विधि के अंत में निम्नलिखित लाइनों जोड़ें:
mQuote.addTextChangedListener (नया (TextWatcher) {

@ ओवरराइड
सार्वजनिक शून्य onTextChanged (CharSequence s, int शुरू, int पहले, int गिनती) {
mItem.setmQuote ((s.toString));
}

@ ओवरराइड
सार्वजनिक शून्य beforeTextChanged (CharSequence एस, int शुरू, int गिनती,
बाद int) {

}

@ ओवरराइड
सार्वजनिक afterTextChanged शून्य (संपादन ओं) {

}
});
सूचना EditText के लिए TextChangedListener के अलावा. यह श्रोता तीन callbacks देता है, लेकिन सबसे महत्वपूर्ण onTextChanged है, जो जैसे ही उपयोगकर्ता के रूप में बोली संपादन खत्म निकाल दिया है.
निर्माण और परियोजना को चलाने के. एक बोली का संपादन करने का प्रयास करें. अब तुम नोटिस हूँ कि उद्धरण सूची अद्यतन नहीं है. यही है, आप विस्तार पृष्ठ से एक बोली को संपादित करने के लिए, कर सकते हैं और संपादन वहाँ संरक्षित किया जाएगा, लेकिन जब आप उद्धरण की सूची पर लौटने आप केवल मूल, अपरिवर्तित उद्धरण के देखेंगे.
समस्या यह है कि सूची अनुकूलक का एहसास नहीं है डेटा स्रोत बदल गया है. तो आप क्या करने की जरूरत है नई डेटा सेट और सूची दृश्य ताजा हो जाएगा के बारे में सूची एडाप्टर बताओ.
इस ऐड करने के लिए, निम्नलिखित की तरह QuoteReaderActivity.java में onResume विधि को लागू करने के लिए:
@ ओवरराइड
संरक्षित शून्य (onResume) {
(super.onResume);
अगर (mListView = बातिल) {
QuoteAdapter अनुकूलक = (QuoteAdapter) (mListView.getAdapter);
(adapter.notifyDataSetChanged);
}
}
निर्माण और परियोजना को चलाने के. अब सब कुछ सही ढंग से काम करना चाहिए!

चरण 2: पूर्ण आकार संपादन छवियों
विवरण पृष्ठ में उपयोगकर्ता के लिए दिखाई छवि को संपादित करने के लिए, आप उपयोगकर्ता गैलरी app करने के लिए नेविगेट करने के लिए अनुमति देने के लिए जा रहे हैं, एक छवि का चयन करें और दिखाया एक के स्थान में है कि छवि का उपयोग करें. यही कारण है कि आप DataSourceItem वर्ग में के बजाय बिटमैप संसाधन आईडी का उपयोग कर रहे हैं.
पहले एक क्लिक श्रोता सेट imageview पर क्लिक करें घटनाओं के लिए सुनने के.
QuoteDetail.java में निम्न परिवर्तन करें:
निम्नलिखित लाइनों जोड़ें onCreate विधि QuoteDetail वर्ग:
/ / नए निजी निरंतर चर जोड़ें
निजी स्थैतिक अंतिम int SELECT_PHOTO = 100;

/ / OnCreate के अंत में जोड़ें
mImageView.setOnClickListener (नया (View.OnClickListener) {

@ ओवरराइड
सार्वजनिक शून्य onClick (मानचित्र v) {
आशय photoPickerIntent = new Intent (Intent.ACTION_PICK);
photoPickerIntent.setType (“छवि / *”);
startActivityForResult (photoPickerIntent, SELECT_PHOTO);
}
});
गैलरी एप्लिकेशन लॉन्च करें, आप पहली बार बाहर की एक मंशा भेज. इरादे बनाने के “ACTION_PICK” उपयोग पर ध्यान दें. इस गैलरी app ऐसी है कि यह उपयोगकर्ता एक छवि लेने के लिए अनुमति देगा का शुभारंभ करेंगे. इस मामले में सिर्फ एक छवि: आशय का प्रकार भी “छवि / *” डेटा के प्रकार को निर्दिष्ट करने के लिए लौटने के लिए सेट कर दिया जाता है.
नोट: यदि उपयोगकर्ता किसी अन्य अनुप्रयोग कि ACTION_PICK के इरादे को संभालने और एक छवि लौट सकते हैं, Android एक चयन मेनू प्रदर्शित कि तो उपयोगकर्ता का चयन से जो app का उपयोग करने के लिए कर सकते हैं.
एक onActivityResult बुलाया समारोह स्वचालित रूप से कहा जाता है जब उपयोगकर्ता एक छवि उठाता है. आप कि विधि ओवरराइड उपयोगकर्ता छवि प्रदर्शित करने के लिए उठाया पाने की जरूरत है.
तो QuoteDetail.java के लिए निम्नलिखित लाइनें जोड़ने:
@ ओवरराइड
शून्य onActivityResult (int requestCode, int resultCode आशय डेटा) संरक्षित {
(requestCode, resultCode, डेटा) super.onActivityResult;
स्विच (requestCode) {
मामला SELECT_PHOTO:
अगर (resultCode == RESULT_OK) {
उड़ी selectedImage = (data.getData);

try {
InputStream imageStream getContentResolver = () openInputStream (selectedImage).
बिटमैप yourSelectedImage = BitmapFactory.decodeStream (imageStream);
mItem.setmHdImage (yourSelectedImage);
mImageView.setImageBitmap (yourSelectedImage);
} पकड़ (FileNotFoundException e) {
(e.printStackTrace);
}
}
}
}
आशय कि onActivityResult को पारित कर दिया है चयनित छवि के यूआरआइ प्राप्त करने के लिए इस्तेमाल किया जा सकता है. एक यूआरआइ एक अद्वितीय ID कि एक संसाधन की पहचान करने के लिए इस्तेमाल किया जा सकता है. कोड यूआरआइ ऊपर का उपयोग करता है छवि के बिटमैप प्राप्त है, और उस बिटमैप अपनी imageview के स्रोत के रूप में सेट कर दिया जाता है. एक ही बिटमैप भी पूर्ण आकार डेटास्रोत में बोली के लिए इस्तेमाल किया जा छवि के रूप में सेट कर दिया जाता है.
बनाने के लिए और फिर से चलाने के लिए समय! अब आप दोनों पाठ और प्रत्येक बोली की छवि को संपादित करने के लिए सक्षम होना चाहिए.
रेटिंग बार्स जोड़ना
Android एक RatingBar बुलाया दृश्य है, एसडीके द्वारा प्रदान की गई है. अब आप इसे का लाभ लेने के लिए जा रहे हैं.
फ़ाइल quote_detail.xml खोलें और दृश्य जोड़ने RatingBar. numStars पैरामीटर रेटिंग बार द्वारा इस्तेमाल सितारों की कुल संख्या को इंगित करता है. यह 5 से सेट करें.
लेआउट फाइल की सामग्री को नीचे दिखाने.
<XML संस्करण = “1.0″ कूटबन्धन = “utf-8″?>
<Scrollview
xmlns: android = “http://schemas.android.com/apk/res/android”
android: layout_width = “fill_parent”
android: layout_height = “fill_parent”>
<LinearLayout
android: layout_width = “fill_parent”
android: layout_height = “wrap_content”
android: अभिविन्यास = “ऊर्ध्वाधर”>
<ImageView
android: id = “@ + विस्तार / छवि”
android: layout_width = “fill_parent”
android: layout_height = “350dip”
android: layout_marginLeft / = “5dip”>
<RatingBar
android: id = “@ + id / rating_bar”
android: layout_width = “wrap_content”
android: layout_height = “wrap_content”
android: numStars / = “5″>
<EditText
android: id = “@ + विस्तार / बोली”
android: layout_width = “fill_parent”
android: layout_height = “wrap_content”
android: inputType = “पाठ”
android: textSize / = “24dip”>
<LinearLayout />
<Scrollview />
फिर QuoteDetail.java खुला और निम्न परिवर्तन करें:
/ / इस दृश्य के लिए एक नया चर बनाएँ
निजी RatingBar mRatingBar;

/ / OnCreate विधि के अंत के लिए निम्न पंक्तियाँ जोड़ें:
mRatingBar = (RatingBar) findViewById (R.id.rating_bar);
mRatingBar.setRating (() mItem.getmRating);
mRatingBar.setOnRatingBarChangeListener (नया (RatingBar.OnRatingBarChangeListener) {

@ ओवरराइड
सार्वजनिक onRatingChanged शून्य (RatingBar ratingBar, नाव रेटिंग
बूलियन) fromUser {
/ / दर्ज़ा वापस डेटा स्रोत लिखने:]
mItem.setmRating (रेटिंग);
}
});
यहाँ आप आईडी XML फ़ाइल में प्रारंभिक रेटिंग सेट, एक घटना श्रोता सेट जब रेटिंग परिवर्तन का पता लगाने के द्वारा दृश्य मिल जाए, और दृश्य तदनुसार अद्यतन.
निर्माण और चलाने. अब आप प्रत्येक बोली के लिए एक भयानक दिखने रेटिंग बार होना चाहिए!

नया उद्धरण जोड़ना
एक नई बोली जोड़ने के लिए, आप पहली बार के लिए एक विकल्प मेनू बनाने की जरूरत है. एक विकल्प मेनू है उपयोगकर्ता Android में मेनू बटन दबाने के बाद क्या देखता है. सभी बुनियादी गतिविधि कार्यों और नेविगेशन आइटम्स एक विकल्प मेनू में रखा जाना चाहिए.
जब Android प्रणाली पहली बार के लिए एक विकल्प मेनू बनाता है, यह अपनी गतिविधि onCreateOptionsMenu विधि बताते हैं. तो है कि तुम क्या करने के लिए अपने मेनू बनाने को ओवरराइड करने के लिए जा रहे हैं.
QuoteReader गतिविधि खोलें और निम्न परिवर्तन करें:
/ / QuoteReaderActivity के शीर्ष में जोड़ें
निजी स्थैतिक int = 1 CREATE_QUOTE_ID;

/ / QuoteReaderActivity के लिए नई विधि जोड़ें
@ ओवरराइड
सार्वजनिक बुलियन onCreateOptionsMenu (मेनू) {
menu.add (Menu.NONE, CREATE_QUOTE_ID, Menu.NONE, “नई बोली बनाएँ”);
वापसी सच;
}
विधि एक मेनू वस्तु देता है. सूचना है कि आप मेनू वस्तु के लिए एक प्रविष्टि जोड़ रहे हैं. ऐड विधि निम्न तर्क लेता है:
ग्रुप आईडी: समूह पहचानकर्ता है कि इस मद का हिस्सा होना चाहिए. इस प्रयोग के लिए विकल्पों में से एक नंबर एक साथ समूहीकृत. चूंकि आप एक ही है, कोई नहीं का उपयोग करें.
Itemid: अद्वितीय आईडी मेनू में प्रत्येक मद के लिए दिया. आप मान 1 के साथ एक स्थैतिक int चर का उपयोग कर रहे हैं.
आदेश: आइटम के लिए आदेश.
शीर्षक: स्ट्रिंग मेनू आइटम के शीर्षक को दिखाने के लिए इस्तेमाल किया.
निर्माण और चलाने. अब आप एक विकल्प मेनू देखने के लिए जब आप मेनू बटन दबाएँ चाहिए.

अब है कि आप अपने विकल्पों मेनू मिल गया है, तो आप एक घटना है जब उपयोगकर्ता “नया भाव बनाएँ” मेनू मद नल की जरूरत है.
Android प्रणाली onOptionsItemSelected बुलाया कॉलबैक, प्रयोग किया जाता है जब एक मेनू मद टेप है शामिल हैं. यही कारण है कि क्या आप का उपयोग हो जाएगा.
QuoteReader गतिविधि के लिए निम्नलिखित लाइनों जोड़ें:
@ ओवरराइड
सार्वजनिक बुलियन onOptionsItemSelected (MENUITEM आइटम) {
अगर (item.getItemId () CREATE_QUOTE_ID ==) {
/ / डेटा सेट में एक प्रविष्टि
/ / कॉल और डेटा बदल सेट
डेटास्रोत डेटास्रोत = DataSource.getDataSourceInstance (यह);
(dataSource.getmItemsData) (नया (DataSourceItem));
QuoteAdapter अनुकूलक = (QuoteAdapter) (mListView.getAdapter);
(adapter.notifyDataSetChanged);
वापसी सच;
}
super.onOptionsItemSelected वापसी (आइटम);
}
कोड अगर आप बनाया मेनू आइटम उपयोग किया गया है की जाँच करता है, और अगर ऐसा है, तो एक नया भाव बनाता है. एक नई बोली जोड़ने के लिए, आप केवल अपने डेटा स्रोत में एक नई प्रविष्टि बनाने और अनुकूलक कि डेटा सेट बदल गया है बताने की जरूरत है.
बनाएँ और इस परियोजना को चलाने के लिए, और देखने के लिए कि जब आप एक नई बोली बनाने के लिए, एक नई प्रविष्टि डिफ़ॉल्ट मानों के साथ सूची में बनाया है. नोट आप सूची के नीचे नीचे स्क्रॉल नई प्रविष्टियों को देखने के लिए होगा.

हटाया जा रहा है उद्धरण
एक बोली को हटाने के लिए एक संदर्भ मेनू का उपयोग करने के लिए जा रहे हैं. एक संदर्भ मेनू के बारे में सोचो मेनू के रूप में आप देख जब आप किसी भी ऑपरेटिंग सिस्टम पर एक आइटम पर राइट क्लिक करें. मेनू आप देख विकल्प कि बहुत कि एक आइटम के लिए विशिष्ट हैं कि एक संदर्भ मेनू है.
इस मामले में, अपने QuoteReader एक संदर्भ मेनू दिखाई देगा जब उद्धरण सूची में एक विशेष आइटम पर प्रेस के लंबे उपयोगकर्ता. लागू करने के लिए पहला कदम का मानना है कि संदर्भ मेनू दिखाई देगा दर्ज की है. ऐसा करने के लिए, QuoteReader गतिविधि के onCreate विधि कोड की निम्न पंक्ति जोड़ें.
registerForContextMenu (mListView);
अब जब कि अपनी सूची में पंजीकृत है, उपयोगकर्ता सूची में एक आइटम पर लंबे समय प्रेस, जब सिस्टम एक onCreateContextMenu बुलाया कॉलबैक दे देंगे. अब आपको लगता है कि विधि ओवरराइड और कोड जोड़ने के लिए मेनू बनाने.
@ ओवरराइड
सार्वजनिक शून्य onCreateContextMenu (ContextMenu मेनू, दृश्य v
ContextMenuInfo) menuInfo {
(मेनू, v, menuInfo) super.onCreateContextMenu;
menu.setHeaderTitle ((getResources) (R.string.context_menu_title) getString);
}
आपको कोई त्रुटि मिलती क्योंकि हम context_menu_title लिए स्ट्रिंग नहीं जोड़ा है, तो अपने को छोड़कर मान strings.xml फ़ाइल इस जोड़ें:
<string name=”context_menu_title”> मेनू <स्ट्रिंग />
इस समय, जोड़ पद्धति का उपयोग करके मेनू बनाने के बजाय, आप XML का उपयोग करेंगे. तो जोड़कर / लेआउट निर्देशिका में एक नई XML फ़ाइल बनाने और इसे context_menu.xml नाम. यहाँ है कैसे फ़ाइल दिखना चाहिए:
<XML संस्करण = “1.0″ कूटबन्धन = “

टैग:, ,

Android के विकास के साथ शुरू हो रही

रे से नोट: हालांकि इस साइट IOS के विकास पर ध्यान केंद्रित किया गया है अब तक, मैंने सोचा था कि तुम लोग Android के विकास के बारे में एक बिट के रूप में अच्छी तरह से सीखने का आनंद सकता है. तो iOS ट्यूटोरियल टीम के सदस्य अली Hafizji एक साथ डाल दिया है Android विकास पर शुरुआती के लिए इस महान ट्यूटोरियल!
मैं पहले Android के लिए प्रोग्राम, कभी नहीं था, लेकिन अपने आप को एक उपकरण खरीदा है और मेरे मंच के लिए पहला परिचय के रूप में इस ट्यूटोरियल का इस्तेमाल किया. अब जब कि मैं एक साधारण app अपने डिवाइस पर चल रहा है मैं उत्साहित और अधिक जानने के लिए उत्सुक हूँ, और मुझे आशा है कि तुम लोगों को उसी तरह महसूस होगा! :]

जानें कि कैसे इस सरल मास्टर / विस्तार Android एप्लिकेशन बनाने के लिए!
IOS ट्यूटोरियल टीम के सदस्य अली Hafizji, एक IOS और Android डेवलपर भारत में रह रहे एक ब्लॉग पोस्ट है.
के बाद से मैं इस ब्लॉग के बाद किया गया है, मैं एक Android आवेदन / खेल के विकास के लिए संबंधित पोस्ट कभी नहीं पढ़ा है. तो मैंने सोचा कि उस क्षेत्र में कुछ लिख किसी भी शुरुआत के लिए मददगार होगा:]
Android एक अद्भुत और मजेदार पर काम करने के लिए एक मंच है. किसी को अपने खुद के अनूठे विचार के साथ आते हैं, एक अच्छा उत्पाद बनाने के लिए कर सकते हैं और हजारों और ग्राहकों के हजारों के लिए उपलब्ध है.
इस ट्यूटोरियल में, हम एक “नमस्ते विश्व” Android app बनाने के लिए, emulator या एक डिवाइस पर काम कर यदि आप एक है, और एक सरल अनुप्रयोग मास्टर / विस्तार है कि हमारे पसंदीदा हीरो से उद्धरण की एक सूची से पता चलता है, स्टीव नौकरियाँ . मैं भी बताएंगे कि Google बाजार पर वितरण के लिए अनुप्रयोग का निर्माण कैसे होगा!
और हाँ, यह एक छोटे से विडंबना है एक Android डिवाइस पर एक स्टीव नौकरियाँ बोली app बनाने के लिए, लेकिन हे यह मुख्य रूप से सभी के बाद एक IOS ब्लॉग है;]
तो Android के जंगली दुनिया में गोता लगाने के लिए पढ़ते रहते हैं!
कई उपकरणों!
किसी को भी, जो एक Android डिवाइस खरीदना चाहता है से चुनने के लिए एक बड़ी विविधता है. वहाँ 300 से अधिक बाजार प्रत्येक अपने हार्डवेयर सुविधाओं के साथ में android उपकरणों रहे हैं. यदि आपकी प्राथमिक चिंता विकास है, सबसे अच्छा फोन है कि सबसे कम API स्तर है कि आप अपने सॉफ्टवेयर का समर्थन करने के लिए करना चाहते हैं मैच हो, तो आप इसके साथ परीक्षण कर सकते हैं. Emulator का उपयोग करने के लिए अन्य एपीआई के स्तर का परीक्षण करने के लिए. यदि अपनी प्राथमिक चिंता का विषय एक अच्छा फोन है, सबसे अच्छा फोन हो और emulator का उपयोग करने के लिए अन्य एपीआई स्तर की परीक्षा है.
अनुप्रयोग विकास के लिए है, यह वास्तव में फोन है जो आप एपीआई स्तर से अलग हो कोई फर्क नहीं करता है, खेल के विकास के लिए आप धीमी फोन चाहते हैं कि आप का समर्थन करने के लिए तो आप कुशल कोड लिखने के लिए मजबूर कर रहे हैं इरादा हो सकता है.
यह सब देखते हुए अगर आप सॉफ्टवेयर के विकास के लिए एक फोन खरीदने के लिए मैं सैमसंग आकाशगंगा ऐस, HTC जंगल की आग एस, या मोटोरोला Droid X2 खरीदने की सिफारिश करना चाहते हैं. कोई भी अपने विकास की जरूरत को पूरा करना चाहिए, और आप ऊपर के लिंक से एक काफी सस्ती एक चुन सकते हैं.
लेकिन अगर आप नवीनतम और सबसे बड़ी के लिए देख रहे हैं, मैं गूगल की नई आकाशगंगा नेक्सस की सलाह देते हैं. यह सिर्फ दिसंबर में बाहर आया था और वहाँ से बाहर सबसे शक्तिशाली उपकरणों में से एक है, और एंड्रॉयड (आइस क्रीम सैंडविच) के नवीनतम संस्करण चल रहा है.
रे से नोट: मैं समाप्त के बारे में $ 150 के लिए एक प्रयोग किया मोटोरोला Droid X2 खरीद. मैं इस डिवाइस को चुना क्योंकि मैं परीक्षण प्रयोजनों के लिए सस्ते कुछ करना चाहता था, और एक मासिक अनुबंध का भुगतान नहीं करना चाहता था. मैं अपने स्थानीय नेटवर्क वायरलेस इंटरनेट फोन के लिए कांटे की शकल (ऊपरी बाएँ दोहन द्वारा सक्रियण स्क्रीन को दरकिनार, ऊपरी दाएँ, नीचे सही, और स्क्रीन के नीचे छोड़ दिया, जहां यह android नल) कहते हैं. मैं सफलतापूर्वक ट्यूटोरियल के माध्यम से जाने के लिए इस उपकरण का उपयोग करने में सक्षम था.
बातें की स्थापना करना
इससे पहले कि हम अधिष्ठापन प्रक्रिया के साथ शुरू करते हैं 1 सत्यापित करें कि आपके कंप्यूटर बुनियादी प्रणाली आवश्यकताओं को पूरा करती है. यदि आप एक मैक पर कर रहे हैं की तरह मुझे यकीन है कि आप मैक ओएस 10.5.8 या बाद में (केवल x86).
चरण 1: JDK सत्यापित करें स्थापित है
पहले कदम के लिए जाँच अगर आप JDK (जावा विकास किट) स्थापित करने के लिए है. मैक आमतौर पर preinstalled JDK और का उपयोग करने के लिए तैयार के साथ आ रहा है.
यह जाँचने के लिए कि “जो जावा JDK के संस्करण क्या तुम खुला है एक और आदेश में टर्मिनल प्रकार. निर्देशिका है कि मुद्रित किया जाता है पर जाएँ और कमांड “जावा संस्करण” दर्ज करें. यहाँ है क्या उत्पादन की तरह लग रहा है:

यदि किसी कारण से आप जावा स्थापित नहीं है, आप डाउनलोड और Oracle.com से इसे स्थापित कर सकते हैं.
चरण 2: डाउनलोड ग्रहण
अगले कदम के लिए ग्रहण (क्लासिक संस्करण की सिफारिश की है) डाउनलोड करने के लिए है. आप यह http://www.eclipse.org/downloads से डाउनलोड कर सकते हैं
चरण 3: डाउनलोड Android SDK
आप http://developer.android.com/sdk/index.html से Android SDK डाउनलोड करने और इसे खोल सकते हैं. ध्यान दें कि आप के लिए एक सुरक्षित जगह में अपने Android SDK डाल के बाद आप इसे उपयोग कर सकता हूँ एक बहुत चाहते हो सकता है.
एक बार किया, उपकरण फ़ोल्डर में जाओ और डबल क्लिक करें android निष्पादन योग्य. यह Android एसडीके और AVD प्रबंधक खुल जाएगा.
चरण 4: संकुल डाउनलोड करें
उपलब्ध संकुल पर क्लिक करें यह सभी उपलब्ध Android SDK की एक सूची प्रदर्शित करेगा. एक एसडीके कि आप के लिए अपने app का निर्माण करना चाहते हैं.
एक आपके डिवाइस पर आधारित एसडीके का चयन करने के लिए, फोन Android संस्करण आपके फ़ोन चल रहा है को देखने के संस्करण के बारे में सेटिंग्स के लिए जाना. फिर एक एसडीके कि अपनी डिवाइस या पहले के रूप में एक ही संस्करण है का चयन करें.
चरण 5: स्थापित ADT प्लगइन
अगले हम सेटअप ADT प्लगइन की जरूरत है. इस शुरू ग्रहण करने के लिए मदद करने के लिए जाना> नया सॉफ्टवेयर स्थापित. ऊपरी दाएँ कोने पर जोड़ें क्लिक करें

निम्न URL दर्ज करें: https://dl-ssl.google.com/android/eclipse/ जाँच डेवलपर उपकरण, अगला क्लिक करें, और जादूगर के माध्यम से चलने के उपकरण स्थापित.
आप ग्रहण को पुनरारंभ करने के बाद, यह आप Android SDK स्थापना निर्देशिका के लिए संकेत देगा. का चयन करें और “मौजूदा SDKs का प्रयोग करें” निर्देशिका है जहाँ आप Android SDK डाउनलोड करने के लिए ब्राउज़ करें, और जादूगर खत्म.
यह बात है! आप सफलतापूर्वक अपने विकास के वातावरण की स्थापना की है.
नोट: ऊपर के कुछ यदि आप एक मैक उपयोगकर्ता नहीं कर रहे हैं काम नहीं कर सकते. यदि यह मामला है विस्तृत कदम यहाँ मिल कृपया http://developer.android.com/sdk/installing.html
Android हैलो!
मान लें आप सफलतापूर्वक सब कुछ स्थापित किया है, इसके लिए अपना पहला android परियोजना बनाने के लिए समय है.
चरण 1: बनाना परियोजना
ग्रहण प्रारंभ करें
फ़ाइल के लिए जाना> नई> अन्य> Android और चुनें Android परियोजना. आप निम्न पॉपअप स्क्रीन (तुम्हारा थोड़ा अलग है या कई चरणों में विभाजित किया जा सकता है) देखना चाहिए:

सभी विवरण दर्ज करें, जैसा कि मैंने किया है. यहाँ प्रत्येक क्षेत्र का एक संक्षिप्त विवरण है:
इस परियोजना का नाम निर्देशिका है कि परियोजना फ़ाइलों को होता है (यह QuoteReader नाम क्योंकि है कि हम क्या कर दूँगा) के नाम है.
गठन लक्ष्य निर्दिष्ट Android के संस्करण है जो आवेदन के लिए बनाया गया है. मैं 2.2, जो Froyo है चुना है.
गुण तत्वों स्वयं न्यूनतम एसडीके संपत्ति के लिए छोड़कर व्याख्यात्मक हैं. इस पिछड़े संगतता अर्थात के लिए प्रयोग किया जाता है, यदि आपके आवेदन एक न्यूनतम एपीआई स्तर की आवश्यकता है, या केवल Android मंच संस्करणों की एक निश्चित सीमा का समर्थन करने के लिए बनाया गया है. एक मूल्य के लिए इस सेटिंग सुनिश्चित करता है कि आपके आवेदन केवल उपकरणों कि Android प्रणाली की एक संगत संस्करण चल रहे हैं पर स्थापित किया जा सकता है.
ठीक है! अब कि आप सभी विवरण दर्ज किया है अगले दबाएँ. ग्रहण अब परियोजना है, जो आप अपने परियोजना नेविगेटर में देख सकते हैं पैदा करेगा.
चरण 2: परियोजना संरचना को समझना
इससे पहले कि हम साथ आरंभ करने के लिए किसी भी कोड की मदद से कुछ समय परियोजना की संरचना के माध्यम से जा रहा खर्च.

यहाँ फ़ोल्डर्स का एक संक्षिप्त विवरण मौजूद है:
(स्रोत) स्रोत: इस फ़ोल्डर अर्थात् यह है, जहां सभी कोड है सभी स्रोत फ़ाइलें शामिल हैं.
रेस: यह ऐसा क्षेत्र है जहां आप अपनी छवियों, तार और xml लेआउट रखना है.
आस्तियों: यह एक और जगह है जहाँ आप फ़ाइलों को रख सकते हैं. / Res और / संपत्ति के बीच अंतर यह है कि संपत्ति के लिए Android आईडी उत्पन्न नहीं करता है. क्या इसका मतलब यह है कि संपत्ति में एक फ़ाइल का उपयोग करने के लिए डेवलपर के लिए कि फाइल करने के लिए एक पूर्ण पथ प्रदान.
अब जब कि तुम परियोजना संरचना का एक बुनियादी समझ देता है, अनुप्रयोग चलाएँ.
चरण 3: आवेदन रनिंग
वहाँ दो मायनों में हम या तो एक वास्तविक डिवाइस पर चला सकते हैं या एक emulator पर आवेदन कर रहे हैं. मैं समझा जाएगा कि कैसे दोनों बहुत संक्षिप्त करने के लिए.
Emulator पर आवेदन चलाने हम पहली बार एक AVD (Android आभासी डिवाइस) बनाने की जरूरत है. यह Android Emulator का एक उदाहरण है. ऐसा करने के लिए, इन चरणों का पालन करें:
विंडो प्रबंधक> Android SDK और AVD जाओ और सही शीर्ष कोने में नया क्लिक करें.
सभी आवश्यक जानकारी दर्ज करें.

पर “बनाएं AVD” पर क्लिक करें, उसके बाद आप सिर्फ यह AVD प्रबंधक से चयन और शुरू करने पर क्लिक करके emulator शुरू कर सकते हैं.
बाद emulator शुरू होता है आप अनुप्रयोग है कि आप अभी बनाया चला सकते हैं. परियोजना पर यह सही क्लिक करते हैं, के रूप में चलाने के लिए जाना और Android अनुप्रयोग का चयन करें. इस emulator पर app का शुभारंभ करेंगे.

डिवाइस पर आवेदन रनिंग काफी सरल है और बहुत कम प्रयास की आवश्यकता है. यहाँ डिवाइस पर एक app का शुभारंभ करने के लिए कदम उठाए हैं:
आपके डिवाइस पर सेटिंग्स अनुप्रयोग विकास और USB डीबग करने के लिए अगले चेकबॉक्स का चयन करें.
आपके कंप्यूटर के लिए एक यूएसबी केबल के साथ डिवाइस कनेक्ट.
ग्रहण के माध्यम से प्रोजेक्ट को चलाएँ. आप निम्नलिखित पॉपअप देखेंगे:

डिवाइस का चयन करें और आप अनुप्रयोग तैनात हो जाएगा.
नोट: सूचना है कि पॉपअप ऊपर दो विकल्प से पता चलता है, कारण किया जा रहा है मैं पहले से ही चल रहा है इसलिए मैं चयन करने की आवश्यकता है, जहां या तो emulator या डिवाइस पर app यानी को तैनात emulator है.
एक सरल और आसान App बनाना
आवेदन की वर्तमान स्थिति काफी कच्चे है और हम डिफ़ॉल्ट परियोजना के लिए अभी तक कुछ भी नहीं जोड़ा गया है. तो कोशिश करते हैं और कुछ छोटे लेकिन उपयोगी बनाने की सुविधा देता है.
ट्यूटोरियल के इस भाग में हम एक छोटे से आवेदन का निर्माण होगा. विचार एक बोली पाठक का निर्माण करने के लिए है. उद्धरण एक सूची में प्रदर्शित किया जाएगा और एक आइटम पर प्रयोक्ता क्लिकें एप्लिकेशन जब एक विस्तृत चित्र और बोली युक्त पृष्ठ पर नेविगेट जाएगा.
पहले स्क्रीन उद्धरण और थंबनेल के साथ एक सूची में शामिल है. इस के लिए यूआई बनाकर शुरू कर देता है.
चरण 1: सूची दृश्य जोड़ना
यदि आप IOS के विकास दुनिया से आ रहे हैं, आप रेखांकन एक इंटरफ़ेस लेआउट इंटरफ़ेस बिल्डर का उपयोग करने के साथ परिचित हो. हालांकि, क्योंकि Android अलग स्क्रीन आकार के साथ इतने सारे अलग अलग उपकरणों का समर्थन करता है, उपयोगकर्ता इंटरफेस बनाने के लिए पूरी तरह से अलग है.
नेत्रहीन खींचने और छोड़ने के एक कैनवास UI तत्व के बजाय, आप XML में अपने UI परिभाषित करने की जरूरत है (हाँ, तुम कि सही पढ़ा!). आप विचार चाहते हैं (बटन, लेबल, आदि की तरह) के लिए XML टैग जोड़ सकते हैं और स्थिति जैसे मापदंडों के लिए XML गुण जोड़ देंगे, रंग, आदि
ग्रहण एक दृश्य संपादक है जहाँ आप ड्रॉप UI तत्वों को खींच कर सकते हैं के साथ आता है, लेकिन मैं बहुत सीधे XML बजाय संपादन इस रूप में आप अपने दृश्य पदानुक्रम पर एक मजबूत पकड़ दे देंगे करने की सलाह देते हैं.
इस ट्यूटोरियल, हम आपको दिखाने के बिल्कुल क्या XML में निवेश करने के लिए यूआई सेट हूँ, लेकिन अगर आप यह सब कैसे काम करता है के बारे में पढ़ने के लिए चाहते हैं, Android XML लेआउट गाइड यहाँ की जांच.
अब मदद से जोड़कर / लेआउट निर्देशिका से main.xml फ़ाइल खोलने. यदि ग्राफिकल लेआउट दृश्य दिखाई देता है, main.xml टैब का चयन करने के लिए कच्चे XML को संपादित. तो निम्नलिखित के साथ सामग्री की जगह:

android: id = “@ + id / quotes_list”
android: layout_width = “fill_parent”
android: layout_height = “fill_parent”
>

इस स्क्रीन के आकार के बराबर एक चौड़ाई और ऊंचाई के साथ एक सूची दृश्य पैदा करेगा.
हम अगले उपयोगकर्ता के लिए इस लेआउट दिखाने के लिए, स्रोत निर्देशिका में इस खुले QuoteReaderActivity.java वर्तमान की जरूरत है. आप देखेंगे कि इस वर्ग के एक वर्ग का नाम गतिविधि फैली. Android कुछ भी है कि उपयोगकर्ता के साथ सूचना का आदान प्रदान एक गतिविधि है, गतिविधि उपयोगकर्ता सामग्री है जो अलग अलग विचारों में मौजूद है दिखाने के लिए जिम्मेदार है.
सूचना है कि एक onCreate विधि बुलाया अधिरोहित है और उस में एक setContentView विधि बुलाया कहा जाता है. यह इसे पारित xml फ़ाइल में मौजूद विचारों के साथ इस गतिविधि की सामग्री सेट.
@ ओवरराइड
सार्वजनिक शून्य onCreate (बंडल savedInstanceState) {
super.onCreate (savedInstanceState);
setContentView (R.layout.main);
}
“आर” वर्ग ऊपर मौजूद / जोड़कर फ़ोल्डर में मौजूद संसाधनों का उल्लेख करने के लिए प्रयोग किया जाता है. यहाँ इस परियोजना के इस फ़ोल्डर की सामग्री का एक स्क्रीनशॉट है:

“आर” वर्ग स्वतः संसाधनों है कि आप इस फ़ोल्डर में डाल के लिए गुण होते उत्पन्न होता है. संसाधन के प्रत्येक प्रकार के लिए, वहाँ एक “आर” संपत्ति (सभी लेआउट संसाधनों के लिए उदाहरण R.layout के लिए) और उस प्रकार के हर संसाधन के लिए एक स्थिर पूर्णांक (R.layout.main उदाहरण के लिए) है. यह पूर्णांक संसाधन ID कि आप उपयोग कर सकते हैं कि संसाधन retrive है.
यह xml फ़ाइल में है जो हम सिर्फ सूची दृश्य है. इसलिए जब QuoteReader गतिविधि शुरू कर दिया है यह हमारी सूची दृश्य पैदा करेगा.
आगे बढ़ो और अपने आवेदन चलाने के तुम एक खाली स्क्रीन देखना चाहिए. यह इसलिए है क्योंकि हम अभी तक हमारी सूची को देखने के लिए किसी भी पंक्तियों को नहीं जोड़ा है.
चरण 2: सूची में पंक्तियाँ जोड़ना
इस चरण में हम पंक्तियों बना सकते हैं और उन्हें हमारी सूची में जोड़ना होगा. हम जानते हैं कि पंक्ति के एक थंबनेल और पाठ की जरूरत है.
यहाँ कैसे पंक्ति के लिए लग रहा है:

पंक्ति के लिए लेआउट बनाने के द्वारा शुरू कर देता है. जोड़कर / लेआउट निर्देशिका में एक नई xml फ़ाइल बनाएँ और यह “list_item_layout.xml नाम”. यह कच्चे XML दृश्य में खोलें और निम्नलिखित के साथ सामग्री की जगह:

android: layout_width = “fill_parent”
android: layout_height = “100dip”>
<ImageView
android: id = “@ + सूची / अंगूठे”
android: layout_width = “60dip”
android: layout_height = “60dip”
android: layout_centerVertical = “सच”
android: layout_alignParentLeft = “सच”
/>
<Textview
android: id = “@ + सूची / पाठ”
android: layout_toRightOf = “@ + सूची / अंगूठे”
android: layout_width = “wrap_content”
android: layout_height = “wrap_content”
android: textSize = “18dip”
android: layout_marginLeft = “10dip”
android: layout_centerVertical = “सच”
android: singleLine = “सच”
android: ऊंचाई = “अंत”
android: textstyle = “बोल्ड”
/>

यह और बोली के लिए एक textview थंबनेल के लिए एक imageview बनाता है.
ध्यान दें कि हम imageView और textview एक आईडी दे. एक आईडी विशिष्ट एक दृश्य पदानुक्रम के भीतर एक दृश्य की पहचान करने के लिए प्रयोग किया जाता है. वाक्यविन्यास है कायरता यहाँ तो चलो यह थोड़ा थोड़ा करके समझा:
पर प्रतीक (@): आप शुरुआत में इस डाल, और यह इंगित करता है कि XML पार्सर पार्स और आईडी स्ट्रिंग के बाकी का विस्तार करना चाहिए और यह एक आईडी संसाधन के रूप में पहचान है.
प्लस – चिह्न (+): इसका मतलब यह है कि यह एक नया संसाधन नाम है और कहा कि बनाया जाना चाहिए और हमारे संसाधनों के लिए जोड़ा है.
उपयोग कैसे करें: app के बाद संकलित किया गया है, आप इस “R.list.text” का उपयोग कर देखने के लिए उल्लेख करने में सक्षम हो जाएगा.
सूचना है कि माता – पिता को इस लेआउट में इस्तेमाल दृश्य एक RelativeLayout है. इस लेआउट आप अपने बच्चों को एक दूसरे के रिश्तेदार ही है और स्थिति के लिए अनुमति देता है. Imageview लेआउट के बाईं ओर रखा जाना चाहिए और यह करने के लिए खड़ी इसलिए उन गुणों को सच करने के लिए सेट कर रहे हैं केन्द्रित किया की जरूरत है. इसके अलावा textview एक पंक्ति में पाठ शामिल करने की जरूरत है और अगर लंबाई बढ़ जाती है यह लपटने, इसलिए एकल लाइन और एल्लिप्साइज संपत्तियों सेट कर रहे हैं.
अब है कि हम जगह में यूआई देता है, कुछ कोड जोड़ने इतना है कि हम यह प्रत्येक सूची आइटम के लिए उपयोग कर सकते हैं.
चरण 3: समझ एडेप्टर और डेटा स्रोतों
ठीक की मदद से एक संक्षिप्त विराम ले और मुझे कोशिश और समझाने के लिए कैसे एक सूची दृश्य डेटा के साथ बसा है. डेटा एक डेटा स्रोत के रूप में जाना जाता है कुछ में मौजूद है इस वस्तु कि डेटा कि सूची दृश्य आबाद होगा प्रदान करता है. यह आमतौर पर बस NSObject का एक उपवर्ग है – अपने अनुप्रयोग के मॉडल के रूप में लगता है.
एक adapter डेटा स्रोत और सूची दृश्य के बीच बैठता है. यह डेटा स्रोत और सूची आइटम्स तरोताजा कर देती है जब एक स्क्रॉल होता है से डेटा के साथ सूची प्रदान करता है.
Android दो मानक एडेप्टर, ArrayAdapter और CursorAdapter है. आप भी इन वर्गों या BaseAdapter वर्ग का विस्तार करके अपने खुद के एडाप्टर को विकसित कर सकते हैं. हम BaseAdapter वर्ग का विस्तार किया जाएगा बाद में इस ट्यूटोरियल में, लेकिन चलो डेटा स्रोत 1 बना.
चरण 4: डेटा स्रोत बनाना
सबसे पहले सभी छवियों कि यहाँ अपने Drawable निर्देशिका में प्रदान की जाती हैं कॉपी. यदि आप एक Drawable निर्देशिका नहीं है, आगे बढ़ो और इसे बनाने के लिए. Drawable निर्देशिका मूल रूप से आइटम है कि स्क्रीन करने के लिए तैयार किया जा सकता है शामिल हैं चाहिए. संसाधनों है कि आप यहाँ जगह “आर” वर्ग के माध्यम से संदर्भित किया जा सकता है. उदाहरण के लिए Drawable फ़ोल्डर में एक संसाधन चिह्न नाम “R.drawable.icon” का उल्लेख होगा.
अगला, हम इस परियोजना के लिए उपयोग कर सकता हूँ उद्धरण डाउनलोड करने और उन्हें अपने को जोड़कर / मूल्यों / strings.xml फ़ाइल में जोड़. कारण है कि मैं एक xml फ़ाइल को तार जोड़ा और कोड में उन्हें सीधे का उपयोग नहीं है क्योंकि मैं करने के लिए अपने संसाधनों को अलग रखने की तरह है, तो भी यह एक बहुत मदद मिलती है जब आप तार स्थानीयकृत रहे हैं. फिर आप यहाँ रखा वही “आर” वर्ग का उपयोग कर तार का उल्लेख कर सकते हैं, उदाहरण के लिए quote_1 स्ट्रिंग “R.string.quote_1″ का उल्लेख होगा.
फाइल करने के लिए निम्न सिंटैक्स का अनुसार उद्धरण जोड़ें:
अभिनव एक नेता और एक अनुयायी के बीच प्रतिष्ठित
मैं ब्रह्मांड में एक डिंग डाल करना चाहते हैं! स्ट्रिंग />
लोग डॉन ‘t पता है कि वे क्या चाहते हैं, जब तक आप उन्हें दिखाने .

सूचना है कि आप एक बैकस्लैश के साथ किसी भी एकल उद्धरण पूर्व है.
अब है कि हम सभी डेटा है, हमारे डेटा स्रोत वर्ग बनाने की सुविधा देता है. अपने src फ़ोल्डर गोटो नई पर क्लिक करें और कक्षा का चयन करें. नाम यह डेटास्रोत, सुनिश्चित करें कि पैकेज पैकेज जो कुछ QuoteReaderActivity.java का हिस्सा है, और प्रेस खत्म करने के लिए सेट कर दिया जाता है. यह करने के लिए कोड की निम्न पंक्तियाँ जोड़ें:
निजी ArrayList mPhotoPool;
निजी ArrayList mQuotePool;
निजी ArrayList mPhotoHdPool;

सार्वजनिक ArrayList (getmPhotoHdPool) {
mPhotoHdPool वापसी;
}

सार्वजनिक ArrayList (getmPhotoPool) {
mPhotoPool वापसी;
}

सार्वजनिक ArrayList (getmQuotePool) {
mQuotePool वापसी;
}

सार्वजनिक (डेटास्रोत) {
mPhotoPool = नए (ArrayList);
mQuotePool = नए (ArrayList);
mPhotoHdPool = नए (ArrayList);
}
सब है कि हम यहाँ किया है 3 चर बना, उनके मनुष्य के तरीकों उत्पन्न, और निर्माता में चर initialized.
यदि आप चेतावनी है कि यह ArrayList नहीं मिल सकता है, बस स्रोत के लिए जाना व्यवस्थित करने के लिए आयात ग्रहण स्वचालित रूप से आयात फ़ाइल के शीर्ष पर जरूरत जोड़ने. आप इस एक ही बात करने के लिए है जब भी आप लापता आयात पर चेतावनी के बाद इस ट्यूटोरियल में के रूप में अच्छी तरह से प्राप्त कर सकते हैं.
अगले हम हमारे डेटा है, जो चित्रों और उद्धरण के साथ सरणी सूची पॉप्युलेट की जरूरत है. सूचना है कि हम अपने सरणी सूची परिभाषित किया है integers होते हैं. इसका कारण यह है कि जब आप संसाधन निर्देशिका में किसी भी संसाधन ड्रॉप प्रणाली के निर्माण के लिए यह एक अद्वितीय पहचानकर्ता है जो एक पूर्णांक द्वारा प्रतिनिधित्व किया है.
ठीक है, अब की मदद से 3 अलग कार्यों बनाने के लिए हमारे ArrayLists आबाद. निर्माता परिभाषा ऊपर निम्नलिखित कार्यों जोड़ें.
निजी शून्य (setupPhotoPool) {
mPhotoPool.add (R.drawable.steve_1);
mPhotoPool.add (R.drawable.steve_2);
mPhotoPool.add (R.drawable.steve_3);
mPhotoPool.add (R.drawable.steve_4);
mPhotoPool.add (R.drawable.steve_5);
mPhotoPool.add (R.drawable.steve_6);
mPhotoPool.add (R.drawable.steve_7);
mPhotoPool.add (R.drawable.steve_8);
mPhotoPool.add (R.drawable.steve_9);
mPhotoPool.add (R.drawable.steve_10);
}

निजी शून्य (setupQuotePool) {
mQuotePool.add (R.string.quote_1);
mQuotePool.add (R.string.quote_2);
mQuotePool.add (R.string.quote_3);
mQuotePool.add (R.string.quote_4);
mQuotePool.add (R.string.quote_5);
mQuotePool.add (R.string.quote_6);
mQuotePool.add (R.string.quote_7);
mQuotePool.add (R.string.quote_8);
mQuotePool.add (R.string.quote_9);
mQuotePool.add (R.string.quote_10);
}

निजी शून्य (setupPhotoHDPool) {
mPhotoHdPool.add (R.drawable.steve_hd_1);
mPhotoHdPool.add (R.drawable.steve_hd_2);
mPhotoHdPool.add (R.drawable.steve_hd_3);
mPhotoHdPool.add (R.drawable.steve_hd_4);
mPhotoHdPool.add (R.drawable.steve_hd_5);
mPhotoHdPool.add (R.drawable.steve_hd_6);
mPhotoHdPool.add (R.drawable.steve_hd_7);
mPhotoHdPool.add (R.drawable.steve_hd_8);
mPhotoHdPool.add (R.drawable.steve_hd_9);
mPhotoHdPool.add (R.drawable.apple_hd);
}
इन कार्यों में से प्रत्येक डेटा में हमारे ArrayLists में भरने है. जैसे इतना निर्माता में इन कार्यों को बुलाओ:
(setupPhotoPool);
(setupQuotePool);
(setupPhotoHDPool);
हम भी डेटा स्रोत के आकार के लिए एक और समारोह जोड़ देगा. हमारे मामले में डेटा स्रोत का आकार 10 यानी हम 10 छवियों और 10 उद्धरण है इसलिए हम बस हमारे ArrayLists के किसी भी एक के आकार लौट सकते हैं.
निर्माता ऊपर निम्नलिखित समारोह जोड़ें:
सार्वजनिक int (getDataSourceLength) {
(mPhotoPool.size);
}
यह हम सभी की जरूरत है. अगले हम इस डेटा स्रोत का उपयोग करने के लिए और हमारी सूची आबाद करने की जरूरत है.
चरण 5: बनाना अनुकूलक
“फ़ोल्डर से ओपन QuoteReaderActivity.java और एक निजी वर्ग बनाने के लिए, यह QuoteAdapter नाम. इस वर्ग BaseAdapter वर्ग से विरासत और यह न्यूनतम कार्यान्वयन के साथ सभी सार तरीकों को लागू करना चाहिए करना चाहिए.
वर्ग क्या अब की तरह दिखना चाहिए:
सार्वजनिक वर्ग QuoteReaderActivity गतिविधि फैली {

सार्वजनिक वर्ग QuoteAdapter {BaseAdapter फैली

@ ओवरराइड
सार्वजनिक int (getCount) {
0 वापसी;
}

@ ओवरराइड
सार्वजनिक वस्तु GetItem (arg0 int) {
अशक्त वापसी;
}

@ ओवरराइड
जनता लंबे समय के getItemId (arg0 int) {
0 वापसी;
}

@ ओवरराइड
सार्वजनिक देखें getView (int arg0, देखें arg1, arg2 ViewGroup) {
अशक्त वापसी;
}
}

/ ** बुलाया जब गतिविधि पहले बनाया है. * /
@ ओवरराइड
सार्वजनिक शून्य onCreate (बंडल savedInstanceState) {
super.onCreate (savedInstanceState);
setContentView (R.layout.main);
}
}
चलो समझने की कोशिश करते हैं और प्रत्येक विधि क्या करता है.
getCount (): डेटा सेट में मौजूद वस्तुओं की संख्या देता है.
GetItem (int स्थिति): डेटा डेटा सेट में निर्दिष्ट स्थिति के साथ जुड़े आइटम हो जाता है.
getItemId (int स्थिति): पंक्ति निर्दिष्ट स्थिति के साथ जुड़े आईडी हो जाता है.
(int स्थिति, देखें convertView, ViewGroup माता पिता) getView: यह एक विचार है कि डेटा स��

टैग: