Mah*_*esh 2 android callback invalidation drawable
我试图逐步改变OvalShape()的alpha值.为此我需要调用invalidate,以便它不断调用自身并使用增加的alpha值渲染自身.
但设置是错误的,因为我对此没有太多的了解..
public class xml_anim_testing_sub_class extends View {
private ShapeDrawable mDrawable;
int x = 10;
int y = 10;
int width = 300;
int height = 50;
int my_alpha = 255,add_to_my_alpha = 0;
public xml_anim_testing_sub_class(Context context) {
super(context);
}
protected void onDraw(Canvas canvas) {
x++;
mDrawable = new ShapeDrawable(new OvalShape());
mDrawable.getPaint().setColor(0xff74AC23);
mDrawable.setAlpha(my_alpha += add_to_my_alpha );
mDrawable.setBounds(x, y, x + width, y + height);
if (my_alpha == 0)
add_to_my_alpha = 1;
if (my_alpha == 255)
add_to_my_alpha = -1;
mDrawable.draw(canvas);
mDrawable.invalidateSelf();
}
}
Run Code Online (Sandbox Code Playgroud)
好的,我找到了解决方案,invalidate()但那么invalidate和之间的区别是postInvalidate什么?cos都在工作..
还有,有什么用?
mDrawable.invalidateSelf()(cb);
Run Code Online (Sandbox Code Playgroud)
而不是调用mDrawable.invalidateSelf(),调用postInvalidate()(对于视图本身).这将在当前完成之后安排另一个绘图过程.
此外,每次通过onDraw都不需要分配新的ShapeDrawable.只需在构造函数中分配一次.这将减少垃圾的产生.
| 归档时间: |
|
| 查看次数: |
7567 次 |
| 最近记录: |