2012-10-04 79 views
0

我有一个android应用程序显示coverflow动画。我想使用视图扩展coverflow里面的surfaceview,但这段代码没有显示任何东西。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。

在此先感谢。

回答

0

重写你这样的代码,然后它会正常工作,我检查了它

public class CoverFlowView extends SurfaceView implements SurfaceHolder.Callback { 

然后改变你的构造

public CoverFlowView(Context context) { 
    super(context); 
    getHolder().addCallback(this); 
} 
+0

是否有可能surfaceview添加到库? –

+0

我从来没有尝试过,可能有可能,你必须尝试自己:P。 –