"क्या मैं अभी से एक गतिविधि से विस्तार करना चाहिए" का संक्षिप्त उत्तर? नहीं, आपको AppCompatActivity
का विस्तार करना चाहिए क्योंकि यह पुराने उपकरणों को पीछे की संगत सुविधाएं प्रदान करता है।
एक imageView जो सहित मंच के पुराने संस्करणों, पर संगत सुविधाओं का समर्थन करता: AppCompatImageView
के मामले में
- ViewCompat में पृष्ठभूमि टिंट विधियों के माध्यम से इसकी पृष्ठभूमि के गतिशील रंग देता है।
- पृष्ठभूमि टिंट और पृष्ठभूमि टिंटमोड का उपयोग कर पृष्ठभूमि टिंट की सेटिंग की अनुमति देता है।
- ImageViewCompat में छवि टिंट विधियों के माध्यम से अपनी छवि के गतिशील रंग की अनुमति देता है।
- टिंट और टिंटमोड का उपयोग कर छवि टिंट की सेटिंग की अनुमति देता है।
इसके अलावा, यह पुराने Android संस्करण के लिए वेक्टर ड्रॉएबल के साथ संगतता कहते हैं।
विसंगतियों
के रूप में यह AppCompatImageView
से समझाया गया है के बारे में स्पष्टीकरण:
यह स्वचालित रूप से जब आप अपने लेआउट में imageView का उपयोग किया जाएगा और इसे उच्च-स्तरीय गतिविधि/संवाद द्वारा प्रदान की जाती है appcompat।
तो, यह अप्रत्याशित नहीं है।
यह कैसे काम करता
AppCompatActivity
एक LayoutInflater.Factory2
स्थापित करता है कुछ दृश्यों की मुद्रास्फीति रोकना। इस inflater का कोड AppCompatViewInflater.java में देखा जा सकता है।
public final View createView(View parent, final String name, @NonNull Context context,
@NonNull AttributeSet attrs, boolean inheritContext,
boolean readAndroidTheme, boolean readAppTheme, boolean wrapContext) {
final Context originalContext = context;
// ...
View view = null;
// We need to 'inject' our tint aware Views in place of the standard framework versions
switch (name) {
case "TextView":
view = new AppCompatTextView(context, attrs);
break;
case "ImageView":
view = new AppCompatImageView(context, attrs);
break;
case "Button":
view = new AppCompatButton(context, attrs);
break;
case "EditText":
view = new AppCompatEditText(context, attrs);
break;
case "Spinner":
view = new AppCompatSpinner(context, attrs);
break;
case "ImageButton":
view = new AppCompatImageButton(context, attrs);
break;
case "CheckBox":
view = new AppCompatCheckBox(context, attrs);
break;
case "RadioButton":
view = new AppCompatRadioButton(context, attrs);
break;
case "CheckedTextView":
view = new AppCompatCheckedTextView(context, attrs);
break;
case "AutoCompleteTextView":
view = new AppCompatAutoCompleteTextView(context, attrs);
break;
case "MultiAutoCompleteTextView":
view = new AppCompatMultiAutoCompleteTextView(context, attrs);
break;
case "RatingBar":
view = new AppCompatRatingBar(context, attrs);
break;
case "SeekBar":
view = new AppCompatSeekBar(context, attrs);
break;
}
if (view == null && originalContext != context) {
// If the original context does not equal our themed context, then we need to manually
// inflate it using the name so that android:theme takes effect.
view = createViewFromTag(context, name, attrs);
}
// ...
return view;
}
मजबूर:
समारोह बनाने Views
AppCompatViewInflater#createView(View, String, Context, AttributeSet, boolean, boolean, boolean, boolean)
है, और आप यहाँ देख सकते हैं यह (पैकेज यह लगाकर बिना) साधारण दृश्य नाम के लिए जाँच करता है के रूप में के लिए जिम्मेदार है, और AppCompat*
संस्करण बजाय बनाता है गैर AppCompat के उपयोग विचार
तो, आदेश के निर्माण के लिए मजबूर करने में एक नियमित ImageView
(कोई AppCompatImageView
), जबकि अभी भी AppCompatActivity
का उपयोग कर आप विशेष की जरूरत है कैसे लेआउट मुद्रास्फीति काम करता है आप Chris Jenx, Calligraphy के लेखक द्वारा अद्भुत बात "LayoutInflater: Friend or Foe?" देख सकते हैं पर अधिक जानकारी के लिए
<android.widget.ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@mipmap/test"/>
: पूरा वर्ग के नाम cify, उदाहरण के लिए।
एक 'AppCompatActivity' स्वचालित रूप से कुछ प्लेटफ़ॉर्म के' AppCompat * 'संस्करणों को बना देगा, जब इसकी परत बहती है तो देखें। नियमित 'गतिविधि' नहीं होगी। यदि आप किसी भी एपकोम्पेट घटकों का उपयोग कर रहे हैं, तो 'AppCompatActivity' के साथ चिपके रहें। –
** डाउनवॉटर के लिए: ** क्या आप कृपया डाउनवॉटिंग के तर्क को समझ सकते हैं? –
लेआउट इन्फ्लूटर गतिशील रूप से दृश्य को वापस करने के लिए प्रतिबिंब का उपयोग करता है। गतिविधि AppCompat शैलियों और विषयों की वजह से AppCompat दृश्य उत्पन्न कर सकती है। –