效果:

清单:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"package="com.sg31.draw"android:versionCode="1"android:versionName="1.0" ><uses-sdkandroid:minSdkVersion="8"android:targetSdkVersion="21" />// 注意权限 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />      <uses-permission android:name="android.permission.READ_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>

布局:

<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"android:paddingBottom="@dimen/activity_vertical_margin"android:paddingLeft="@dimen/activity_horizontal_margin"android:paddingRight="@dimen/activity_horizontal_margin"android:paddingTop="@dimen/activity_vertical_margin"tools:context="com.sg31.draw.MainActivity" ><ImageViewandroid:id="@+id/iv"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="@string/hello_world" /><LinearLayout android:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="horizontal"android:layout_alignParentBottom="true"><Button android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="红色"android:onClick="redColorBtnClicked"/><Button android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="绿色"android:onClick="greenColorBtnClicked"/><Button android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="刷子"android:onClick="brushBtnClicked"/><Button android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="保存"android:onClick="savePicBtnClicked"/></LinearLayout></RelativeLayout>

代码:

package com.sg31.draw;import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.text.SimpleDateFormat;
import java.util.Date;import android.support.v7.app.ActionBarActivity;
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.Menu;
import android.view.MenuItem;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;
import android.widget.ImageView;public class MainActivity extends ActionBarActivity {private ImageView iv;int startX;int startY;private Canvas canvas;private Paint paint;private Bitmap bmCopy;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);// 加载画画板的背景图Bitmap bmSrc = BitmapFactory.decodeResource(getResources(),R.drawable.bg);bmCopy = Bitmap.createBitmap(bmSrc.getWidth(), bmSrc.getHeight(),bmSrc.getConfig());paint = new Paint();canvas = new Canvas(bmCopy);// 绘制canvas.drawBitmap(bmSrc, new Matrix(), paint);iv = (ImageView) findViewById(R.id.iv);iv.setImageBitmap(bmCopy);// 设置触摸侦听iv.setOnTouchListener(new OnTouchListener() {// 触摸屏幕时,触摸事件产生时,此方法调用@Overridepublic boolean onTouch(View v, MotionEvent event) {int action = event.getAction();switch (action) {// 用户手指摸到屏幕case MotionEvent.ACTION_DOWN:startX = (int) event.getX();startY = (int) event.getY();break;// 用户手指正在滑动case MotionEvent.ACTION_MOVE:int x = (int) event.getX();int y = (int) event.getY();canvas.drawLine(startX, startY, x, y, paint);// 每次绘制完毕之后,本次绘制的结束坐标变成下一次绘制的初始坐标startX = x;startY = y;iv.setImageBitmap(bmCopy);break;// 用户手指离开屏幕case MotionEvent.ACTION_UP:break;}// true:告诉系统,这个触摸事件由我来处理// false:告诉系统,这个触摸事件我不处理,这时系统会把触摸事件传递给imageview的父节点return true;}});}public void redColorBtnClicked(View v) {paint.setColor(Color.RED);}public void greenColorBtnClicked(View v) {paint.setColor(Color.GREEN);}public void brushBtnClicked(View v) {paint.setStrokeWidth(7);}public void savePicBtnClicked(View v) {File file = new File("sdcard/"+tool_currentDateTime()+".png");FileOutputStream fos = null;try {fos = new FileOutputStream(file);} catch (FileNotFoundException e) {e.printStackTrace();}bmCopy.compress(CompressFormat.PNG, 100, fos);// 发送sd卡就绪广播,重新装载和扫描sd卡内的文件Intent intent = new Intent();// ACTION_MEDIA_SCANNER_SCAN_FILE.// ACTION_MEDIA_MOUNTED// MediaScannerConnection intent.setAction(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);intent.setData(Uri.fromFile(Environment.getExternalStorageDirectory()));sendBroadcast(intent);}public String tool_currentDateTime(){SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//设置日期格式System.out.println(df.format(new Date()));// new Date()为获取当前系统时间return df.format(new Date());}
}

android_65_简易画画板相关推荐

  1. Android开发笔记之简易画画板的制作

    如果有这样的需求,有多种颜色可供选择,通过seekbar调节画笔的粗细,实现在画板上涂鸦的功能.没有考虑其他的功能,只是对前面有关Android图像处理和Canvas的知识进行一个运用. 一.布局 三 ...

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

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

  3. 【Android】制作一个简易的画板

    前言 本文介绍使用Canvas.Paint.Path等原生API,实现一个简易的画板. 绘图原理 Paint Paint可以理解为我们现实中的画笔,在使用前我们需要对Paint进行初始化,比如颜色.画 ...

  4. java,制作简易画图板

    简易画图板 前些日子,我学习了关于xp系统简易画图板的制作,虽然我写的画图板功能不多,但这是我接触java以来完成的第一个项目,制作的时候感觉很艰难,有的时候明明知道思路,却因为不知道具体的方法而走了 ...

  5. java简易画图程序代码_java_简易画图板

    下面我将分享用Java制作简易画图板的过程. version 1 Draw.java Java代码 importjavax.swing.JFrame; /** * * @author yangzhen ...

  6. Java小程序之简易网络画板

    Java小程序之简易网络画板 一.前言: Java是一门网络编程语言,强大的网络可以让数据进行传送:今天,我们就小试牛刀,看看Java是如何进行网络传输数据的: 二.项目分析: 1.功能需求: 我们前 ...

  7. Windows Phone简易绘画板(续)

    Windows Phone简易绘画板:http://blog.csdn.net/crazy_frog/article/details/7565780 在原本的基础上,继续完善了清除墨迹和保存图片的功能 ...

  8. iOS_24_画画板(含取色板)

    终于效果例如以下: 一.简单说明1.使用一个数组 strokesArr(笔画数组)记录全部笔画.数组中保存的是一个个的笔画字典,一个字典就是一个笔画.笔画字典中有三项:笔画的大小.颜色.pointsA ...

  9. 简单的python画图代码_python opencv如何实现简易画图板 python opencv实现简易画图板代码...

    python opencv如何实现简易画图板?本篇文章小编给大家分享一下python opencv实现简易画图板代码,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看. 代码如下 ...

最新文章

  1. 2019智能手表推荐_智能手表一定越贵越好?试用过后这五款才真正值得推荐
  2. 这5种动态炫酷图,用Python就可以画!
  3. 简述ospf的工作原理_物联网水表工作原理简述
  4. mysql导出为lua配置表文件_利用lua生成一个导出数据库的bat脚本文件
  5. C#中调用Windows API的要点【转载】
  6. java neo4j_java连接neo4j
  7. c++ string 删除字符_算法笔记|(5)第二章C、C++的快速入门字符数组的存放方式string.h文件...
  8. POJ 1320 Street Numbers 解佩尔方程
  9. mysql 不同分区 同时insert_Mysql分区表的原理和优缺点
  10. Python_多元回归(一元回归)
  11. 如何将XML文件导入Excel中
  12. 特斯拉中国上调Model 3售价 涨价4500元起
  13. 金蝶KIS 13.0专业版破解方法破解安装流程 金蝶KIS 13.0专业版安装流程
  14. 硬盘数据恢复软件FinalData使用心得
  15. 小波分析及相应MATLAB实现
  16. Pigsty是什么?
  17. 飞秋教程(飞秋应用管理器)
  18. MyBatis crud练习
  19. 《21天学通HTML+CSS+JavaScript Web开发(第7版)》——2.8 作业
  20. 阿里云压缩包无法分享解决方案

热门文章

  1. 融云 服务器获取消息,融云IM 获取好友添加消息
  2. (Windows)Anaconda创建虚拟环境安装tensorflow
  3. 计算机考了二级可以直接考四级吗,计算机国家四级好考吗?报考有要求吗?一定要过了二级才能考吗?...
  4. 音乐播放器 - 自动化测试
  5. Could not get JDBC Connection; nested exception is java.sql.SQLException:
  6. Windows 7下Pomelo环境搭建笔记
  7. 分布式系统之CAP理论学习
  8. Ae 入门系列之十一:抠像
  9. IT痴汉的工作现状41-亲历招投标
  10. 解读apk分包-32位安装包、32位64位兼容包和64位安装包