我想在Android Studio中对textview和imageview设置波纹效果。我该怎么做?
我想在Android Studio中对textview和imageview设置波纹效果。我该怎么做?
Answers:
参考: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
vs vsselectableItemBackgroundBorderless
请参考下面的答案以获得涟漪效应。
在Textview或view上产生波纹:
android:clickable="true"
android:focusable="true"
android:foreground="?android:attr/selectableItemBackgroundBorderless"
Button或Imageview上的波纹:
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: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及更高版本时,您可以坚持使用。
使用库。这就是其中之一。只需添加其依赖项,并在需要波纹效果的每个元素之前将以下代码放在xml中:
<com.balysv.materialripple.MaterialRippleLayout
android:id="@+id/ripple"
android:layout_width="match_parent"
android:layout_height="wrap_content">