Android多媒体之画画板开发案例分享
作者:TheMrNice 时间:2022-11-17 11:05:08
本文实例为大家分享了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)
}
}
试试觉得很简单呢,赶紧试试吧!
又到周五了,希望大家有个快乐周末,谢谢大家一直对小编的支持,小编一定会再接再厉,为大家分享更多精彩的文章。
标签:Android,多媒体,画板
0
投稿
猜你喜欢
Springboot实现多数据源切换详情
2023-06-12 12:02:43
Maven插件的安装及使用
2022-04-05 04:38:30
Java关键字之this用法详解
2022-03-23 21:43:22
C#语法之泛型的多种应用
2022-03-15 02:02:43
C#语言中条件与&&与条件或||的区别
2022-10-06 22:51:55
Java线程安全的计数器简单实现代码示例
2023-11-09 15:41:57
C#中==(双等于号)与equals()区别详解
2021-09-21 18:49:42
mybatis-plus 返回部分字段的解决方式
2023-03-25 14:45:04
java面试常问的Runnable和Callable的区别
2023-11-23 09:23:28
android 调用系统的照相机和图库实例详解
2022-01-02 11:46:47
Android编程设计模式之迭代器模式详解
2023-06-07 01:25:42
Android 7.0 Nougat不得不知的11项新功能
2021-06-12 22:50:07
Java中的引用类型和使用场景详细
2023-11-29 03:58:19
IDEA自定义常用代码块及自定义快捷摸板
2022-01-13 18:54:22
Springboot - Fat Jar示例详解
2023-11-19 21:28:35
详解如何在Java中实现堆排序算法
2023-11-11 11:34:46
Unity打包代码到DLL的实现
2022-06-28 08:38:17
MyBatis3用log4j在控制台输出SQL的方法示例
2023-07-01 07:32:36
线程阻塞唤醒工具 LockSupport使用详解
2023-11-29 17:16:10
java使用gzip实现文件解压缩示例
2021-09-05 06:36:23