0

我有课

public class OwnKeyboardView extends KeyboardView {
...
}

它有覆盖方法 OnDraw:

@Override
    public void onDraw(final Canvas canvas) {
    super.onDraw(canvas);
    mCanvas = draw_bitmap(canvas);
    Draw_Bitmap(mCanvas);
}

类 KeyboardView 继承的方法

从类 android.view.View

从类 java.lang.Object

从接口 android.graphics.drawable.Drawable.Callback

方法 OnDraw 在按任意键时工作。

当我下一步做:

public Canvas draw_bitmap(Canvas canvas) {

        if (mCanvas != null) {
        Log.i(TAG, "Copy Canvas");
        }
        return canvas;
    }

为什么在OnDraw方法中我可以使用mCanvas进行绘制,而其他方法则不能?我想在键盘上循环绘图,但 OnDraw 仅在您按下键盘时才起作用

4

1 回答 1

1

Yoy 可能会创建 Thread 并在 Thread 中手动调用 postInvalidate,就像这样。

注意:它会消耗大量电池

boolean flag=true;
private void Thread_Draw(){

       new Thread(new Runnable(){

            public void run(){

               while(flag)
               {
                    postInvalidate();
                    try{
                       Thread.sleep(45);
                    } catch(InterruptedException e)
                    {
                       e.printStackTrace();
                    }
               }
            }
      }
}

您可以从方法中停止线程

public void stopThread(boolean bool)
{
     flag=bool;
}

阅读 PostInvalidate yom 可以这样:http: //developer.android.com/reference/android/view/View.html#postInvalidate()

于 2013-11-13T06:29:57.207 回答