android图片_画画板
一、项目目录结构
二、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图片_画画板相关推荐
- Android之Canvas画画板
前几篇都涉及到了Canvas,Paint,Bitmap的结合使用,这里就不多说了~ 现在我要写的是画画板这个项目~ 项目效果: 1.画笔的颜色的随意更改 2.画笔的大小也可以随着拖动条的拖动而改变 3 ...
- Android 图片选取画图案
最近项目中要有一个需求,从相册中选取照片上传,后服务器返回照片返回宽高,然后在上面画矩形.以下是实现方式: 1:我们要在原有的图片上画东西,因此我们要将图片设置为bitmap,因项目需要图片无压缩.因 ...
- Android可滑动画板,Android 利用 Canvas 画画板
首先新建一个项目工程,建立文件,如下图所示 首先配置页面布局文件activity_main.xml,如下图所示: xmlns:tools="http://schemas.android.co ...
- Android小应用-----画画板
public class MainActivity extends Activity {private ImageView iv;float startX = 0;float startY = 0;/ ...
- Android 实现图片画画板
本文主要讲述了Android 实现图片画画板 设计项目布局: <RelativeLayout xmlns:android="http://schemas.android.com/apk ...
- 学习android 画板源代码,Android实现画画板案例
郑州app开发画画板案例.布局代码是三个button和一个imagesview下面是图片. 布局代码就不展示了.下面是java代码. package cn.xhhkj.image; import an ...
- Android可滑动画板,Android实现画画板案例
本文实例为大家分享了Android实现画画板的具体代码,供大家参考,具体内容如下 ① 准备一个布局文件 xmlns:tools="http://schemas.android.com/too ...
- android实现简单的画画板
画画板实现起来其实很简单,我们只需要利用android给我们提供的Canvas类来操作就可以实现简单的画画功能 直接看代码,注释都写清楚了 public class MainActivity exte ...
- Android简易实战教程--第二十四话《画画板》
今天完成一个画画板. 首先来个布局: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android ...
最新文章
- 如何评价算法的好坏?
- Java JNI简单实现
- Android O: View的绘制流程(一): 创建和加载
- 如何巧妙的使用ArrayList的Clone方法
- P3934-Nephren Ruq Insania【欧拉定理,树状数组】
- centos初始配置
- 常用概率论矩阵论公式
- 如何自学python知乎-你们都是怎么学 Python 的?
- hdu 1588 Gauss Fibonacci
- 111 进程的创建和结束
- 【转】(Jquery)避免数据相加小数点后产生多位数和计算精度损失
- 进销存软件定制开发怎么做?
- 【软考 系统架构设计师】软件架构设计④ 基于架构的软件开发方法
- 配置本地yum源文件
- 中文转换为拼音插件guiHz2Py
- 使用Jquery制作精美的图片展示效果
- 点击一次变色,再点击变回原色
- 【流体机械原理及设计00】
- 使用360浏览器出现域名解析错误和有道词典连接不了网络的解决方法
- VBS 常用总汇 (http://blog.csdn.net/sgear/article/details/1380223)