Android画板:
本案例是一个简单的Android小应用,仅供大家学习
MyView.java
package com.example.drawboard;
import android.R.color;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Paint.Style;
import android.graphics.Path;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;
import android.view.SurfaceHolder;
import android.view.SurfaceHolder.Callback;
import android.view.SurfaceView;
public class MyView extends SurfaceView implements Callback,OnTouchListener{
private Paint paint = new Paint();//创建一个画笔对象
private Path path = new Path();//创建一个路径对象
public MyView(Context context, AttributeSet attrs) {
super(context, attrs);
// TODO Auto-generated constructor stub
getHolder().addCallback(this);//添加回调函数
paint.setColor(Color.RED);//设置画笔颜色
paint.setTextSize(10);//设置画笔粗细
paint.setAntiAlias(true);//清理锯齿
paint.setStyle(Style.STROKE);//设置画笔为空心
setOnTouchListener(this);//添加触摸监听事件
}
//定义绘画方法
public void draw() {
//添加画布并且锁定
Canvas canvas = getHolder().lockCanvas();
canvas.drawColor(Color.WHITE);//初始化画布的颜色为白色
canvas.drawPath(path, paint);
//清理画布
getHolder().unlockCanvasAndPost(canvas);
}
//定义清除画布方法
public void clear() {
path.reset();//路径重置,清除画布
draw();//如果不再次调用此方法,则清除画布之后,将不能再绘画
}
@Override
public void surfaceChanged(SurfaceHolder arg0, int arg1, int arg2, int arg3) {
// TODO Auto-generated method stub
}
@Override
public void surfaceCreated(SurfaceHolder arg0) {
// TODO Auto-generated method stub
draw();
}
@Override
public void surfaceDestroyed(SurfaceHolder arg0) {
// TODO Auto-generated method stub
}
@Override
public boolean onTouch(View arg0, MotionEvent event) {
// TODO Auto-generated method stub
//判断动作事件
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN://按下事件
path.moveTo(event.getX(), event.getY());//获取X和Y坐标
draw();//开始绘制
break;
case MotionEvent.ACTION_MOVE://移动事件
path.lineTo(event.getX(), event.getY());//获取移动时的x和y坐标
draw();//开始绘制
break;
}
return true;
}
}
MainActivity.java
package com.example.drawboard;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class MainActivity extends Activity {
private Button btn;
private MyView view;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn = (Button)findViewById(R.id.btn);
view = (MyView)findViewById(R.id.draw);
btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
view.clear();
}
});
}
}
activity_main.xml
<pre name="code" class="java"><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity" >
<com.example.drawboard.MyView
android:id="@+id/draw"
android:layout_width="fill_parent"
android:layout_height="0dp"
android:layout_weight="1" />
<Button
android:id="@+id/btn"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="清理画布"/>
</LinearLayout>
运行之后如图:
点击清理画布可以清除所画内容