android之旅23 多媒体处理2: 画画板

触摸事件
public void click(View v){
    //获取ImageView实例iv....

//设置触摸事件
    iv.setOnTouchListener(new OnTouchListener(){
        public boolean onTouch(View v, MotionEvent me){
            int action = me.getAction();
            switch(action){
                case MotionEvent.ACTION_DOWN:
                ...
                case MotionEvent.ACTION_MOVE:
                // 保存前后的坐标,画出直线
                int x = me.getX();
                int y = me.getY();

                。。。。

                // 画笔设置颜色和宽度
                Paint paint = new Paint();
                paint.setColor(Color.RED);// 保存颜色
                paint.setStrokeWidth(7); // 保存笔的宽度

                iv.setImageBitmap(bmCpy);//要重新载入下

                ...
                case MotionEvent.ACTION_UP:
                ...
            }
            //返回TRUE表示事件由当前View处理
            //返回false初始事件会得到,后续事件会给父节点处理
            return true;
        }
    });
}
//图片保存
public void save(View v){
    File file = new File("xxx.png");
    fos = new FileOutputStream(file);
    //100代表压缩比例, 取值0-100,compress保存图片
    bmCpy.compress(CompressFormat.PNG, 100, fos);

/*
    安卓每次启动的时候,也就是SD卡准备的时候,会遍历SD卡所有文件,将相关信息(文件名、路径、大小)保存到MediaStore数据库中
    而图库、音乐、视频启动的时候,找的是数据库的数据,然后显示给界面,因此上面的图片保存在图库里面是看不到的,需要重启手机重新遍历
*/

    //针对上面的问题,也可以发送就绪广播,这个是无序广播
    Intent intent = new Intent();
    intent.setAction(Intent.ACTION_MEDIA_MOUNTED);
    intent.setData(Uri.fromFile(Enviroment.getExternalStorageDirectory()));
    sendBroadcast(intent);

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值