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; @Override public 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; } @Override protected 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; } @Override public 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="清屏" /> </LinearLayout> </LinearLayout>
相关推荐
Android学习笔记(二)android studio基本控件及布局(实现图片查看器) Android学习笔记(三)android studio中CheckBox自定义样式(更换复选框左侧的勾选图像) Android学习笔记(四)Android 中Activity页面的...
Android学习笔记
Android学习笔记 Android学习笔记 Android学习笔记
Android 进阶,优化,学习笔记
android 学习笔记(全全整理),吧android学习笔记全部整理下来了,可以去好好学习学习
第一行代码 android学习笔记 修改完整版
《React进阶之路》系列学习笔记,包含自己对React的理解和使用建议,主要详解MobX项目实战。
Android学习笔记——获取网络图片并显示
Python进阶学习笔记
Android高级进阶学习下载,仅供学习使用。。。。。。。
Android 开发学习笔记,学习android的好资料
android 学习笔记 android 学习笔记 android 学习笔记
Java语言程序设计-进阶篇(原书第10版) 学习笔记 Java语言程序设计-进阶篇(原书第10版) 学习笔记 Java语言程序设计-进阶篇(原书第10版) 学习笔记 Java语言程序设计-进阶篇(原书第10版) 学习笔记 Java语言程序...
自己整理的Android学习笔记 都是一些小细节,有用
AndroidNote, Android 进阶笔记,包含常用的技术框架、博客社区、书籍等。
学习java和android的笔记 更容易学习android 资深学习android 具有大量学习的笔记 很多的错误 都是从细节开始学习的
狂神 Docker学习笔记 超详细从开始到进阶到补充
Python 进阶学习笔记
Android学习笔记(十三) 碎片 完整源码