我基本上有一个用Canvas
修改过的ImageView,看起来像个cirlce。 (原始图像的尺寸为正方形(500x500))
想象起始位置的样子:
http://imgur.com/bvXdLoP
(红色是透明的,并借助Canvas
方法删除)
动画应该花费1000毫秒,并在此时间步骤中恢复原始图像。所以最后应该有一个平方。
换句话说,截止角是方形和圆形(以及图像中标记的红色)之间的差异,在大约1000毫秒内恢复步骤,带有一种展开的动画。
不知道如何实现这一点,所以我可以分享我用来切断角落的Canvas
方法(如果有帮助:X):
private Bitmap createCircleImage(Bitmap bitmap) {
Bitmap bmp;
bmp = Bitmap.createBitmap(bitmap.getWidth(),
bitmap.getHeight(), Bitmap.Config.ARGB_8888);
BitmapShader shader = new BitmapShader(bitmap,
BitmapShader.TileMode.CLAMP,
BitmapShader.TileMode.CLAMP);
float radius = bitmap.getWidth() / 2f;
Canvas canvas = new Canvas(bmp);
Paint paint = new Paint();
paint.setAntiAlias(true);
paint.setShader(shader);
canvas.drawCircle(bitmap.getWidth()/2,bitmap.getHeight()/2,bitmap.getHeight()/2, paint);
return bmp;
}
感谢任何帮助, 谢谢!
答案 0 :(得分:0)
有很多方法可以实现这种行为。例如,您可以创建自定义视图并覆盖其onDraw方法,例如
@Override
public void onDraw(Canvas canvas) {
canvas.drawCircle(viewWidth/2, viewHeight/2, currentRadius, paint);
}
然后你可以一点一点地增加半径并使视图无效。因为默认情况下视图会在其clipBounds上剪辑(除非你另外设置,否则你只能绘制内部视图宽度x viewheight矩形)你会得到效果你要的那个。然后你可以调整插值来实现更流畅和更自然的动画。
注意:位图着色器附加到绘图上(您已经知道要创建它的chow)。我没有在代码中包含它,因为出于性能原因你不应该在onDraw方法中初始化它。