自定义View画板

package com.example.viewpager;

public class MainActivity extends AppCompatActivity {

    private Bitmap bnmCopy;
    private Canvas canvas;
    private ImageView iv;
    private int stax;
    private int stay;
    private RadioGroup radioGroup;
    private RadioGroup radio;
    private Paint paint;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initData();
        //加载原图
      //  创建白纸,宽和高
        bnmCopy = Bitmap.createBitmap(480,640,Bitmap.Config.ARGB_8888);
        //创建白板,参数就是白纸对象
        canvas = new Canvas(bnmCopy);
        //创建画质
        paint = new Paint();
        //在纸上作画
        canvas.drawBitmap(bnmCopy,new Matrix(), paint);
        radio.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(RadioGroup radioGroup, int i) {
                switch (i){
                    case R.id.btn1:
                       paint.setColor(Color.parseColor("#9c103a"));
                        break;
                    case R.id.btn2:
                        paint.setStrokeWidth(6);
                        break;
                    case R.id.btn3:
                        paint.setColor(Color.parseColor("#35894c"));
                        break;
                    case R.id.btn4:
                        //根据当前时间当做文件夹
                        SimpleDateFormat format = new SimpleDateFormat("yyyyMMddHHmmss");
                        Date date = new Date(System.currentTimeMillis());//获取当前时间
                        //
                        String str= format.format(date) + "paint.png";
                        File file = new File("sdcard/" + str);
                        FileOutputStream stream=null;
                        try {
                            stream=new FileOutputStream(file);
                        } catch (Exception e) {
                            e.printStackTrace();
                        }
                        bnmCopy.compress(Bitmap.CompressFormat.PNG,100,stream);
                        发送Sd卡的就绪广播,要不然在手机图库中不存在
                        Intent intent = new Intent(Intent.ACTION_MEDIA_MOUNTED);
                        intent.setData(Uri.fromFile(Environment.getExternalStorageDirectory()));
                        Toast.makeText(MainActivity.this,"已经保存图片",Toast.LENGTH_SHORT).show();
                        break;
                }
            }
        });
        ///手势识别器和画笔和画板只是相结合
        //给控件设置手势识别器,可以得到用户都在这个控件上,滑动的坐标
        iv.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View view, MotionEvent motionEvent) {
                switch (motionEvent.getAction()){
                    case MotionEvent.ACTION_DOWN:
                        stax = (int) motionEvent.getX();
                        stay = (int) motionEvent.getY();
                        break;
                    case MotionEvent.ACTION_MOVE:
                        int x = (int) motionEvent.getX();
                        int y = (int) motionEvent.getY();
                        canvas.drawLine(stax,stay,x,y, paint);
                        stax= (int) motionEvent.getX();
                        stay= (int) motionEvent.getY();
                        iv.setImageBitmap(bnmCopy);
                        break;
                    case MotionEvent.ACTION_UP:
                        break;

                }
                return true;
            }
        });

    }
    private void initData() {
        iv = findViewById(R.id.iv);
        radio = findViewById(R.id.radio);

    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值