关于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