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); } }
自定义View画板
最新推荐文章于 2022-03-20 01:33:27 发布