Android实现画画板案例
程序员文章站
2022-03-23 13:40:01
本文实例为大家分享了android实现画画板的具体代码,供大家参考,具体内容如下
① 准备一个布局文件
本文实例为大家分享了android实现画画板的具体代码,供大家参考,具体内容如下
① 准备一个布局文件
<?xml version="1.0" encoding="utf-8"?> <linearlayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingbottom="@dimen/activity_vertical_margin" android:paddingleft="@dimen/activity_horizontal_margin" android:paddingright="@dimen/activity_horizontal_margin" android:paddingtop="@dimen/activity_vertical_margin" android:orientation="vertical" tools:context="com.example.it.mainactivity"> <linearlayout android:layout_width="match_parent" android:layout_height="wrap_content"> <button android:text="修改颜色" android:onclick="color" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <button android:text="粗细+1" android:onclick="size" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <button android:text="保存图片" android:onclick="save" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </linearlayout> <imageview android:id="@+id/iv_bg" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </linearlayout>
② 核心代码
package com.example.it; import android.content.intent; import android.graphics.bitmap; import android.graphics.bitmapfactory; import android.graphics.canvas; import android.graphics.color; import android.graphics.matrix; import android.graphics.paint; import android.net.uri; import android.os.environment; import android.os.systemclock; import android.support.v7.app.appcompatactivity; import android.os.bundle; import android.util.log; import android.view.motionevent; import android.view.view; import android.widget.imageview; import java.io.file; import java.io.filenotfoundexception; import java.io.fileoutputstream; public class mainactivity extends appcompatactivity { private final string tag = getclass().getsimplename(); private imageview iv_show; private bitmap copybm; private float x; private float y; private paint paint; private int paintsize = 1; private fileoutputstream fos; @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); //初始化控件 iv_show = (imageview) findviewbyid(r.id.iv_bg); //创建一个空白的bitmap bitmap bitmap = bitmapfactory.decoderesource(getresources(), r.drawable.bg); copybm = bitmap.createbitmap(bitmap.getwidth(), bitmap.getheight(), bitmap.getconfig()); //创建画布 final canvas canvas = new canvas(copybm); //使用画布绘制图片 paint = new paint(); canvas.drawbitmap(bitmap,new matrix(), paint); iv_show.setimagebitmap(copybm); //为画笔在屏幕上移动设置监听事件 iv_show.setontouchlistener(new view.ontouchlistener() { @override public boolean ontouch(view v, motionevent event) { //获取当前事件的类型 int action = event.getaction(); switch (action){ case motionevent.action_down: //如果是手指按下时,记录一下手指的位置 x = event.getx(); y = event.gety(); log.e(tag,x+"******"+y); break; case motionevent.action_move: //如果手指正在移动时 float x1 = event.getx(); float y1 = event.gety(); canvas.drawline(x,y,x1,y1, paint); x = x1; y = y1; log.e(tag,x1+"**********"+y1); break; case motionevent.action_up: break; } iv_show.setimagebitmap(copybm); return true; } }); } //修改颜色 public void color(view view) { paint.setcolor(color.red); } //修改线条粗细 public void size(view view) { paintsize+=1; paint.setstrokewidth(paintsize); } //保存图片 public void save(view view) { //设置图片保存的位置 file file = new file(environment.getexternalstoragedirectory(), systemclock.currentthreadtimemillis()+".png"); try { fos = new fileoutputstream(file); } catch (filenotfoundexception e) { e.printstacktrace(); } //设置参数保存的质量 copybm.compress(bitmap.compressformat.png,100,fos); //定义一个意图,通过发出广播告诉系统扫描指定的位置的文件 intent intent = new intent(); intent.setaction(intent.action_media_scanner_scan_file); intent.setdata(uri.fromfile(file)); sendbroadcast(intent); } }
③ 权限信息
<uses-permission android:name="android.permission.write_external_storage"/>
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
上一篇: CG-CTF SQL注入
下一篇: Android 5.0 实现水波扩散效果