博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android 实现图片画画板
阅读量:5972 次
发布时间:2019-06-19

本文共 2769 字,大约阅读时间需要 9 分钟。

本文主要讲述了Android 实现图片画画板

设计项目布局:

首先实现画图功能:

public class MainActivity extends Activity {    private ImageView iv;    private Bitmap baseBitmap;    private Canvas canvas;    private Paint paint;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        iv = (ImageView) findViewById(R.id.iv);        paint = new Paint();        paint.setStrokeWidth(5);        paint.setColor(Color.GREEN);                // 创建一个可以被修改的bitmap        baseBitmap = Bitmap.createBitmap(320, 360,                Bitmap.Config.ARGB_8888);        System.out.println("图宽度:"+iv.getWidth());        System.out.println("图高度:"+iv.getHeight());        canvas = new Canvas(baseBitmap);        canvas.drawColor(Color.WHITE);        // 知道用户手指在屏幕上移动的轨迹        iv.setOnTouchListener(new OnTouchListener() {            // 设置手指开始的坐标            int startX;            int startY;            @Override            public boolean onTouch(View v, 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(baseBitmap);                    break;                case MotionEvent.ACTION_UP: // 手指离开屏幕                    break;                default:                    break;                }                return true;            }        });    }    public void save(View view) {    }}

接下来完成保存图片的功能:

public void save(View view) {        try {            File file = new File(Environment.getExternalStorageDirectory(),                    System.currentTimeMillis() + ".jpg");            FileOutputStream stream = new FileOutputStream(file);            baseBitmap.compress(CompressFormat.JPEG, 100, stream);            stream.close();            Toast.makeText(this, "保存图片成功", 1).show();                        //模拟一个消息通知系统sd卡被重新挂载了            Intent intent = new Intent();            intent.setAction(intent.ACTION_MEDIA_MOUNTED);            intent.setData(Uri.fromFile(Environment                    .getExternalStorageDirectory()));            sendBroadcast(intent);        } catch (Exception e) {            Toast.makeText(this, "保存图片失败", 1).show();            e.printStackTrace();        }    }

转载地址:http://gfbox.baihongyu.com/

你可能感兴趣的文章
expdp 详解及实例
查看>>
通过IP判断登录地址
查看>>
深入浅出JavaScript (五) 详解Document.write()方法
查看>>
Beta冲刺——day6
查看>>
在一个程序中调用另一个程序并且传输数据到选择屏幕执行这个程序
查看>>
代码生成工具Database2Sharp中增加视图的代码生成以及主从表界面生成功能
查看>>
关于在VS2005中编写DLL遇到 C4251 警告的解决办法
查看>>
提高信息安全意识对网络勒索病毒说不
查看>>
maya pyside 多个窗口实例 报错 解决
查看>>
我的友情链接
查看>>
我的友情链接
查看>>
MVC中的三个模块
查看>>
Line: 220 - com/opensymphony/xwork2/spring/SpringObjectFactory.java:220:-1
查看>>
oracle 常用命令大汇总
查看>>
mysql 并行复制
查看>>
傲不可长,欲不可纵,乐不可极,志不可满——提高个人修养
查看>>
后台调用gps
查看>>
HTML5标签的语义认知和理解(1)
查看>>
MySQL日志功能详解(2)
查看>>
HP LaserJet 305X 和 339X 系列一体机如何设置手动或自动接收传真?
查看>>