ImageButton के लिए सामग्री डिजाइन स्पर्श तरंग लागू करें?


95

मेरे पास एक इमेजबटन है जो एक स्पर्श एनीमेशन के साथ प्रतिक्रिया नहीं करता है जब इसे क्लिक किया जाता है क्योंकि यह लॉलीपॉप पर नियमित बटन के विपरीत एक स्थिर छवि है जो कि निर्मित में प्रभाव के साथ आता है। मैं छवि के लिए सामग्री डिजाइन लहर स्पर्श प्रभाव जोड़ना चाहूंगा, लेकिन इसे लागू करने का कोई तरीका नहीं खोज सकता। मैं छवि पर एक रंग फ़िल्टर सेट कर सकता हूं लेकिन वह तरंग प्रभाव नहीं है। जब मैं Google Play Music में एल्बम कवर छवि रखता हूं और छवि पर एक छाया लहर चलती है, तो मैं क्या करने का प्रयास कर रहा हूं, इसका एक उदाहरण है।

जवाबों:


259

और भी बेहतर परिणाम के लिए:

<ImageButton
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:src="@android:drawable/ic_button"
    android:background="?attr/selectableItemBackgroundBorderless"
/>

6
यह बेहतर उत्तर है - परिपत्र अनुभव के साथ-साथ लहर प्रभाव भी देता है, धन्यवाद।
इलियटएम

3
क्या यह रंगीन ड्रॉबल्स के साथ भी काम करना चाहिए? मेरे लिए पृष्ठभूमि को लागू करते समय कोई स्पर्श प्रभाव दिखाई नहीं देता है। मेरी थीम Theme.AppCompat.Light.DarkActionBar से विस्तारित हो रही है, क्या यह एक समस्या हो सकती है?
प्रदर्शन नाम

12
इसके बजाय पृष्ठभूमि यह ठीक काम कर रहे सभी विचारों के लिए अग्रभूमि का उपयोग करें।
गोपी Cg

1
क्या किसी को ऐसा करने का तरीका मिला है और पृष्ठभूमि का रंग भी बदल गया है? बैकग्राउंड बदलने से काम नहीं चलता और फॉरग्राउंड को "? Attr / selectableItemBackgroundBorderless" बटन पर एक गंदा पैडिंग देता है।
सेव

1
यदि आप अंधेरे पृष्ठभूमि का उपयोग कर रहे हैं, तो लहर पर्याप्त दिखाई नहीं दे सकती है। आप इसे जोड़कर हल्के रंग के तरंग में बदल देते हैं android:theme="@style/Base.ThemeOverlay.AppCompat.Dark"(<API 21 पर काम करता है)। अन्य समाधानों के लिए stackoverflow.com/q/28605031/599535 देखें ।
Lifes

28

आप इस तरह से अपने ImageButton के लिए एक पृष्ठभूमि जोड़ सकते हैं:

<ImageButton
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:src="@android:drawable/btn_dialog"
    android:background="?android:attr/selectableItemBackground" />

2
एंड्रॉइड का उपयोग करें: अग्रभूमि = "? Attr / selectableItemBackgroundBorderless"
MFQ

@MFQ यह किस तरह से अलग है? एंड्रॉइड: attr / selectableItemBackground
किलर

1
@killer selectableItemBackgroundBorderless = यदि आप टूलबार में किसी आइकन पर क्लिक करते हैं, तो बिना किसी सीमा के एक गोलाकार तरंग दें, लेकिन selectableItemBackground आयत तरंग देता है, तो आप उस आइकन पर लंबे समय तक अंतर देख सकते हैं जो इस ड्रॉबल्स को लागू करता है
MFQ

6

मैं i.shadrin (से अच्छा जवाब मिला यहाँ ) और Nicolars ( यहाँ )।

उनके जवाबों के बीच अंतर यह है कि ?attr/selectableItemBackgroundBorderlessआप एक दे सकते हैं android.view.InflateException, इसलिए ?android:attr/selectableItemBackgroundसमाधान है।

FWIW, मुझे नहीं पता कि अपवाद क्यों होता है, क्योंकि पहले जवाब ने मेरी सभी पुरानी परियोजनाओं में ठीक काम किया, लेकिन मेरी हालिया परियोजना में (शायद इसलिए नहीं कि ऐप थीम = android:Theme.Material?)।

जो अजीब बात हो रही थी वह यह है कि हालांकि लहर प्रभाव को दिखाया गया था लेकिन यह इमेजबटन से बाहर था, इसलिए समाधान:

  • के android:foreground="?android:attr/selectableItemBackgroundBorderless"बजाय का उपयोग करने के लिएandroid:background="?android:attr/selectableItemBackgroundBorderless"

आशा है कि यह आपकी मदद करेगा यदि आप उसी का सामना कर रहे हैं।


3

यदि आपके पास पहले से ही एक पृष्ठभूमि है और इसे बदलना नहीं चाहते हैं, तो अग्रभूमि का उपयोग करें;

<ImageButton
    android:layout_width="60dp"
    android:layout_height="match_parent"
    android:background="@drawable/preview_in_4k_background"
    android:src="@drawable/ic_full_screen_24px"
    android:layout_marginLeft="5dp"
    android:foreground="?attr/selectableItemBackgroundBorderless"
    android:layout_column="2"/>
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.