在KeyboardView中循环绘制

时间:2012-12-26 09:45:29

标签: java android android-softkeyboard

我有课

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仅在您按键盘上时才能工作

1 个答案:

答案 0 :(得分: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()