如何在Android上设置textview或imageview的连锁反应?
我想在Android Studio中为textview和imageview设置一个连锁效果。 我该怎么做?
参考: 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" />
如果你想把纹波限制在TextView / ImageView的大小上:
<TextView android:background="?attr/selectableItemBackground" android:clickable="true"/>
(我认为它看起来更好)
你可以使用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(); } });
停止animation:
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" />
将其添加到drawable中
<?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 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>
最好的方法是使用库。 这是其中之一。 只需添加它的依赖关系,并在每个需要涟漪效应的元素之前将下面的代码放在xml中:
<com.balysv.materialripple.MaterialRippleLayout android:id="@+id/ripple" android:layout_width="match_parent" android:layout_height="wrap_content">
除@Bikesh M Annur的回答外,请务必更新您的支持库。 以前我使用23.1.1,没有发生任何事情。 更新到23.3.0做了伎俩。