当前位置:编程学习 > wap >>

关于surfaceView的问题

用了SurfaceView,但是在
lockCanvas和unlockCanvasAndPost画不出来图像
只是想在SurfaceView上画一个红色圆...

代码如下:
public class MySurfaceView extends SurfaceView implements Callback {

private SurfaceHolder sfh;
private Paint paint;

public MySurfaceView(Context context) {
super(context);
init(null, 0);
}

public MySurfaceView(Context context, AttributeSet attrs) {
super(context, attrs);

init(attrs, 0);
}

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

private void init(AttributeSet attrs, int defStyle) {
// Load attributes
sfh = this.getHolder();
sfh.addCallback(this);
paint = new Paint();
paint.setColor(Color.RED);
Log.v("tips","init");
setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
Log.v("tips","onTouch");
myDraw();
return false;
}
});
}


private void myDraw()
{
Log.v("tips","myDraw");
Canvas cv = sfh.lockCanvas(null);
cv.drawCircle(0, 0, 100,paint);
sfh.unlockCanvasAndPost(cv);
}

class DrawThread implements Runnable{

@Override
public void run() {
// TODO Auto-generated method stub
myDraw();
}

}

@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
Log.v("tips","onDraw");
}


@Override
public void surfaceChanged(SurfaceHolder arg0, int arg1, int arg2, int arg3) {
// TODO Auto-generated method stub
Log.v("tips","surfaceChanged");
}

@Override
public void surfaceCreated(SurfaceHolder arg0) {
// TODO Auto-generated method stub
Log.v("tips","surfaceCreated");
new Thread(new DrawThread()).start();
}

@Override
public void surfaceDestroyed(SurfaceHolder arg0) {
// TODO Auto-generated method stub
Log.v("tips","surfaceDestroyed");
}
}

xml文件:
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <com.example.progress.MySurfaceView
        android:layout_width="300dp"
        android:layout_height="300dp"
        android:background="#ccc"
        android:paddingBottom="40dp"
        android:paddingLeft="20dp"
        />

</FrameLayout>


Android Canvas SurfaceView
补充:移动开发 ,  Android
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,