Handwritingactivity. Java
package xiaosi.handWriting;import android.app.Activity;import android.app.AlertDialog;import android.content.DialogInterface;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;public class HandWritingActivity extends Activity{/** Called when the activity is first created. */private HandWrite handWrite = null;private Button clear = null;@Overridepublic void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.main);handWrite = (HandWrite)findViewById(R.id.handwriteview);clear = (Button)findViewById(R.id.clear);clear.setOnClickListener(new clearListener());} private class clearListener implements OnClickListener{public void onClick(View v){handWrite.clear();}}}
Handwrite. Java
public class HandWrite extends View{ private Paint paint = null; private Bitmap originalBitmap = null; private Bitmap new1Bitmap = null; private Bitmap new2Bitmap = null; private float clickX = 0,clickY = 0; private float startX = 0,startY = 0; private boolean isMove = true; private boolean isClear = false; private int color = Color.GREEN; private float strokeWidth = 2.0f;public HandWrite(Context context, AttributeSet attrs){super(context, attrs);originalBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.girl_a);new1Bitmap = Bitmap.createBitmap(originalBitmap);} public void clear(){ isClear = true; new2Bitmap = Bitmap.createBitmap(originalBitmap); invalidate(); } public void setstyle(float strokeWidth){ this.strokeWidth = strokeWidth; }@Overrideprotected void onDraw(Canvas canvas){super.onDraw(canvas);canvas.drawBitmap(HandWriting(new1Bitmap), 0, 0,null);}public Bitmap HandWriting(Bitmap originalBitmap){Canvas canvas = null;if(isClear){canvas = new Canvas(new2Bitmap);}else{canvas = new Canvas(originalBitmap);}paint = new Paint();paint.setStyle(Style.STROKE);paint.setAntiAlias(true);paint.setColor(color);paint.setStrokeWidth(strokeWidth);if(isMove){canvas.drawLine(startX, startY, clickX, clickY, paint);}startX = clickX;startY = clickY;if(isClear){return new2Bitmap;}return originalBitmap;}@Overridepublic boolean onTouchEvent(MotionEvent event){clickX = event.getX();clickY = event.getY();if(event.getAction() == MotionEvent.ACTION_DOWN){isMove = false;invalidate();return true;}else if(event.getAction() == MotionEvent.ACTION_MOVE){isMove = true;invalidate();return true;}return super.onTouchEvent(event);} }
Main. xml
<? XML version = "1.0" encoding = "UTF-8"?> <Linearlayout xmlns: Android = "http://schemas.android.com/apk/res/android" Android: layout_width = "fill_parent" Android: layout_height = "fill_parent" Android: Orientation = "vertical"> <xiaosi. handwriting. handwrite Android: Id = "@ + ID/handwriteview" Android: layout_width = "fill_parent" Android: layout_height = "380dp"/> <linearlayout Android: layout_width = "fill_parent" Android: layout_height = "fill_parent" Android: Orientation = "horizontal" Android: gravity = "center_horizontal"> <button Android: Id = "@ + ID/clear" Android: layout_width = "200dp" Android: layout_height = "wrap_content" Android: text = "clear screen"/> </linearlayout>