ฉันต้องการตั้งค่าเอฟเฟกต์ระลอกคลื่นในมุมมองข้อความและมุมมองภาพใน Android Studio ฉันจะทำมันได้อย่างไร?
ฉันต้องการตั้งค่าเอฟเฟกต์ระลอกคลื่นในมุมมองข้อความและมุมมองภาพใน Android Studio ฉันจะทำมันได้อย่างไร?
คำตอบ:
อ้างอิง: 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"
/>
android:background="?android:attr/selectableItemBackground"
Borderless
youtube.com/watch?v=wOjA8tS5sbc
หากคุณต้องการให้ระลอกคลื่นมีขนาดเท่ากับขนาดของ TextView / ImageView ให้ใช้:
<TextView
android:background="?attr/selectableItemBackground"
android:clickable="true"/>
(ฉันคิดว่ามันดูดีกว่า)
selectableItemBackground
vsselectableItemBackgroundBorderless
โปรดดูคำตอบด้านล่างสำหรับเอฟเฟกต์ระลอก
ระลอกใน Textview หรือมุมมอง:
android:clickable="true"
android:focusable="true"
android:foreground="?android:attr/selectableItemBackgroundBorderless"
ระลอกบนปุ่มหรือมุมมองภาพ:
android:foreground="?android:attr/selectableItemBackgroundBorderless"
selectableItemBackgroundBorderless
เป็น API 21+ ด้านล่างนี้คุณสามารถเลือกที่selectableItemBackground
จะหลีกเลี่ยงปัญหาความเข้ากันได้
คุณสามารถใช้android-ripple-background
เริ่มเอฟเฟกต์
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();
<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" />
ลองดู
ลองดู สิ่งนี้ใช้ได้ผลสำหรับฉัน
android:clickable="true"
android:focusable="true"
android:background="?android:attr/selectableItemBackground"
นอกเหนือจากคำตอบข้างต้นกำลังเพิ่มโฟกัสได้เพื่อหลีกเลี่ยงคำเตือนของตัวแก้ไข UI
android:background="?attr/selectableItemBackgroundBorderless"
android:clickable="true"
android:focusable="true"
ในกรณีของวิธีแก้ปัญหาที่ได้รับการโหวตอย่างดีที่โพสต์โดย @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"
เนื่องจาก:
" วิดเจ็ตที่ประกาศว่าสามารถคลิกได้ แต่ไม่ได้ประกาศว่าสามารถโฟกัสได้จะไม่สามารถเข้าถึงได้ผ่านทางแป้นพิมพ์ "
เพิ่ม
android:clickable="true"
android:focusable="true"
สำหรับ Ripple Effect
android:background="?attr/selectableItemBackgroundBorderless"
สำหรับ Selectable Effect
android:background="?android:attr/selectableItemBackground"
สำหรับเอฟเฟกต์ปุ่ม
android:adjustViewBounds="true" style="?android:attr/borderlessButtonStyle"
นอกจากคำตอบของ @Bikesh M Annur แล้วอย่าลืมอัปเดตไลบรารีสนับสนุนของคุณ ก่อนหน้านี้ฉันใช้ 23.1.1 และไม่มีอะไรเกิดขึ้น การอัปเดตเป็น 23.3.0 นั้นเป็นเคล็ดลับ
สำหรับการกระเพื่อมของวงกลม:
android:background="?attr/selectableItemBackgroundBorderless"
สำหรับการกระเพื่อมของสี่เหลี่ยมผืนผ้า:
android:background="?attr/selectableItemBackground"
หรือคุณสามารถลองใช้ไลบรารีนี้ (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>
selectableItemBackground
เมื่อกำหนดเป้าหมายเป็น Android 4 ขึ้นไป
วิธีที่ดีที่สุดในการเพิ่ม:
<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" />
การใช้ไลบรารี นี่คือหนึ่งในนั้น เพียงเพิ่มการอ้างอิงและใส่โค้ดด้านล่างใน xml ก่อนแต่ละองค์ประกอบที่ต้องการเอฟเฟกต์ระลอก:
<com.balysv.materialripple.MaterialRippleLayout
android:id="@+id/ripple"
android:layout_width="match_parent"
android:layout_height="wrap_content">