我的Android应用程序出现问题。我创建了自定义视图(http://syedwasihaider.github.io/blog/2015/07/12/XamarinViews/直到第2步),覆盖onDraw并绘制黑色屏幕和文本“Draw {i}”,其中i
是每次onDraw发生时递增的数字。我想调用这个方法30次/秒(或60次),所以我设置了每33毫秒导致Invalidate()的计时器。无效不会导致OnDraw
但Invalidate()根本不会导致onDraw! (这不像是在无效和撤回之间的延迟,撤回根本不会被调用)。我试图设置SetWillNotDraw(false)
,但它没有奏效。这里是我的代码:
class DrawCanvas : View
{
Context mContext;
public DrawCanvas(Context context) : base(context)
{
init(context);
}
public DrawCanvas(Context context, IAttributeSet attrs) : base(context, attrs)
{
init(context);
}
public DrawCanvas(Context context, IAttributeSet attrs, int defStyle) : base(context, attrs, defStyle)
{
init(context);
}
private void init(Context ctx)
{
mContext = ctx;
black = new Paint() { Color = Color.Black };
white = new Paint() { Color = Color.White };
Timer timer = new Timer(33);
timer.Elapsed += Timer_Elapsed;
timer.Start();
}
private void Timer_Elapsed(object sender, ElapsedEventArgs e)
{
Invalidate();
}
int i = 0;
Paint black;
Paint white;
private void TestDraw(Canvas canvas)
{
canvas.DrawRect(0, 0, Width, Height, black);
canvas.DrawText("Draw " + i, 10, 10, white);
i++;
}
protected override void OnDraw(Canvas canvas)
{
TestDraw(canvas);
}
}
如何,我不是:
呼叫的onDraw每个为33ms
OR
获得画布中的onDraw方法使用? (试图保存在onDraw中作为参数的画布并稍后使用它,但出现了一些奇怪的行为,所以它不起作用)。
它的工作原理!真的很感谢,它真棒:) – SoptikHa