学习android 画板源代码,Android实现画画板案例
郑州app开发画画板案例。布局代码是三个button和一个imagesview下面是图片。
布局代码就不展示了。下面是java代码。
package cn.xhhkj.image;
import androidx.appcompat.app.AppCompatActivity;
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.graphics.Point;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
import android.widget.ImageView;
import android.graphics.Bitmap.CompressFormat;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
public class MainActivity extends AppCompatActivity {
private static final String TAG = "结果是";
private Canvas canvas;
private Paint paint;
private ImageView iv_image;
private Bitmap copybm;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
init();
indo();
}
public void init(){
iv_image = findViewById(R.id.iv_image);
}
public void indo(){
Bitmap bitmap = BitmapFactory.decodeResource(getResources(),
R.drawable.c);
copybm = Bitmap.createBitmap(bitmap.getWidth(),
bitmap.getHeight(), bitmap.getConfig());
canvas = new Canvas(copybm);
paint = new Paint();
canvas.drawBitmap(bitmap, new Matrix(), paint);
iv_image.setImageBitmap(copybm);
iv_image.setOnTouchListener(new View.OnTouchListener() {
private float startX;
private float startY;
@Override
public boolean onTouch(View v, MotionEvent event) {
int action = event.getAction();
switch (action){
case MotionEvent.ACTION_DOWN:
startX = event.getX();
startY = event.getY();
break;
case MotionEvent.ACTION_MOVE:
float x = event.getX();
float y = event.getY();
canvas.drawLine(startX, startY, x, y, paint);
iv_image.setImageBitmap(copybm);
startX = x;
startY = y;
break;
case MotionEvent.ACTION_UP:
break;
default:
break;
}
return true;
}
});
}
public void changeColor(View view) {
paint.setColor(Color.RED);
}
public void bold(View view) {
paint.setStrokeWidth(5);
}
public void save(View view) {
Log.d(TAG,"保存");
File file = new File(Environment.getExternalStorageDirectory(),System.currentTimeMillis()+".png");
FileOutputStream fos;
try {
fos = new FileOutputStream(file);
copybm.compress(CompressFormat.PNG, 100, fos);
// Intent intent = new Intent();
// intent.setAction(Intent.ACTION_MEDIA_MOUNTED);
// intent.setData(Uri.fromFile(Environment.getExternalStorageDirectory()));
// sendBroadcast(intent);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
}
以上代码完成后,还需要在清单里面添加权限,android.permission.WRITE_EXTERNAL_STORAGE。这个是往手机存储权限。
学习android 画板源代码,Android实现画画板案例相关推荐
- Android开发笔记之简易画画板的制作
如果有这样的需求,有多种颜色可供选择,通过seekbar调节画笔的粗细,实现在画板上涂鸦的功能.没有考虑其他的功能,只是对前面有关Android图像处理和Canvas的知识进行一个运用. 一.布局 三 ...
- android五子棋源代码,Android五子棋游戏源码详解
最近看了鸿洋大牛的五子棋教程,受益匪浅,讲的非常好,关于五子棋的游戏原理非常清楚,并且学到了不少知识,在这里感谢鸿洋大神的分享.我觉得我的源码注释写的非常清楚了,希望能给你带来不少的收获. 布局< ...
- android 名册源代码,Android编程中黑名单的实现方法
本文实例讲述了Android编程中黑名单的实现方法.分享给大家供大家参考,具体如下: 说明:由于挂断电话android api不是对外开放的,所以需要使用反射的方法得到拨打电话的服务. 1.将an ...
- android 录像 源代码,android安卓视频录制摄像拍摄源码(测试可用)
[实例简介] [实例截图] [核心代码] package com.cn.mvideo; import java.io.File; import java.io.IOException; import ...
- Android天气预报 源代码,android天气预报源码(国家气象局的接口)
接口地址: 以json格式提供,格式如下 {"weatherinfo":{ //基本信息; "city":"北京","city_e ...
- Android系统源代码情景分析:基础知识
老罗(罗升阳)发表在的InfoQ上的好文,最新在学习Android,转载一下,方便学习. 老罗的CSDN blog链接:http://blog.csdn.net/Luoshengyang/ 原文链接: ...
- Android可滑动画板,Android实现画画板案例
本文实例为大家分享了Android实现画画板的具体代码,供大家参考,具体内容如下 ① 准备一个布局文件 xmlns:tools="http://schemas.android.com/too ...
- Android 实现图片画画板
本文主要讲述了Android 实现图片画画板 设计项目布局: <RelativeLayout xmlns:android="http://schemas.android.com/apk ...
- android实现简单的画画板
画画板实现起来其实很简单,我们只需要利用android给我们提供的Canvas类来操作就可以实现简单的画画功能 直接看代码,注释都写清楚了 public class MainActivity exte ...
最新文章
- [转载] C#面向对象设计模式纵横谈——25 设计模式总结
- android error: undefined reference to 的错误分析
- Spring 4中@ControllerAdvice的改进
- python 列表、字典多排序问题
- 使用GDB调试器(一)
- 亡命逃窜---三维搜索
- 二分法其实很简单,为什么老是写不对!!!
- 函数的定义与变量作用域
- Rust: 如何在Windows下Atom中配置Rust环境?
- 遗传算法详解及matlab代码实现
- 用java编写简单的仓库管理_仓库管理系统+可视化界面java编写
- 利用高德地图通过给定坐标点画带箭头方向的路径
- unity井字棋和一些重要概念(中山大学3D游戏作业2)
- Chrome浏览器怎么保存整个网页为图片
- ijkplayer播放器
- c语言中“函数的定义不可以嵌套,但函数的调用可以嵌套
- IE 10 SCRIPT5022: InvalidCharacterError错误解决办法
- CocosCreator | 摄像机跟随/镜头跟随 玩家移动
- (考研湖科大教书匠计算机网络)第一章概述-第二节:三种交换方式(电路交换、报文交换和分组交换)
- 【CEGUI】CEGUI入门篇之创建window(四)
热门文章
- path r'c test.html',robot framework - robot命令参数解析
- computed set 自定义参数_深入理解vmodel之自定义组件用法
- 带有Python示例的math.cos()方法
- 不知道Mysql排序的特性,加班到12点,认了认了!
- Linux系统下启动MySQL的命令及相关知识
- C++总结篇(3)String类
- Stacked Hourglass Networks 人体姿态检测
- axios跨域携带cookie_vue 本地调试跨域---带cookies(axios)
- 用MATLAB实现神经网络
- Emscripten 单词_极光单词独创多种学习方法助您高效背单词