使图像以圆形方式消失

时间:2014-08-01 12:39:20

标签: android android-canvas drawable countdowntimer

我有一个圆圈的图片。我想首先将它显示给用户。

CountDownTimer的{​​{1}}方法中,我希望它以循环方式逐个扇区地顺利消失。下面的图片解释了我想要更好的方式:

frames

灰色区域实际上是透明的。

onTick()的{​​{1}}中,图片应完全消失。

1)我想这可以使用onFinish()来完成。我必须计算角度,绘制圆弧并用透明色填充圆形图像的那个扇区,对吗?

CountDownTimer

2)我怀疑可能有更好的方法来实现这一目标。我对Android Canvas.drawArc()没有任何经验。我可以从更有经验的人那里得到建议吗?

2 个答案:

答案 0 :(得分:1)

fill that sector of the circle image with transparent color, right? 错误
如果您将透明颜色放在任何其他颜色上,结果是您将看到底层颜色(因为透明在定义时是不可见的)。
相反,您可以擦除并重绘已填充的(插图中的黑色)形状。

OR

如果背景是纯色,则有一次机会 然后你可以使用与背景颜色相同的颜色透明度/擦除来覆盖带有扩展弧形的圆圈(图中的灰色部分)。

答案 1 :(得分:0)

我使用接受的答案中描述的方式解决了我的问题,但如果其他人需要更详细的描述,这里是:

此处的关键字为LayerDrawable。作为一名中级Android开发人员,这就是我想要自己的想法,我感到惭愧的是根本没有听到这个概念。显然,您可以创建分层的drawable并将其显示在ImageView

以下是示例:

Drawable [] layers = new Drawable[2];

ShapeDrawable d0 = new ShapeDrawable(new ArcShape(270, angle));

Bitmap bm = ...
Drawable d1 = new BitmapDrawable(getResources(),bm);

layers[0]=d1;
layers[1]=d0;

LayerDrawable composite = new LayerDrawable(layers);
iv_cdt.setBackground(composite);  //iv_cdt is an imageView

当您将此代码段放在CountDownTimer内时,这就是我想要做的事情,您可以获得问题所示的动画。