android实现简单的画画板
16lz
2022-01-13
画画板实现起来其实很简单,我们只需要利用android给我们提供的Canvas类来操作就可以实现简单的画画功能
直接看代码,注释都写清楚了
public class MainActivity extends Activity {private ImageView iv;private Bitmap baseBitmap;private Canvas canvas;private Paint paint;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);this.iv = (ImageView) this.findViewById(R.id.iv);// 创建一张空白图片baseBitmap = Bitmap.createBitmap(480, 640, Bitmap.Config.ARGB_8888);// 创建一张画布canvas = new Canvas(baseBitmap);// 画布背景为灰色canvas.drawColor(Color.GRAY);// 创建画笔paint = new Paint();// 画笔颜色为红色paint.setColor(Color.RED);// 宽度5个像素paint.setStrokeWidth(5);// 先将灰色背景画上canvas.drawBitmap(baseBitmap, new Matrix(), paint);iv.setImageBitmap(baseBitmap);iv.setOnTouchListener(new OnTouchListener() {int startX;int startY;@Overridepublic boolean onTouch(View v, MotionEvent event) {switch (event.getAction()) {case MotionEvent.ACTION_DOWN:// 获取手按下时的坐标startX = (int) event.getX();startY = (int) event.getY();break;case MotionEvent.ACTION_MOVE:// 获取手移动后的坐标int stopX = (int) event.getX();int stopY = (int) event.getY();// 在开始和结束坐标间画一条线canvas.drawLine(startX, startY, stopX, stopY, paint);// 实时更新开始坐标startX = (int) event.getX();startY = (int) event.getY();iv.setImageBitmap(baseBitmap);break;}return true;}});}public void save(View view) {try {File file = new File(Environment.getExternalStorageDirectory(),System.currentTimeMillis() + ".jpg");OutputStream stream = new FileOutputStream(file);baseBitmap.compress(CompressFormat.JPEG, 100, stream);stream.close();// 模拟一个广播,通知系统sdcard被挂载Intent intent = new Intent();intent.setAction(Intent.ACTION_MEDIA_MOUNTED);intent.setData(Uri.fromFile(Environment.getExternalStorageDirectory()));sendBroadcast(intent);Toast.makeText(this, "保存图片成功", 0).show();} catch (Exception e) {Toast.makeText(this, "保存图片失败", 0).show();e.printStackTrace();}}}
简单的布局文件
<RelativeLayout 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" tools:context=".MainActivity" > <Button android:id="@+id/button1" android:onClick="save" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:text="保存图片" /> <ImageView android:layout_above="@id/button1" android:id="@+id/iv" android:layout_width="match_parent" android:layout_height="match_parent" /></RelativeLayout>
再来个权限
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
上两张我画的高端大气上档次的图片。。。。
更多相关文章
- Android(安卓)背景图片重复平铺
- android上一些方法的区别和用法的注意事项
- Android之——Surface、SurfaceView与SurfaceHolder.Callback初
- Android(安卓)之多点触摸 手势拉伸放大缩小图片 并在ImageView上
- Android有效解决加载大图片时内存溢出的问题
- 【Android】Android实现截取当前屏幕图片并保存至SDCard
- android 10.0拍照显示并上传服务器
- android调用camera实现自定义照相
- Android异步加载图片,并缓存到SD卡