android - क्या एक्सएमएल का उपयोग करके ड्रिबल के अल्फा को सेट करने का एक तरीका है?




drawable alpha-transparency (5)

खुद की तरह आसान। मैं एक अल्फा बटन बनाना चाहता हूं, जिसमें इस तरह से एक चयन योग्य चित्र होगा:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <!-- Play/Pause -->
    <item android:state_selected="false" android:drawable="@drawable/item" />
    <item android:state_selected="true" android:drawable="@drawable/item" />

</selector>

मैं कुछ इस तरह बनाना चाहता हूँ:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <!-- Play/Pause -->
    <item android:alpha="125" android:state_selected="false" android:drawable="@drawable/item" />
    <item android:alpha="255" android:state_selected="true" android:drawable="@drawable/item" />

</selector>

सबको धन्यवाद ।


उन लोगों के लिए जो ओपी के रूप में एक ही समस्या है, AppCompat अब आपको 'अल्फा' पैरामीटर सेट करने की अनुमति देता है, क्योंकि वह अपने लक्ष्य कोड में काम करता है:

    <?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <!-- Play/Pause -->
    <item android:alpha="125" android:state_selected="false" android:drawable="@drawable/item" />
    <item android:alpha="255" android:state_selected="true" android:drawable="@drawable/item" />

</selector>

अधिक जानकारी here


ओपी के बाद से यह एक समय हो गया है, लेकिन व्यक्तिगत रूप से एक समाधान मिला है जो मेरे लिए सुझाए गए उत्तरों की तुलना में बहुत बेहतर काम करता है। एक BitmapDrawable बनाने BitmapDrawable बनाता है आसानी से अल्फा सेट करना संभव है:

<?xml version="1.0" encoding="utf-8"?>
<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
    android:src="@drawable/your_drawble"
    android:alpha="77">
</bitmap>

अल्फा 0 और 255 के बीच कोई भी मूल्य हो सकता है। ध्यान दें कि यह एचईएक्स रंग मूल्य अल्फा के व्युत्क्रम की तरह है, उदाहरण के लिए 70% अल्फा एचईएक्स में बी 3 और बिटमैपड्रावेबल में 77 होगा।


मुझे लगता है कि आप अपना स्वयं का एक ड्रॉबल बना सकते हैं जो इस तर्क को एक पैरामीटर के रूप में ले सकता है। हालांकि मैंने ऐसा कभी नहीं किया है।

इस लिंक को देखें:

StateListDrawable में ड्रॉबल के लिए अल्फा वैल्यू कैसे सेट करें?

यदि यह संभव नहीं है, तो आप हमेशा इसे कोड में कर सकते हैं ...

यहां 2 लिंक दिए गए हैं, जिनके बारे में आपको बिटमैप के उपयोग की इच्छा है।


मेरा लक्ष्य एक ऐसा बटन बनाना था जिसे उसने अलग-अलग अल्फ़ा में चुना और दबाया हो - लेकिन उसी (png) संसाधन का उपयोग करके और यथासंभव कम फ़ाइलों को प्रभावित कर रहा हो।

मेरा समाधान एक बिटमैप में अल्फा को बदलने के समान है - लेकिन यह चयनकर्ता से करता है इसलिए केवल एक फ़ाइल प्रभावित होती है।

बिटमैप के टिंट फ़ंक्शन का उपयोग करें, याद रखें कि टिंट मौजूदा पिक्सेल को रंग देगा ताकि एक सफेद रंग का उपयोग करें। जैसे, # 80FFFFFF - रंग को मूल रखने के लिए लेकिन अल्फा को 50% तक कम करें। इसे दबाए गए आइकन का रंग बदलने के लिए भी इस्तेमाल किया जा सकता है।

यह मेरी आकर्षक XML फ़ाइल है:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_selected="true">
        <bitmap
            android:src="@drawable/ic_camera"
            android:tint="#80FFFFFF">
        </bitmap>
    </item>
    <item android:state_pressed="true">
        <bitmap
            android:src="@drawable/ic_camera"
            android:tint="#80FFFFFF">
        </bitmap>
    </item>
    <item>
        <bitmap
            android:src="@drawable/ic_camera">
        </bitmap>
    </item>
</selector>

मैंने एक ड्रॉबल का उपयोग करके समान हासिल किया

<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
    <solid android:color="#5000ddff" />
</shape>

यहाँ पर अल्फा 50 का उपयोग किया गया है, जो अपारदर्शिता स्तर निर्धारित करता है। उम्मीद है की वो मदद करदे





alpha-transparency