在LongClickListener事件上展开透明圆圈动画

时间:2017-12-02 14:33:02

标签: java android animation android-animation

在我的主要活动中,我设置了2个ImageView个视图,并绑定了OnLongClickListener个evenets。现在我想在事件发生时添加从这些视图中间扩展的透明红色圆圈的动画。

我还在那些调用OnTouchListener字段的视图上添加了MotionEvent.ACTION_UP个事件,以检测其他功能的点击发布情况,我希望这会在点击时立即消失被释放。

因此,当用户点击视图并按住它时,圆圈会以慢动画方式开始扩展到某个点,并在发布时消失。

我该怎么做呢?它太具体了,我自己找不到任何东西,所以我不得不问。

1 个答案:

答案 0 :(得分:0)

我做了一些挖掘,并使用animate().scaleXByanimate().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倍所需的时间。

之后,在触发onTouchListener的{​​{1}}事件中,我添加了这段代码,以便使用MotionEvent.ACTION_UP方法撤消并消失。

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方法中并且延迟精确到动画的持续时间非常重要,以便在缩回到原始大小时使其消失。