我对如何为正常按压实现涟漪效果有一些基本的了解。
How to set state_selected in ripple drawable
我想知道,我怎样才能达到如此长时间的涟漪效应。
很难从措辞中清楚地描述。我附上一个视频来展示这种效果。
https://www.youtube.com/watch?v=ebOYnGM0HCc
我可以知道如何实现如此长时间的涟漪效应吗?
这是正常的涟漪效果:https://www.youtube.com/watch?v=OJ_WRFy7pWM
使用常用方法实现。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="demo.org.myapplication.MainActivity">
<View
android:layout_width="250dp"
android:layout_height="250dp"
android:clickable="true"
android:background="?attr/selectableItemBackground" />
</LinearLayout>
答案 0 :(得分:0)
这是材质设计的涟漪效应本身的默认行为。您可以使用xml添加此效果,也可以通过添加视图?attr/selectableItemBackground
的背景或前景来简单地添加此效果。请记住,要使其工作,视图必须具有onClickListener设置。否则,您将无法看到效果。
答案 1 :(得分:0)
你可以计算视图的宽度和高度,你可以像下面的代码一样开始动画。这段代码将从中间开始动画。
button.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
int finalRadius=(int)Math.hypot(v.getWidth()/2,v.getHeight()/2);
Animator anim= null;
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP) {
anim = ViewAnimationUtils.createCircularReveal(v,v.getWidth()/2,v.getHeight()/2,0,finalRadius);
anim.setDuration(400);
anim.start();
}
return true;
}
});