1

ゲームハングマンを含むアプリケーションがあります。描画の責任について別のアクティビティを作成しました。コードは次のとおりです。

public class DrawWisielec extends View
{
    Paint paint;
    int choose;
    public DrawWisielec(Context context,int choose) 
    {
        super(context);
        this.choose = choose;
    }

    protected void onDraw(Canvas canvas)
    {
        canvas.drawRGB(0,0,0);
        Paint Circle = new Paint();
        Paint paint = new Paint();
        Circle.setARGB(255,255,255,255);
        Circle.setStyle(Paint.Style.STROKE);
        Circle.setStrokeWidth(5);
        paint.setARGB(255, 255, 255, 255);
        paint.setStrokeWidth(5);
        switch(choose)
        {
        case 1:
            {
                canvas.drawLine(50, 400, 100, 300, paint);
                break;
            }
        case 2:
            {
            canvas.drawLine(100, 300, 150, 400, paint);
            break;
            }
        case 3: canvas.drawLine(100, 300, 100, 50, paint);
        case 4:canvas.drawLine(100,50,300,50,paint);
        case 5:canvas.drawLine(300,50,300,100,paint);
        case 6:canvas.drawCircle(300, 150, 50, Circle);
        case 7:canvas.drawLine(300, 200, 300, 250, paint);
        case 8:canvas.drawLine(300, 250, 250, 200, paint);
        case 9:canvas.drawLine(300, 250, 350, 200, paint);
        case 10:canvas.drawLine(300, 250, 275, 330, paint);
        case 11:canvas.drawLine(300, 250, 325, 330, paint);
        }
        invalidate();
    }

コードが下にある別のアクティビティからの描画のさまざまな段階を切り替えるにはどうすればよいですか。

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.game_mode_wisielec);

    DrawLayout = (LinearLayout)findViewById(R.id.WisielecDrawLayout);
    DrawWisielec draw = new DrawWisielec(this, choose);
    DrawLayout.addView(draw);
4

1 に答える 1

2

DrawWisielecビューで invalidate() メソッドを呼び出す必要があります。

draw.setChoose(2); // Change stage of drawing to for example 2   
draw.invalidate(); // Redraw view

Androidのドキュメントによると:

public void invalidate () API レベル 1 で追加

ビュー全体を無効にします。ビューが表示されている場合、将来のある時点で onDraw(android.graphics.Canvas) が呼び出されます。これは、UI スレッドから呼び出す必要があります。非 UI スレッドから呼び出すには、postInvalidate() を呼び出します。

関心のあるメソッドを再度呼び出しonDraw()ます。これは UI スレッドから呼び出す必要があることに注意してください。

于 2013-03-23T08:18:19.787 に答える