一、项目目录结构

二、activity_main.xml界面

三、activity_main.xml代码

<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" ><ImageViewandroid:id="@+id/iv"android:layout_width="wrap_content"android:layout_height="wrap_content" /><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:layout_below="@id/iv"android:orientation="horizontal" ><Buttonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:onClick="click1"android:text="红色" /><Buttonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:onClick="click2"android:text="变粗" /><Buttonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:onClick="click3"android:text="保存" /></LinearLayout></RelativeLayout>

四、MainActivity.java代码

package com.zgs.paint;import java.io.File;
import java.io.FileOutputStream;import android.app.Activity;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.Bitmap.CompressFormat;
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.Bundle;
import android.os.Environment;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;
import android.widget.ImageView;public class MainActivity extends Activity {private Bitmap srcBitmap;private ImageView iv;private Bitmap copyBitmap;private Canvas canvas;private Paint paint;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);//[1]找到imageview  显示我们画的内容 iv = (ImageView) findViewById(R.id.iv);//[2]把bg转换成bitmap srcBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.bg);//[2.1]创建模板 copyBitmap = Bitmap.createBitmap(srcBitmap.getWidth(), srcBitmap.getHeight(), srcBitmap.getConfig());//[2.2]以copybitmap为模板  创建一个画布 canvas = new Canvas(copyBitmap);//[2.3]创建一个画笔 paint = new Paint();//[2.4]开始作画 canvas.drawBitmap(srcBitmap, new Matrix(), paint);//[3]把copybitmap显示到iv上 iv.setImageBitmap(copyBitmap);//[4]给iv设置一个触摸事件 iv.setOnTouchListener(new OnTouchListener() {int startX = 0;int startY = 0;@Overridepublic boolean onTouch(View v, MotionEvent event) {//[5]获取手指触摸的事件类型 int action = event.getAction();//[6]具体判断一下是什么事件类型 switch (action) {case MotionEvent.ACTION_DOWN: //按下 //[7]获取手指按下坐标 startX = (int) event.getX();startY= (int) event.getY();System.out.println("按下:"+startX+"---"+startY);break;case MotionEvent.ACTION_MOVE://移动 //[8]获取停止的坐标  int stopX = (int) event.getX();int stopY = (int) event.getY();System.out.println("移动:"+stopX+"---"+stopY);//[9]画线 canvas.drawLine(startX, startY, stopX, stopY, paint);//[9.1]更新一下起点坐标 startX = stopX;startY = stopY;//[10]记得更新ui iv.setImageBitmap(copyBitmap);break;case MotionEvent.ACTION_UP: //抬起;break;}//★★★★★只有返回true,MotionEvent.ACTION_MOVE和MotionEvent.ACTION_UP才能被执行return true;}});}//点击按钮让画笔的颜色 变成红色 public void click1(View v) {//设置画笔颜色paint.setColor(Color.RED);}//让画笔颜色变粗public void click2(View v) {//设置画笔的宽度paint.setStrokeWidth(15);}//保存大作 public void click3(View v) {/*** format 保存图片的格式 * * quality 保存照片的质量*/try {File file = new File(Environment.getExternalStorageDirectory().getPath(),"dazuo.png");FileOutputStream fos = new FileOutputStream(file);copyBitmap.compress(CompressFormat.PNG, 100, fos);//发送一条sd卡挂载上来的广播 欺骗一下系统图库应用 说sd卡被挂载了 你去加载图片吧Intent intent = new Intent();//设置actionintent.setAction(Intent.ACTION_MEDIA_MOUNTED);intent.setData(Uri.fromFile(Environment.getExternalStorageDirectory()));  //发送无序广播sendBroadcast(intent);fos.close(); //关闭流} catch (Exception e) {e.printStackTrace();}}}

注意:上面的保存方法,在4.4以前都没问题,4.4以后不行,解决方法待查找

五、AndroidManifest.xml代码

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"package="com.zgs.paint"android:versionCode="1"android:versionName="1.0" ><uses-sdkandroid:minSdkVersion="16"android:targetSdkVersion="22" /><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /><applicationandroid:allowBackup="true"android:icon="@drawable/ic_launcher"android:label="@string/app_name"android:theme="@style/AppTheme" ><activityandroid:name=".MainActivity"android:label="@string/app_name" ><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity></application></manifest>

六、效果演示

android图片_画画板相关推荐

  1. Android之Canvas画画板

    前几篇都涉及到了Canvas,Paint,Bitmap的结合使用,这里就不多说了~ 现在我要写的是画画板这个项目~ 项目效果: 1.画笔的颜色的随意更改 2.画笔的大小也可以随着拖动条的拖动而改变 3 ...

  2. Android 图片选取画图案

    最近项目中要有一个需求,从相册中选取照片上传,后服务器返回照片返回宽高,然后在上面画矩形.以下是实现方式: 1:我们要在原有的图片上画东西,因此我们要将图片设置为bitmap,因项目需要图片无压缩.因 ...

  3. Android可滑动画板,Android 利用 Canvas 画画板

    首先新建一个项目工程,建立文件,如下图所示 首先配置页面布局文件activity_main.xml,如下图所示: xmlns:tools="http://schemas.android.co ...

  4. Android小应用-----画画板

    public class MainActivity extends Activity {private ImageView iv;float startX = 0;float startY = 0;/ ...

  5. Android 实现图片画画板

    本文主要讲述了Android 实现图片画画板 设计项目布局: <RelativeLayout xmlns:android="http://schemas.android.com/apk ...

  6. 学习android 画板源代码,Android实现画画板案例

    郑州app开发画画板案例.布局代码是三个button和一个imagesview下面是图片. 布局代码就不展示了.下面是java代码. package cn.xhhkj.image; import an ...

  7. Android可滑动画板,Android实现画画板案例

    本文实例为大家分享了Android实现画画板的具体代码,供大家参考,具体内容如下 ① 准备一个布局文件 xmlns:tools="http://schemas.android.com/too ...

  8. android实现简单的画画板

    画画板实现起来其实很简单,我们只需要利用android给我们提供的Canvas类来操作就可以实现简单的画画功能 直接看代码,注释都写清楚了 public class MainActivity exte ...

  9. Android简易实战教程--第二十四话《画画板》

    今天完成一个画画板. 首先来个布局: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android ...

最新文章

  1. 如何评价算法的好坏?
  2. Java JNI简单实现
  3. Android O: View的绘制流程(一): 创建和加载
  4. 如何巧妙的使用ArrayList的Clone方法
  5. P3934-Nephren Ruq Insania【欧拉定理,树状数组】
  6. centos初始配置
  7. 常用概率论矩阵论公式
  8. 如何自学python知乎-你们都是怎么学 Python 的?
  9. hdu 1588 Gauss Fibonacci
  10. 111 进程的创建和结束
  11. 【转】(Jquery)避免数据相加小数点后产生多位数和计算精度损失
  12. 进销存软件定制开发怎么做?
  13. 【软考 系统架构设计师】软件架构设计④ 基于架构的软件开发方法
  14. 配置本地yum源文件
  15. 中文转换为拼音插件guiHz2Py
  16. 使用Jquery制作精美的图片展示效果
  17. 点击一次变色,再点击变回原色
  18. 【流体机械原理及设计00】
  19. 使用360浏览器出现域名解析错误和有道词典连接不了网络的解决方法
  20. VBS 常用总汇 (http://blog.csdn.net/sgear/article/details/1380223)

热门文章

  1. USB协议中的返回包含义
  2. 高新企业认定的8大领域是哪些?
  3. 汉语拼音字母表(图片版)
  4. GBASE 8C——SQL参考 2 函数和操作符
  5. Pepper/Nao中级教程:第一章 如何用Python远程控制机器人
  6. Linux dd命令截取文件,linux使用dd命令快速生成大文件
  7. 技术人员分享的好处,why not?
  8. linux python源码安装,linux上源码安装python
  9. 在Corex-M3开发板上移植.Net Micro Framework系列文章
  10. 笔记本电脑一直插着电源对电池好不好?