少年乘勇气,百战过乌孙。这篇文章主要讲述Invalidate()不会在Xamarin.Android中调用OnDraw()相关的知识,希望能为你提供帮助。
在我的代码中,我使用onTouchEvent()根据我的触摸向下/向上绘制不同的图像。
下面是我的代码示例。
当我在touch_Down中执行Invalidate()时,它不会立即调用onDraw(),而是在touch_Up完成后调用它。所以我总是在OnDraw()之后看到我的touch_Up图像。
请帮忙。
private void MyView_Touch(object sender, TouchEventArgs e)
{
if (e.Event.Action == MotionEventActions.Down)
{
SetSelectedPart(Resource.Drawable.Green);
}
else if (e.Event.Action == MotionEventActions.Up)
{
SetSelectedPart(Resource.Drawable.Blue);
}
}private void SetSelectedPart(int resourceId)
{
myDrawable = Context.Resources.GetDrawable(resourceId, null);
Invalidate();
}protected override void OnDraw(Canvas canvas)
{
myDrawable.Draw(canvas);
}
答案我已经测试了你的代码。调用OnDraw方法。我认为没有显示图片的原因是你没有使用
SetBounds()
方法。【Invalidate()不会在Xamarin.Android中调用OnDraw()】例如:
protected override void OnDraw(Canvas canvas)
{
if (myDrawable != null)
{
myDrawable.SetBounds(0, 0, canvas.Width, canvas.Height);
myDrawable.Draw(canvas);
}
}
推荐阅读
- Xamarin Android - 找不到.so文件
- 在调试模式下运行的同一Android应用程序在发布模式下崩溃
- IE 11无法找到运行Applet的Java插件
- Angular 5 App在IE 10中不起作用
- Okta教程(appBaseUrl丢失)
- Android - 将搜索传递给片段
- 在空对象引用Error上获取'getActivity()。getApplication()'
- 我正在尝试在android studio上创建标签片段
- Android 9 Pie崩溃(com.google.android.gms ... ClassNotFoundException)