软件编程
位置:首页>> 软件编程>> Android编程>> Android多媒体之画画板开发案例分享

Android多媒体之画画板开发案例分享

作者:TheMrNice  发布时间:2022-11-17 11:05:08 

标签:Android,多媒体,画板

本文实例为大家分享了Android多媒体之画画板开发的具体代码,供大家参考,具体内容如下

先看看效果:

Android多媒体之画画板开发案例分享

其实画画板的原理很简单,就是首先记录下按下屏幕的点,然后每移动一下就让这两次移动的点连线,周而复始,图像就由很多条直线构成了。

核心代码 :


public class MainActivity extends Activity implements OnClickListener,OnSeekBarChangeListener {

private View red_view,green_view,blue_view;   //控制画笔颜色的三块区域
 private SeekBar seekBar;    //控制画笔粗细的拖动条
 private ImageView iv;  
 private Bitmap bitmap,backgroud;  //画纸和背景图
 private Canvas canvas;       //画布
 private Paint paint;        //画笔
 @Override
 protected void onCreate(Bundle savedInstanceState) {
   super.onCreate(savedInstanceState);
   setContentView(R.layout.activity_main);
   red_view = findViewById(R.id.red_view);
   green_view = findViewById(R.id.green_view);
   blue_view = findViewById(R.id.blue_view);
   seekBar = (SeekBar) findViewById(R.id.seekbar);
   iv = (ImageView) findViewById(R.id.iv);
   iv.setImageResource(R.drawable.bg);
   //拿到背景图
   backgroud = BitmapFactory.decodeResource(getResources(), R.drawable.bg);
   //拿到和背景图一样大小的画纸
   bitmap = Bitmap.createBitmap(backgroud.getWidth(), backgroud.getHeight(), backgroud.getConfig());
   //把画纸固定在画布上
   canvas = new Canvas(bitmap);
   //拿到画笔
   paint = new Paint();
   paint.setColor(Color.BLACK);//设置画笔颜色为黑色
   paint.setStyle(Style.STROKE);//设置画笔为空心
   //添加处理规则
   Matrix matrix = new Matrix();
   //照着背景图画
   canvas.drawBitmap(backgroud, matrix, paint);
   red_view.setOnClickListener(this);
   green_view.setOnClickListener(this);
   blue_view.setOnClickListener(this);
   seekBar.setOnSeekBarChangeListener(this);
   iv.setOnTouchListener(new OnTouchListener() {
     float startX;
     float startY;
     @Override
     public boolean onTouch(View v, MotionEvent event) {
       switch (event.getAction()) {
       //获取按下时的坐标
       case MotionEvent.ACTION_DOWN:
         startX = event.getX();
         startY = event.getY();
         break;
       //获取移动时的坐标
       case MotionEvent.ACTION_MOVE:
         float stopX = event.getX();
         float stopY = event.getY();
//          // 在开始和结束坐标间画一条线
         canvas.drawLine(startX, startY, stopX, stopY, paint);
         //实时更新坐标(通过不断画线)
         startX = event.getX();
         startY = event.getY();

iv.setImageBitmap(bitmap);
         break;
       case MotionEvent.ACTION_UP:
         break;
       default:
         break;
       }
       return true;
     }
   });
 }
 @Override
 public void onClick(View v) {
   switch (v.getId()) {
   case R.id.red_view:
     //当点击红色区域的时候设置画笔颜色为红色
     paint.setColor(Color.RED);
     break;
   case R.id.green_view:
     //当点击绿色区域的时候设置画笔颜色为绿色
     paint.setColor(Color.GREEN);
     break;
   case R.id.blue_view:
     //当点击蓝色区域的时候设置画笔颜色为蓝色
     paint.setColor(Color.BLUE);
     break;
   default:
     break;
   }
 }
 //拖动条的值改变的时候调用
 @Override
 public void onProgressChanged(SeekBar seekBar, int progress,
     boolean fromUser) {

}
 //开始拖动时调用
 @Override
 public void onStartTrackingTouch(SeekBar seekBar) {

}
 //停止拖动时调用
 @Override
 public void onStopTrackingTouch(SeekBar seekBar) {
   int progress = seekBar.getProgress();//拖动条默认的最大值为100
   paint.setStrokeWidth(progress/10f);//控制画笔的粗细范围(0-10)
 }
}

试试觉得很简单呢,赶紧试试吧!

又到周五了,希望大家有个快乐周末,谢谢大家一直对小编的支持,小编一定会再接再厉,为大家分享更多精彩的文章。

0
投稿

猜你喜欢

手机版 软件编程 asp之家 www.aspxhome.com