Android 小项目之画板

欢迎加入我的交流群: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;
}

}

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。