0

coverflow アニメーションを表示する android アプリケーションがあります。coverflow 内で surfaceview を拡張するビューを使用したいのですが、このコードでは何も表示されませんでした。

public class CoverFlowView extends SurfaceView implements Callback {

    public CoverFlowView(Context context) {
        super(context);
    }

    public CoverFlowView(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
    }

    public CoverFlowView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }
    public void surfaceChanged(SurfaceHolder holder, int format, int width,
            int height) {

    }


    public void surfaceCreated(SurfaceHolder holder) {


         MyThread  myThread = new MyThread(holder);
         myThread.setFlag(true);
         myThread.start();
    }


    public void surfaceDestroyed(SurfaceHolder holder) {

    }


    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        Paint borderPaint = new Paint();
        borderPaint.setARGB(255, 255, 128, 0);
        borderPaint.setStyle(Paint.Style.STROKE);
        borderPaint.setStrokeWidth(4);
        canvas.drawRect(0, 0, getWidth() - 1, getHeight() - 1, borderPaint);
    }

    class MyThread extends Thread {
        boolean flag;
        SurfaceHolder myHolder;
        public MyThread(SurfaceHolder holder) {
            myHolder = holder;
        }

        public void setFlag(boolean myFlag) {
            flag = myFlag;
        }

        public void run() {
            Canvas canvas = null;
            while (flag) {
                try {
                    canvas = myHolder.lockCanvas();
                    synchronized (myHolder) {
                          invalidate();
                        }

                } finally {
                    if (canvas != null) {
                        myHolder.unlockCanvasAndPost(canvas);
                    }
                }
            }
        }
    }

}

ここで何が問題なのですか?私は Surfaceview を初めて使用します。

前もって感謝します。

4

1 に答える 1

0

このようにコードを書き直してください。正常に動作します。確認しました

public class CoverFlowView extends SurfaceView implements SurfaceHolder.Callback {

次に、コンストラクターを次のように変更します

public CoverFlowView(Context context) {
    super(context);
    getHolder().addCallback(this);
}
于 2012-10-04T10:29:09.400 に答える