【问题标题】:Expanding transparent circle animation on a LongClickListener event在 LongClickListener 事件上展开透明圆形动画
【发布时间】:2017-12-02 23:28:58
【问题描述】:
在我的主要活动中,我设置了 2 个 ImageView 视图,并绑定了 OnLongClickListener 事件集。现在我想添加一个在事件发生时从这些视图中间扩展的透明红色圆圈的动画。
我还在那些调用MotionEvent.ACTION_UP 字段的视图上添加了OnTouchListener 事件,以检测其他功能的点击释放,我希望这可用于在释放点击时使圆圈立即消失。
所以当用户点击视图并按住它时,圆圈开始以缓慢的动画方式扩大到某个点,当他释放时它消失了。
我该怎么做呢?太具体了,我自己找不到任何东西,所以我不得不问。
【问题讨论】:
标签:
java
android
animation
android-animation
【解决方案1】:
我进行了一些挖掘,并使用animate().scaleXBy和animate().scaleYBy方法找到了一个简单的解决方案。
ivRedCircle2.setVisibility(View.VISIBLE);
ivRedCircle1.animate().scaleXBy(4).setDuration(2500);
ivRedCircle1.animate().scaleYBy(4).setDuration(2500);
ivRedCircle1 是对我希望应用此动画的视图之一的引用。准确地说,这是一个红色圆圈的图片,位于另一个 ImageView 的顶部。最初设置为不可见,当onLongClick事件被触发时,图像出现并开始扩大4倍大小。 2500 是 2500 毫秒或 2.5 秒的持续时间,即大小增长 4 倍所需的时间。
之后,在MotionEvent.ACTION_UP被触发的onTouchListener事件中,我添加了这段代码,通过setVisibility(View.INVISIBLE)方法使其收回消失。
ivRedCircle1.animate().scaleXBy(-4).setDuration(1000);
ivRedCircle1.animate().scaleYBy(-4).setDuration(1000);
final Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
ivRedCircle1.setVisibility(View.INVISIBLE);
}
}, 1000);
将setVisibility 放在run() 方法中很重要,其延迟与动画的持续时间完全相同,以使其在回缩到原始大小时消失。