0

だから私は「描画可能なビュー」と呼ばれるビューを作成しました

 class DrawableView extends View{
        Context mContext;

        int touches=0,k,Xoffs,clicks=0;


  double x_1 = 0,x_2=0;

        private float mLastTouchX, mLastTouchY;

        public DrawableView(Context context) {
        super(context);
        mContext = context;
        }

....
    @Override
    protected void onDraw(Canvas canvas){

        Paint myPaint = new Paint(Paint.ANTI_ALIAS_FLAG);

canvas.drawColor(Color.BLUE);
myPaint.setColor(Color.WHITE);

canvas.drawCircle(200, 100, 20, myPaint);


    }

..... more code....

}

ondraw コマンド内でのみ無効にできます。つまり、「invalidate();」を呼び出す ondraw コマンドの最後でループします。

g_draw.invalidate(); を何度も呼び出そうとしました。または g_draw.postInvalidate(); (g_draw は、作成された Drawable View の名前です) 他のクラスやメインのアクティビティ クラスからでも動作しません。なぜ、どうすれば修正できますか?

ありがとう

4

2 に答える 2

0

DrawableViewクラスのどこかでinvalidate()を呼び出したい場合があります。たとえば、タッチイベントの後にビューを再描画する場合は、次のようにします。

public boolean onTouchEvent( MotionEvent event) {

    if(event.getAction() == MotionEvent.ACTION_UP){
        invalidate();
    }
}

これが私のパズルゲームで可動部分を描く方法です。

于 2011-04-12T06:50:12.537 に答える
0

継続的な onDraw の呼び出しが必要な場合は、別のスレッドで実行してみてください。スレッドを作成し、その run メソッドから postInvalidate を実行してみてください。

それはいつも私のために働いた。

もう1つのことは、一度円を描くと、次回は違いがなく、同じように見えるということです.

于 2011-04-12T06:40:20.093 に答える