我有一個簡單的程序在Android上繪製用戶觸摸。使用MySurfaceView和main.xml(安卓)
這裏的主要活動:
public class DrawingActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//setContentView(new MySurfaceView(this)); - this way it works, but
// i'm interseted in previous
}
}
這是main.xml中:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.shchurov.MySurfaceView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/msv"
/>
</LinearLayout>
和這裏的MySurfaceView類:
public class MySurfaceView extends SurfaceView
implements SurfaceHolder.Callback {
private SurfaceHolder surfaceHolder;
Canvas canvas=null;
Paint paint=new Paint();
public MySurfaceView(Context context) {
super(context);
getHolder().addCallback(this);
paint.setColor(Color.GREEN);
paint.setStyle(Style.FILL);
}
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width,
int height) {
}
@Override
public void surfaceCreated(SurfaceHolder holder) {
this.surfaceHolder=holder;
}
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
}
public boolean onTouchEvent(MotionEvent event)
{
canvas=surfaceHolder.lockCanvas(null);
canvas.drawCircle(event.getX(), event.getY(), 10, paint);
surfaceHolder.unlockCanvasAndPost(canvas);
return true;
}
}
包是正確的,但由於某種原因它不沒有工作,任何人都可以幫忙嗎?
更新:如果我改變MySurfaceView以此爲榜樣,那麼它的工作原理:
public class MySurfaceView extends View
{
Paint paint;
public SomeView(Context context, AttributeSet attrs)
{
super(context, attrs);
paint = new Paint();
paint.setColor(Color.YELLOW);
paint.setStyle(Style.FILL);
}
@Override
protected void onDraw(Canvas canvas)
{
canvas.drawCircle(20, 20, 20, paint);
}
}
嘗試使用fill_parent作爲表面視圖的高度和寬度。 –
感謝您的幫助,但它無法正常工作。有趣的時刻:如果我改變MySurfaceView的東西比它更簡單的工作 – user1049280