एंड्रॉइड पर टेक्स्टव्यू या इमेजव्यू पर रिपल इफेक्ट कैसे सेट करें?


127

मैं एंड्रॉइड स्टूडियो में टेक्स्टव्यू और इमेजव्यू पर एक रिपल इफेक्ट सेट करना चाहता हूं। मैं यह कैसे कर सकता हूं?


1
कृपया अपना प्रश्न पहले विस्तृत करें। वास्तव में आपको क्या चाहिए और आपने अब तक क्या प्रयास किया है। यह कहते हुए कि मैं तरंग प्रभाव चाहता हूं, यह एक बहुत व्यापक प्रश्न है
अनिरुद्ध शर्मा

वास्तव में मैं पाठ-दृश्य और छवि-दृश्य चयन / अचयनित प्रभाव के लिए प्रभाव चाहता हूं।
वसंत

क्या आपने उसी को खोजने की कोशिश की है?
अनिरुद्ध शर्मा 12

जवाबों:


276

रेफरी: http://developer.android.com/training/material/animations.html ,

http://wiki.workassis.com/category/android/android-xml/

<TextView
.
.
android:background="?attr/selectableItemBackgroundBorderless"
android:clickable="true"
/>

<ImageView
.
.
.
android:background="?attr/selectableItemBackgroundBorderless"
android:clickable="true"
/>

2
अच्छा यह लॉलीपॉप पर मेरे साथ काम किया है, लेकिन इस तरह के लिए जो Android Android संस्करण? और क्या यह प्री-लॉलीपॉप पर काम करता है?
बशीर अल-ममानी

2
@ रिचर्ड मैं एक साल पहले किटकैट (या आईसीएस) के साथ एक मुद्दा रहा है, और क्लिक करने वाले श्रोताओं ने एंड्रॉइड के बिना काम नहीं किया: उस संस्करण के लिए क्लिक करने योग्य = "सत्य"
DoruChidean

25
Android के आधुनिक संस्करणों में, यह अब हैandroid:background="?android:attr/selectableItemBackground"
tmm1

2
जब मैं एक कस्टम पृष्ठभूमि चाहता हूँ तो इसका उपयोग कैसे कर सकते हैं ??
श्रीड

3
इसके साथ अंतर / बिना Borderless youtube.com/watch?v=wOjA8tS5sbc
गिबोल्ट 20'18 '

82

यदि आप चाहते हैं कि रिपल टेक्स्ट व्यू / इमेज व्यू के आकार के लिए बाध्य हो:

<TextView
android:background="?attr/selectableItemBackground"
android:clickable="true"/>

(मुझे लगता है कि यह बेहतर लग रहा है)


2
वहाँ का उपयोग करने में कोई अंतर है selectableItemBackgroundबनामselectableItemBackgroundBorderless
राकेश कश्यप

मुझे नहीं पता कि यह सीमाओं के लिए बाध्य क्यों नहीं था और यह पूरे लेआउट के माध्यम से विस्तारित होता है
वीएसबी

4
@rakeshkashyap अंतर यह है कि selectableItemBackground यह देखने के आकार (चौड़ाई / ऊँचाई) के भीतर लहर को बनाए रखेगा। selectableItemBackgroundBorderless यह अन्य विचारों की तरह लहर का विस्तार करेगा (आधिकारिक कैलकुलेटर ऐप लहर की तरह)
ट्यूडर

1
और इसे भी सेट करना होगा >>> Android: focusable = "true"
Amos

सहायक। धन्यवाद।
पूजा

25

कृपया तरंग प्रभाव के लिए नीचे दिए गए उत्तर को देखें।

टेक्स्टव्यू या दृश्य पर लहर:

android:clickable="true"
android:focusable="true"
android:foreground="?android:attr/selectableItemBackgroundBorderless"

बटन या छवि पर लहर:

android:foreground="?android:attr/selectableItemBackgroundBorderless"

4
कृपया ध्यान दें कि selectableItemBackgroundBorderlessएपीआई 21+ है। नीचे आप selectableItemBackgroundसंगतता समस्या से बचने के लिए चुन सकते हैं
स्टीवन टीबी

10

आप एंड्रॉइड-रिपल-बैकग्राउंड का उपयोग कर सकते हैं

प्रभाव प्रारंभ करें

final RippleBackground rippleBackground=(RippleBackground)findViewById(R.id.content);
ImageView imageView=(ImageView)findViewById(R.id.centerImage);
imageView.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        rippleBackground.startRippleAnimation();
    }
});

बंद करो एनीमेशन:

rippleBackground.stopRippleAnimation();

अच्छा! क्या इसका कोई कोटलिन संस्करण है?
रेंगिनेर

8
<TextView
            android:id="@+id/txt_banner"
            android:layout_width="match_parent"
            android:text="@string/banner"
            android:gravity="center|left"
            android:layout_below="@+id/title"
            android:background="@drawable/ripple_effect"
            android:paddingLeft="15dp"
            android:textSize="15sp"
            android:layout_height="45dp" />

इसे ड्रा करने योग्य में जोड़ें

<?xml version="1.0" encoding="utf-8"?>
<!--this ribble animation only working for >= android version 21-->
<ripple
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:color="@color/click_efect" />

इसे इस्तेमाल करे।


6

इसे इस्तेमाल करे। यह मेरे लिए काम किया है।

android:clickable="true"
    android:focusable="true"
    android:background="?android:attr/selectableItemBackground"

1
मैंने पहले ही इसका उल्लेख किया है ( stackoverflow.com/a/50347848/1954960 ) इसलिए डुप्लिकेट उत्तर देने के बजाय कृपया मेरे उत्तर को अंगूठा दें, धन्यवाद! :)
ज़ेलर सेलोग्लु

5

उपर्युक्त उत्तरों के अलावा UI संपादक की चेतावनी से बचने के लिए ध्यान देने योग्य है

android:background="?attr/selectableItemBackgroundBorderless"
android:clickable="true"
android:focusable="true"

4

@Bikesh M Annur ( यहां ) द्वारा पोस्ट किए गए अच्छी तरह से मतदान समाधान के मामले में , आपके लिए काम नहीं करता है, उपयोग करने का प्रयास करें:

<TextView
...
android:background="?android:attr/selectableItemBackgroundBorderless"
android:clickable="true" />

<ImageView
...
android:background="?android:attr/selectableItemBackgroundBorderless"
android:clickable="true" />

android:clickable="true"ऐड का उपयोग करते समय भी, android:focusable="true"क्योंकि:

" एक विजेट जो क्लिक करने योग्य घोषित किया गया है लेकिन ध्यान देने योग्य घोषित नहीं किया गया है वह कीबोर्ड के माध्यम से सुलभ नहीं है। "


3

जोड़ना android:clickable="true" android:focusable="true"

तरंग प्रभाव के लिए

android:background="?attr/selectableItemBackgroundBorderless"

चयन प्रभाव के लिए

android:background="?android:attr/selectableItemBackground"

बटन प्रभाव के लिए

android:adjustViewBounds="true" style="?android:attr/borderlessButtonStyle"

2

@Bikesh M Annur के जवाब के अलावा, अपने समर्थन पुस्तकालयों को अद्यतन करना सुनिश्चित करें। पहले मैं 23.1.1 का उपयोग कर रहा था और कुछ नहीं हुआ। इसे 23.3.0 पर अपडेट कर चाल चली।



1

या आप इस लाइब्रेरी (Android 9+) का उपयोग करने का प्रयास कर सकते हैं: RippleEffect

एकीकरण

dependencies {
    compile 'com.github.traex.rippleeffect:library:1.3'
}

उपयोग:

<com.andexert.library.RippleView
  android:id="@+id/more"
  android:layout_width="?android:actionBarSize"
  android:layout_height="?android:actionBarSize"
  android:layout_toLeftOf="@+id/more2"
  android:layout_margin="5dp"
  rv_centered="true">

  <ImageView
    android:layout_width="?android:actionBarSize"
    android:layout_height="?android:actionBarSize"
    android:src="@android:drawable/ic_menu_edit"
    android:layout_centerInParent="true"
    android:padding="10dp"
    android:background="@android:color/holo_blue_dark"/>

</com.andexert.library.RippleView>

8
मैंने इसे काफी लंबे समय तक इस्तेमाल किया, लेकिन जब तक आप एंड्रॉइड 2.3 की ओर लक्ष्य नहीं करते हैं, तब तक मैं इसकी अनुशंसा नहीं करता हूं। यह छोटी गाड़ी है, लैगी है और बॉयलरप्लेट कोड बनाती है। और इस समय से 43% सभी डिवाइसों में Android 5 या 6 है, आप केवल selectableItemBackgroundएंड्रॉइड 4 और इसके बाद के संस्करण को लक्षित करते समय चिपक सकते हैं।
0101100101

0

इसका सबसे अच्छा तरीका है:

    <ImageView
        android:id="@+id/ivBack"
        style="?attr/actionButtonStyle"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:padding="16dp"
        android:src="@drawable/ic_back_arrow_black"
        android:tint="@color/white" />

-4

पुस्तकालयों का उपयोग करना। यह उनमें से एक है। बस अपनी निर्भरता जोड़ें और प्रत्येक तत्व से पहले xml में नीचे दिए गए कोड को डालें, जिन्हें रिपल इफेक्ट की आवश्यकता है:

<com.balysv.materialripple.MaterialRippleLayout
android:id="@+id/ripple"
android:layout_width="match_parent"
android:layout_height="wrap_content">

4
ओह कृपया, यह सबसे अच्छा तरीका नहीं है क्योंकि आपके पास इस पर कम नियंत्रण है और यह एंड्रॉइड एसडीके में व्यापक रूप से समर्थित है। यदि कोई इसे पढ़ता है तो मैं या तो @Bikesh या कार्तिक की टिप्पणी को देखने की सलाह देता हूं यदि आप रंग को नियंत्रित करना चाहते हैं।
डायोन सेगीजन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.