Android多媒體之畫畫板開發(fā)案例分享
本文實例為大家分享了Android多媒體之畫畫板開發(fā)的具體代碼,供大家參考,具體內(nèi)容如下
先看看效果:

其實畫畫板的原理很簡單,就是首先記錄下按下屏幕的點,然后每移動一下就讓這兩次移動的點連線,周而復(fù)始,圖像就由很多條直線構(gòu)成了。
核心代碼 :
public class MainActivity extends Activity implements OnClickListener,OnSeekBarChangeListener {
private View red_view,green_view,blue_view; //控制畫筆顏色的三塊區(qū)域
private SeekBar seekBar; //控制畫筆粗細(xì)的拖動條
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);//設(shè)置畫筆顏色為黑色
paint.setStyle(Style.STROKE);//設(shè)置畫筆為空心
//添加處理規(guī)則
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()) {
//獲取按下時的坐標(biāo)
case MotionEvent.ACTION_DOWN:
startX = event.getX();
startY = event.getY();
break;
//獲取移動時的坐標(biāo)
case MotionEvent.ACTION_MOVE:
float stopX = event.getX();
float stopY = event.getY();
// // 在開始和結(jié)束坐標(biāo)間畫一條線
canvas.drawLine(startX, startY, stopX, stopY, paint);
//實時更新坐標(biāo)(通過不斷畫線)
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:
//當(dāng)點擊紅色區(qū)域的時候設(shè)置畫筆顏色為紅色
paint.setColor(Color.RED);
break;
case R.id.green_view:
//當(dāng)點擊綠色區(qū)域的時候設(shè)置畫筆顏色為綠色
paint.setColor(Color.GREEN);
break;
case R.id.blue_view:
//當(dāng)點擊藍(lán)色區(qū)域的時候設(shè)置畫筆顏色為藍(lán)色
paint.setColor(Color.BLUE);
break;
default:
break;
}
}
//拖動條的值改變的時候調(diào)用
@Override
public void onProgressChanged(SeekBar seekBar, int progress,
boolean fromUser) {
}
//開始拖動時調(diào)用
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
}
//停止拖動時調(diào)用
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
int progress = seekBar.getProgress();//拖動條默認(rèn)的最大值為100
paint.setStrokeWidth(progress/10f);//控制畫筆的粗細(xì)范圍(0-10)
}
}
試試覺得很簡單呢,趕緊試試吧!
又到周五了,希望大家有個快樂周末,謝謝大家一直對小編的支持,小編一定會再接再厲,為大家分享更多精彩的文章。
相關(guān)文章
Android應(yīng)用自動跳轉(zhuǎn)到應(yīng)用市場詳情頁面的方法
最近在工作中遇到一個需求,推廣部門要求實現(xiàn)應(yīng)用自動跳轉(zhuǎn)到應(yīng)用市場詳情頁面,通過查找一些資料,實現(xiàn)出來了,覺得有必要整理下方便以后或者有需要的朋友們參考借鑒,下面來一起詳細(xì)看看Android應(yīng)用自動跳轉(zhuǎn)到應(yīng)用市場詳情頁面的方法吧。2016-12-12
Android帶刷新時間顯示的PullToRefresh上下拉刷新
這篇文章主要為大家詳細(xì)介紹了Android帶刷新時間顯示的PullToRefresh上下拉刷新,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-12-12
刷新Activity中的scrollview示例(局部ui刷新)
代碼很簡單,但是很實用,適合在一個Activity中要刷新局部的UI,比如在掃描一維碼的時候,要把每次掃描的結(jié)果都顯示在界面上2014-01-01
輕松實現(xiàn)Android仿淘寶地區(qū)選擇功能
這篇文章主要介紹了輕松實現(xiàn)Android仿淘寶地區(qū)選擇功能的相關(guān)資料,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2016-06-06

