Android自动手绘,Android应用开发之Android 实现手绘功能教程
本文将带你了解Android应用开发Android 实现手绘功能教程,希望本文对大家学Android有所帮助。
布局文件如下。
Activity代码如下,其中线的颜色,宽度等属性都可以修改。
package com.example.administrator.main;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.net.Uri;
import android.os.Environment;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.Toast;
import java.io.File;
import java.io.FileOutputStream;
public class DrawActivity extends AppCompatActivity {
private ImageView iv;
private Bitmap baseBitmap;
private Button btn_resume;
private Button btn_save;
private Canvas canvas;
private Paint paint;
float radio;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_draw);
radio = 10;
iv = (ImageView) findViewById(R.id.iv);
// 初始化一个画笔,笔触宽度为5,颜色为红色
paint = new Paint();
paint.setStrokeWidth(radio);
paint.setColor(Color.BLACK);
iv = (ImageView) findViewById(R.id.iv);
btn_resume = (Button) findViewById(R.id.btn_resume);
btn_save = (Button) findViewById(R.id.btn_save);
btn_resume.setOnClickListener(click);
btn_save.setOnClickListener(click);
iv.setOnTouchListener(touch);
}
private View.OnTouchListener touch = new View.OnTouchListener() {
// 定义手指开始触摸的坐标
float startX;
float startY;
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
// 用户按下动作
case MotionEvent.ACTION_DOWN:
// 第一次绘图初始化内存图片,指定背景为白色
if (baseBitmap == null) {
baseBitmap = Bitmap.createBitmap(iv.getWidth(),
iv.getHeight(), Bitmap.Config.ARGB_8888);
canvas = new Canvas(baseBitmap);
canvas.drawColor(Color.WHITE);
}
// 记录开始触摸的点的坐标
startX = event.getX();
startY = event.getY();
break;
// 用户手指在屏幕上移动的动作
case MotionEvent.ACTION_MOVE:
// 记录移动位置的点的坐标
float stopX = event.getX();
float stopY = event.getY();
Thread t = new Thread(new Runnable() {
@Override
public void run() {
radio += 0.1;
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
});
t.start();
paint.setStrokeWidth(radio);
//根据两点坐标,绘制连线
canvas.drawLine(startX, startY, stopX, stopY, paint);
// 更新开始点的位置
startX = event.getX();
startY = event.getY();
// 把图片展示到ImageView中
iv.setImageBitmap(baseBitmap);
break;
case MotionEvent.ACTION_UP:
radio = 5;
break;
default:
break;
}
return true;
}
};
private View.OnClickListener click = new View.OnClickListener() {
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.btn_save:
saveBitmap();
break;
case R.id.btn_resume:
resumeCanvas();
break;
default:
break;
}
}
};
/**
* 保存图片到SD卡上
*/
protected void saveBitmap() {
try {
本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标移动开发之Android频道!
Android自动手绘,Android应用开发之Android 实现手绘功能教程相关推荐
- android 图片横竖判断_Android应用开发之android 判断ImageView当前显示的是哪一张图片...
本文将带你了解Android应用开发之android 判断ImageView当前显示的是哪一张图片,希望本文对大家学Android有所帮助. 判断ImageView当前显示的是哪一张图片 Java ...
- android webview权限申请_Android应用开发之android 6.0下webview的定位权限设置方法
本文将带你了解Android应用开发android 6.0下webview的定位权限设置方法,希望本文对大家学Android有所帮助. 如下所示: WebView webView = (WebVi ...
- Android之基于xmpp openfire smack开发之Android消息推送技术原理分析和实践[4]
http://blog.csdn.net/shimiso/article/details/8156439 前面几篇给大家系统讲解的有关xmpp openfire smack asmack相关的技术和使 ...
- Android之基于xmpp openfire smack开发之Android客户端开发[3]
http://blog.csdn.net/shimiso/article/details/11225873 在上两篇文章中,我们依次介绍openfire部署以及smack常用API的使用,这一节中我们 ...
- 镜像处理坐标 android,Android应用开发之Android重写ImageView实现图片镜像效果的代码教程...
本文将带你了解Android应用开发之Android重写ImageView实现图片镜像效果的代码教程,希望本文对大家学Android有所帮助. 前两天朋友问我一个问题,如何实现从手机系统相册加载一张图 ...
- android添加截图功能,Android应用开发之Android 5.0及以上编程实现屏幕截图功能的方法...
本文将带你了解Android应用开发Android 5.0及以上编程实现屏幕截图功能的方法,希望本文对大家学Android有所帮助. 本文实例讲述了Android 5.0及以上编程实现屏幕截图功能 ...
- Android关掉多个activity,Android应用开发之Android Activity栈管理 制定关闭某一个Activity,关闭所有Activit...
本文将带你了解Android应用开发之Android Activity栈管理 制定关闭某一个Activity,关闭所有Activit,希望本文对大家学Android有所帮助. 系统Api :打开新的 ...
- java edittext 输入监听_Android应用开发之Android EditText 监听用户输入完成的实例
本文将带你了解Android应用开发Android EditText 监听用户输入完成的实例,希望本文对大家学Android有所帮助. 我们都知道, Android EditText输入框,并没有 ...
- android图片保存形式,Android应用开发之Android ScrollView截图和图片保存到相册的方式...
本文将带你了解Android应用开发之Android ScrollView截图和图片保存到相册的方式,希望本文对大家学Android有所帮助. 1.1首先来看你一种截取屏幕,这种代码有缺陷,只能截取一 ...
最新文章
- 【中文字幕】加州理工《数据学习:机器学习课程》视频及ppt分享
- Logstash 推送告警到阿里钉钉(Dingtalk)
- Java Array 常见报错
- android getitem,android – ItemDecoration重写getItemOffsets()和动画
- 梯度方向直方图和物体检测Histogram of Oriented Gradients and Object Detection
- Cortex-A 的内核寄存器组
- c++ primer 5th 练习11.38自己编写答案(用无序容器重写单词计数程序)
- LeetCode 71. 简化路径(栈)
- js删除服务器上文件,js删除服务器文件
- HTML/CSS 面试总结
- 什么是Excel宏?
- mysql 身份证 年龄_mysql 中通过身份证号码计算年龄
- DSP28335 ecap使用
- V神以太坊:协议设计中的“封装复杂性” vs. “系统复杂性”
- 国内外Android大牛Blog
- 阿里巴巴商品详情API接口(item_get-获得商品详情接口),阿里巴巴API接口
- 2022年,程序员如何选择电脑
- windows 模拟按键与鼠标
- 作为一名平面设计师,你必须知道的一些素材网站
- android x86 arm64,Android 的ARM架构和X86架构