我有一个圆圈的图片。我想首先将它显示给用户。
在CountDownTimer
的{{1}}方法中,我希望它以循环方式逐个扇区地顺利消失。下面的图片解释了我想要更好的方式:
灰色区域实际上是透明的。
在onTick()
的{{1}}中,图片应完全消失。
1)我想这可以使用onFinish()
来完成。我必须计算角度,绘制圆弧并用透明色填充圆形图像的那个扇区,对吗?
CountDownTimer
2)我怀疑可能有更好的方法来实现这一目标。我对Android Canvas.drawArc()
没有任何经验。我可以从更有经验的人那里得到建议吗?
答案 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
内时,这就是我想要做的事情,您可以获得问题所示的动画。