0

を使ってキャンバスに何かを描きますSurfaceView。ユーザーが完了したら、surfaceView をキャンセルする方法を定義するにはどうすればよいですか? 以下は私のSurfaceViewの実装です。DrawOnTopクラスにはがありますが、クラスonDraw()内のすべての変数を初期化しますPreview

public class Preview extends SurfaceView implements SurfaceHolder.Callback {
    SurfaceHolder mHolder;

    DrawOnTop mDrawOnTop;
    boolean mFinished;

    Preview(Context context, DrawOnTop drawOnTop) {
        super(context);

        mDrawOnTop = drawOnTop;
        mFinished = false;

        // Install a SurfaceHolder.Callback so we get notified when the
        // underlying surface is created and destroyed.
        mHolder = getHolder();
        mHolder.addCallback(this);
        mHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
    }

    public void surfaceCreated(SurfaceHolder holder) {

        //I set the bitmaps etc here
        mDrawOnTop.mBitmap = Bitmap.createBitmap(mDrawOnTop.mImageWidth,
                mDrawOnTop.mImageHeight, Bitmap.Config.ARGB_8888);

        mDrawOnTop.mBitmap.setPixels(mDrawOnTop.mRGBData, 0,
                mDrawOnTop.mImageWidth, 0, 0, mDrawOnTop.mImageWidth,
                mDrawOnTop.mImageHeight);
        Button x = new Button(getContext());
    x.setText("Hi");
    x.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {


        }

    });
        mDrawOnTop.invalidate();

    }

    public void surfaceDestroyed(SurfaceHolder holder) {

        mFinished = true;

    }

    public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) {

    }

}

編集:

いくつかの調査の結果、 setContentView を使用して必要なアクティビティに戻す必要があることがわかりました。

4

1 に答える 1

1

ビューを非表示にするには、visibility を invisible に設定します

setVisibility(this.Invisible);
于 2013-09-13T05:10:33.533 に答える