Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/204.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java ImageView展开动画_Java_Android_Xml_Animation_Canvas - Fatal编程技术网

Java ImageView展开动画

Java ImageView展开动画,java,android,xml,animation,canvas,Java,Android,Xml,Animation,Canvas,我基本上有一个ImageView,它通过Canvas进行了修改,看起来像一个cirlce。(原始图像的尺寸为正方形(500x500)) 想象一下起始位置的样子: (红色是透明的,在Canvas方法的帮助下被删除) 动画大约需要1000毫秒,在此期间,一步一步恢复到原始图片。因此,最终应该会再次出现一个sqaure 换言之,切割角是正方形和圆形之间的差异(图像中有红色标记),在大约1000毫秒内一步一步地恢复,并带有一种扩散的动画效果 对于如何实现这一点,我真的没有任何线索,所以我可以分享我用来

我基本上有一个ImageView,它通过
Canvas
进行了修改,看起来像一个cirlce。(原始图像的尺寸为正方形(500x500))

想象一下起始位置的样子:

(红色是透明的,在
Canvas
方法的帮助下被删除)

动画大约需要1000毫秒,在此期间,一步一步恢复到原始图片。因此,最终应该会再次出现一个sqaure

换言之,切割角是正方形和圆形之间的差异(图像中有红色标记),在大约1000毫秒内一步一步地恢复,并带有一种扩散的动画效果

对于如何实现这一点,我真的没有任何线索,所以我可以分享我用来切掉角落的
Canvas
方法(如果有帮助的话:X):

谢谢你的帮助,
谢谢大家!

实现这种行为的方法有很多。例如,您可以创建自定义视图并覆盖其onDraw方法,例如

@Override
public void onDraw(Canvas canvas) {
  canvas.drawCircle(viewWidth/2, viewHeight/2, currentRadius, paint);

}
然后你可以一点一点地增加半径并使视图无效。由于视图在默认情况下是可用的,因此将剪辑在其剪贴簿上(除非你另有设置,否则你只能在viewidth x viewheight矩形内绘制),你将得到你想要的效果。然后可以调整插值以获得更平滑、更自然的动画


注意:位图着色器已附加到绘制(您已经知道如何创建它)。我不在代码中包含它,因为出于性能原因,不应该在onDraw方法中初始化它

那么你发布了图片,起始位置是什么,最终位置是什么?@pskink正方形(图片的原始大小)由于我发布的canvas方法修改了正方形,它看起来像一个圆圈。这也是我当前的状态,效果很好。然而,我想要的是圆恢复到它原来的形状/大小(正方形),带有一种扩散的动画。:)对不起,我不知道你到底想要什么
@Override
public void onDraw(Canvas canvas) {
  canvas.drawCircle(viewWidth/2, viewHeight/2, currentRadius, paint);

}