欢迎加入我的交流群:386451316
这几天真的累死了,今天又爬起来写了个小项目 其实没什么技术的 写得玩的 之前写过一个 不这好多了程序 不记得放那里了 好不说了
开始上代码把
还是上个图把 不然没人看了。
布局代码:
<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.striver.drawingeboard.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>
代码文件
主activity
public class MainActivity extends Activity {
public 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 v) {
// TODO Auto-generated method stub
view.clear();
}
});
}
}
自定义view类
/**
* 自定义画版
* @author Striver_zw
* Date 2014-12-26
*/
public class MyView extends SurfaceView implements Callback,OnTouchListener{
private Paint p = new Paint();
private Path path = new Path();//路径
public MyView(Context context, AttributeSet attrs) {
super(context, attrs);
// 回调函数
getHolder().addCallback(this);
//初始化控件
p.setColor(Color.BLUE);
p.setTextSize(15);
p.setAntiAlias(true);
p.setStyle(Style.STROKE);
//监听
setOnTouchListener(this);
}
public void draw(){
//锁定画布
Canvas canvas = getHolder().lockCanvas();
//画布颜色
canvas.drawColor(Color.WHITE);
canvas.drawPath(path, p);
//解锁画布
getHolder().unlockCanvasAndPost(canvas);
}
// public MyView(Context context) {
// super(context);
// // TODO Auto-generated constructor stub
// }
//清除画布
public void clear(){
path.reset();//把路径清除
draw();
}
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width,
int height) {
//开始就调用画布
draw();
}
@Override
public void surfaceCreated(SurfaceHolder holder) {
// TODO Auto-generated method stub
}
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
// TODO Auto-generated method stub
}
//移动事件
@Override
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN://按下事件
path.moveTo(event.getX(), event.getY());
draw();
break;
case MotionEvent.ACTION_MOVE://移动事件
path.lineTo(event.getX(), event.getY());
draw();
break;
}
return true;
}
}