随手涂鸦

制作随手涂鸦


public class MainActivity extends Activity implements OnClickListener {

     private Paint paint;
     private Canvas canvas;
     private ImageView iv;
     private Bitmap bitmap;

     @Override
     protected void onCreate(Bundle savedInstanceState) {
           super.onCreate(savedInstanceState);
           setContentView(R.layout.activity_main);

           View black = findViewById(R.id.view_black);
           View bule = findViewById(R.id.view_bule);
           View gray = findViewById(R.id.view_gray);
           View green = findViewById(R.id.view_green);
           View indigo = findViewById(R.id.view_indigo);
           View orange = findViewById(R.id.view_orange);
           View purple = findViewById(R.id.view_purple);
           View red = findViewById(R.id.view_red);
           View yellow = findViewById(R.id.view_yellow);

           bule.setOnClickListener(this);
           black.setOnClickListener(this);
           gray.setOnClickListener(this);
           green.setOnClickListener(this);
           indigo.setOnClickListener(this);
           orange.setOnClickListener(this);
           purple.setOnClickListener(this);
           red.setOnClickListener(this);
           yellow.setOnClickListener(this);

           iv = (ImageView) findViewById(R.id.iv);
           SeekBar sb = (SeekBar) findViewById(R.id.sb);
           //创建图片副本
           bitmap = Bitmap.createBitmap(500, 500, Bitmap.Config.ARGB_8888);
           //开始编辑
           canvas = new Canvas(bitmap);
           canvas.drawColor(Color.WHITE);

           Matrix matrix = new Matrix();
           paint = new Paint();

           canvas.drawBitmap(bitmap, matrix, paint);
           iv.setImageBitmap(bitmap);

           sb.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {

                @Override
                public void onStopTrackingTouch(SeekBar seekBar) {
                     // TODO Auto-generated method stub
                     // 设置笔的大小
                     paint.setStrokeWidth(seekBar.getProgress());

                }

                @Override
                public void onStartTrackingTouch(SeekBar seekBar) {
                     // TODO Auto-generated method stub

                }

                @Override
                public void onProgressChanged(SeekBar seekBar, int progress,
                           boolean fromUser) {
                     // TODO Auto-generated method stub

                }
           });

           iv.setOnTouchListener(new OnTouchListener() {
                float downX;
                float downY;
                float moveX;
                float moveY;

                @Override
                public boolean onTouch(View v, MotionEvent event) {
                     // TODO Auto-generated method stub
                     switch (event.getAction()) {
                     case MotionEvent.ACTION_DOWN:
                           downX = event.getX();
                           downY = event.getY();
                           break;
                     case MotionEvent.ACTION_MOVE:
                           moveX = event.getX();
                           moveY = event.getY();
                           //开始做画
                           canvas.drawLine(downX, downY, moveX, moveY, paint);

                           iv.setImageBitmap(bitmap);
                           downX = moveX;
                           downY = moveY;
                           break;
                     case MotionEvent.ACTION_UP:

                           break;

                     default:
                           break;
                     }

                     return true;
                }
           });

     }

     @Override
     public void onClick(View v) {
           // 给画笔设置颜色
           switch (v.getId()) {
           case R.id.view_black:
                paint.setColor(Color.BLACK);
                break;
           case R.id.view_bule:
                paint.setColor(Color.BLUE);
                break;
           case R.id.view_gray:
                paint.setColor(Color.GRAY);
                break;
           case R.id.view_green:
                paint.setColor(Color.GREEN);
                break;
           case R.id.view_indigo:
                paint.setColor(0xff00ffff);
                break;
           case R.id.view_orange:
                paint.setColor(0xffff9900);
                break;
           case R.id.view_purple:
                paint.setColor(0xffff00ff);
                break;
           case R.id.view_red:
                paint.setColor(Color.RED);
                break;
           case R.id.view_yellow:
                paint.setColor(Color.YELLOW);
                break;

           default:
                break;
           }

     }

     @Override
     public boolean onCreateOptionsMenu(Menu menu) {
           // Inflate the menu; this adds items to the action bar if it is present.
           getMenuInflater().inflate(R.menu.main, menu);
           return true;
     }
     //菜单保存与清除
     @Override
     public boolean onOptionsItemSelected(MenuItem item) {
           // TODO Auto-generated method stub
           File file = new File("/mnt/sdcard/" + System.currentTimeMillis()
                     + ".jpg");
           if (item.getItemId() == R.id.action_clear) {
                canvas.drawColor(Color.WHITE);
                iv.setImageBitmap(bitmap);
           } else {
                try {
                     FileOutputStream stream = new FileOutputStream(file);

                     bitmap.compress(Bitmap.CompressFormat.JPEG, 100, stream);

                     //发送广播让系统重新刷新指定图片
                     Intent intent =new Intent();
                     intent.setAction(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);

                     Uri uri=Uri.fromFile(file);
                     intent.setData(uri);
                     sendBroadcast(intent);

                } catch (FileNotFoundException e) {
                     // TODO Auto-generated catch block
                     e.printStackTrace();
                }


           }

           return super.onOptionsItemSelected(item);
     }

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值