Android 앱에 문제가 있습니다. 나는 사용자 정의보기 (http://syedwasihaider.github.io/blog/2015/07/12/XamarinViews/ 2 단계까지)를 작성하고 onDraw를 재정의하고 검은 화면과 텍스트 "Draw {i}"를 그립니다. 여기서 i
은 onDraw가 발생할 때마다 증가하는 숫자입니다. 이 메서드를 30 번/초 (또는 60) 호출하고 싶습니다. 그래서 33ms마다 Invalidate()를 발생시키는 타이머를 설정했습니다.무효화로 인해 OnDraw가 발생하지 않습니다.
하지만 Invalid를 사용하면 onDraw가 발생하지 않습니다. (무효화와 ondraw 사이의 지연과는 달리 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);
}
}
어떻게 수 I 중 하나를
전화 onDraw는 33ms마다
또는
가 된 onDraw 방법에 캔버스를 사용하기? (onDraw에서 매개 변수로 제공되는 캔버스를 저장하고 나중에 사용하려고 시도했지만 이상한 동작이 있었기 때문에 작동하지 않았습니다.)
! 정말로 감사합니다, 그 굉장한 :) – SoptikHa