2019独角兽企业重金招聘Python工程师标准>>>

代码片段

package com.tang.paint;import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;import android.app.Activity;
import android.app.ActionBar;
import android.app.Fragment;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.Bitmap.CompressFormat;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.media.MediaScannerConnection;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.Toast;
import android.os.Build;public class MainActivity extends Activity {private ImageView iv;private Bitmap basemap;private Canvas canvas;private Paint paint;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);iv = (ImageView) findViewById(R.id.pic);paint = new Paint();paint.setStrokeWidth(5);paint.setColor(Color.GREEN);basemap = Bitmap.createBitmap(768, 1100, Bitmap.Config.ARGB_8888);canvas = new Canvas(basemap);canvas.drawColor(Color.WHITE); //设置颜色iv.setOnTouchListener(new OnTouchListener() {int startX;int startY;public boolean onTouch(View view, MotionEvent event) {switch (event.getAction()) {case MotionEvent.ACTION_DOWN: //下笔startX = (int) event.getX();startY = (int) event.getY();break;case MotionEvent.ACTION_MOVE: //移动int newX = (int) event.getX();int newY = (int) event.getY();canvas.drawLine(startX, startY, newX, newY, paint);startX = (int) event.getX();startY = (int) event.getY();iv.setImageBitmap(basemap);break;case MotionEvent.ACTION_UP: //抬笔break;}return true;}});}public void save(View view){System.out.println(Environment.getDataDirectory());System.out.println(Environment.getExternalStorageDirectory());try {String fileName = System.currentTimeMillis()+".jpg";File file = new File(Environment.getExternalStorageDirectory(), fileName);FileOutputStream stream;stream = new FileOutputStream(file);basemap.compress(CompressFormat.JPEG, 100, stream);//通知相册//Intent intent = new Intent(Intent.ACTION_MEDIA_MOUNTED);//intent.setData(Uri.fromFile(Environment.getExternalStorageDirectory()));//sendBroadcast(intent);//4.4以后MediaScannerConnection.scanFile(this, new String[]{Environment.getExternalStorageDirectory()+"/" + fileName}, null, null);Toast.makeText(this, "保存成功", Toast.LENGTH_SHORT).show();} catch (Exception e) {// TODO Auto-generated catch blockToast.makeText(this, "保存失败", Toast.LENGTH_SHORT).show();e.printStackTrace();}}
}

转载于:https://my.oschina.net/u/729139/blog/476393

安卓 画板 学习笔记相关推荐

  1. 安卓逆向学习笔记(一)

    这些都是通过学长给予,以及网络上的资源来做的个人理解.总结,大牛们不要喷. 零基础小萌新在角落瑟瑟发抖的认真记笔记. 安卓逆向学习笔记(一) 写一个安卓程序(附上原帖链接教我兄弟学Android逆向0 ...

  2. 安卓逆向学习笔记:native层开发、分析和调试基础

    安卓逆向学习笔记:native层开发.分析和调试基础 本笔记主要是自己看,所以如果有看不懂的地方也请多多包涵,这一篇的笔记主要是<Android应用安全防护和逆向分析>的部分内容. 一 A ...

  3. java画板学习笔记

    java画板学习笔记: 1.JToggleButton用于按下后不会自动弹起的按钮 2.PathIterator 接口 通过允许调用者一次一段地获取边界的路径,为实现 Shape 接口的对象提供返回其 ...

  4. 安卓开发学习笔记1:简单控件

    此文章仅为本人在学习安卓开发时的一些笔记 界面显示逻辑处理 使用XML标记.描绘应用界面,使用Java书写程序逻辑 使用XML描述APP界面 使用XML文件描述APP界面 一个界面布局可以被多处代码复 ...

  5. 幻樱の安卓开发学习笔记(持续更新)

    安卓开发手册Java . 前言 . 本篇博客是我在开发过程中遇到的一些问题,我将这些问题记录了下来,以防踩重复的坑,希望对需要学习或者来看我踩坑的人有所帮助. . . . . 零.一些常用的依赖 1. ...

  6. AD20原理图设计与PCB封装画板--学习笔记

    Altium Designer 20 19(入门到精通全38集)四层板智能车PCB设计视频教程AD19 AD20 凡亿_哔哩哔哩_bilibili 传送门为上面链接,本文为其笔记 目录 Altium ...

  7. AD画板学习笔记之爱心流水灯设计(未完成)

    **AD画板设计步骤: 提前设计框架构图 画原理图 画PCB图 1.提前设计框架构图 每次设计一个PCB板前,一定要提前构图,理好思路,才会让之后的画板走的更加顺利 (1)大体框架 在进行第一步,第二 ...

  8. java 仿qq登录界面7.1_安卓开发学习笔记(七):仿写腾讯QQ登录注册界面

    这段代码的关键主要是在我们的相对布局以及线性布局上面,我们首先在总体布局里设置为线性布局,然后再在里面设置为相对布局,这是一个十分常见的XML布局模式. 废话不多说,直接上代码: 一.activity ...

  9. android多点触摸手势,安卓手势学习笔记(三) 多点触控

    8种机械键盘轴体对比 本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选? 跟踪多个触点 当多个手指同时触碰屏幕时,系统产生如下的事件:ACTION_DOWN –第一个触点.它启动了手势,在Mot ...

最新文章

  1. 绝对自回归模型(或将解决标注问题)
  2. [LeetCode]题解(python):013-Roman to Integer
  3. 配置方法_CISCO防火墙端口映射配置方法
  4. redis的hash操作在集中式session中的应用
  5. Python的reshape(-1,1)
  6. GeneralUpdate 2021.08.14更新公告
  7. 网易资深Java架构师:java方法的定义和使用
  8. Python使用pandas对数据进行差分运算
  9. vue防抖和节流是什么_前端节流和防抖的区别
  10. 浅谈React Hooks
  11. 从零基础入门Tensorflow2.0 ----一、3.3 实战深度神经网络(激活函数)
  12. topcoder srm 440 div1
  13. php字符串的截取方式
  14. 对计算机专业来说学历真的重要吗?
  15. Mysql建数据库建表语法实践
  16. php 失去焦点,jquery设置焦点方法focus()和jquery失去焦点方法blur()
  17. # C#程序设计习题_1(西安交通大学)
  18. 23位子网掩码是多少_23位子网掩码包含哪几个网段
  19. 使用JAVA对数据库的记录进行操作(初步)
  20. 电子白板无法触摸怎么办?

热门文章

  1. python dataframe显示网格_python dataframe 输出结果整行显示的方法
  2. 大数据的两面性_大数据,多大的数据才是大数据?
  3. 信号状态关_路由器要不要关?难怪信号越来越差
  4. python栈溢出_Python栈溢出【新手必学】
  5. linux下出现重定义,Oracle Online Redefinition在线重定义
  6. Java项目:精美风在线音乐网站(java+JDBC+C3P0+servlet+mysql+JSP)
  7. Lambda表达式的运用(详尽版)
  8. JS ES6 实用笔记
  9. 使用 spring boot 开发通用程序
  10. Bzoj4566:[HAOI2016]找相同字符