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;
}

}

时间: 2024-10-11 22:55:48

Android 小项目之画板的相关文章

Android小项目蓝牙电子钟

Android小项目蓝牙电子钟 请支持原创,尊重原创,转载请注明出处:http://blog.csdn.net/kangweijian(来自kangweijian的csdn博客) Android蓝牙电子钟应用程序通过蓝牙设备发送消息给多功能数字电子钟,实现更新电子钟时间.设定电子钟监控时间.设定电子钟闹钟时间和调整电子钟时间误差等功能. 该应用程序的UI主要基于http://blog.csdn.net/kangweijian/article/details/43404801. 本章主要讲解蓝牙设

Android小应用-----画画板

public class MainActivity extends Activity { private ImageView iv; float startX = 0; float startY = 0; //获得一个可以被bitmap Bitmap bitmap = Bitmap.createBitmap(400, 400,Bitmap.Config.ARGB_8888); //创建画布 Canvas canvas = new Canvas(bitmap); //创建画笔 Paint pain

Android小项目之 where are you 监控

第一个小项目,实现监控短信,电话,以及响铃,震动,监控位置还没添加,会后续更新,先把代码贴上来 第一个是一个登录界面: xml: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/RelativeLayout1" a

一个特别适合新手练习的Android小项目——每日一妹纸

介绍 每天更新一张精选妹纸图片,第一版目前已完成,本项目会持续更新,遇到任何问题欢迎与我联系^_^ 为什么说这是一个特别适合新手练习的小项目? 服务器API接口功能丰富且无访问次数限制 包含了常见的网络通信,数据缓存等功能 使用了流行的Realm,Retrofit,Glide,Butterknife等开源项目,方便新手学习他们的使用 遵循Material Design规则 示例 项目当然是开源的啦,源码请戳下面的链接 https://github.com/SparkYuan/Meizi ----

【Android小项目】找不同,改编自&amp;quot;寻找房祖名&amp;quot;的一款开源小应用。

近期在微信朋友圈"寻找房祖名"和"万里寻刀"这类小游戏比較火.我试着写了一个android版本号的,里面全是一系列的形近字,实现原理非常easy:用一个GridView然后每一项做成正方形的就可以,点击到正确项改变GridView的行数和列数就可以. 一. 游戏说明: 找不同.一款区分形近字的Androidclient软件,旨在帮助用户认识和区分形近字: 二.游戏规则: 1.指定时间内通关数越多积分越高. 三.截图: 项目地址:FindDifferent

【Android小项目】找不同,改编自&quot;寻找房祖名&quot;的一款开源小应用。

最近在微信朋友圈"寻找房祖名"和"万里寻刀"这类小游戏比较火,我试着写了一个android版本的,里面全是一系列的形近字,实现原理很简单:用一个GridView然后每一项做成正方形的即可,点击到正确项改变GridView的行数和列数即可. 一. 游戏说明: 找不同,一款区分形近字的Android客户端软件,旨在帮助用户认识和区分形近字: 二.游戏规则: 1.指定时间内通关数越多积分越高: 三.截图: 项目地址:FindDifferent

CoolWeather Android小项目总结

这个项目是<第一行代码-Android>这本书里面的.最后一章.我是才学android三天,做这个更多是了解android项目是啥样子. 项目结构: db这个包类似ssh框架里的service,里面有关于数据库的操作. 值得注意的是,如何将CoolWeatherDB设为单例类:将构造方法私有化,并提供一个getInstance()方法来获取CoolWeatherDB的实例,这样就可以保证全局范围内只有一个CoolWeatherDB的实例. /** * 将构造方法私有化 */ private C

便签小项目总结

这一个月,自己开发了一个android小项目,xin便签的管理,它可以添加.删除.修改便签,同时还可以给便签设置相应的铃声,也可以添加删除文件夹,将便签移入或移出文件夹,通过小项目的开发,对自己之前学的android基础知识进行了一个小小的总结,基本上用到了Activity.Service.Content provider.BroadcastReceiver四大组件,以及数据库的操作SQLiteDatabase.Handler使用.ListView和自定义适配器的灵活运用.AlarmManage

Android开发不得不看的11个实战小项目

是不是想学Android开发(http://www.maiziedu.com/course/android-px/)却不知道如何下手?懂得一点点入门基础知识却无法应用到实际开发中?看相关资料觉得都懂了实际动手却发现什么都不懂?本地搭建Android开发环境太麻烦? 如果你有以上的各种问题,那么今天小编推荐的Android开发的这11个小项目,你一定要看!! 因为,这些实战项目都是基于google 官方的API Demos制作而成,而且全部配有Android在线开发环境,你可以随时动手跟着课程操作