android實(shí)現(xiàn)簡(jiǎn)單的畫畫板實(shí)例代碼
直接看代碼,注釋都寫清楚了
public class MainActivity extends Activity {
private ImageView iv;
private Bitmap baseBitmap;
private Canvas canvas;
private Paint paint;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
this.iv = (ImageView) this.findViewById(R.id.iv);
// 創(chuàng)建一張空白圖片
baseBitmap = Bitmap.createBitmap(480, 640, Bitmap.Config.ARGB_8888);
// 創(chuàng)建一張畫布
canvas = new Canvas(baseBitmap);
// 畫布背景為灰色
canvas.drawColor(Color.GRAY);
// 創(chuàng)建畫筆
paint = new Paint();
// 畫筆顏色為紅色
paint.setColor(Color.RED);
// 寬度5個(gè)像素
paint.setStrokeWidth(5);
// 先將灰色背景畫上
canvas.drawBitmap(baseBitmap, new Matrix(), paint);
iv.setImageBitmap(baseBitmap);
iv.setOnTouchListener(new OnTouchListener() {
int startX;
int startY;
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
// 獲取手按下時(shí)的坐標(biāo)
startX = (int) event.getX();
startY = (int) event.getY();
break;
case MotionEvent.ACTION_MOVE:
// 獲取手移動(dòng)后的坐標(biāo)
int stopX = (int) event.getX();
int stopY = (int) event.getY();
// 在開(kāi)始和結(jié)束坐標(biāo)間畫一條線
canvas.drawLine(startX, startY, stopX, stopY, paint);
// 實(shí)時(shí)更新開(kāi)始坐標(biāo)
startX = (int) event.getX();
startY = (int) event.getY();
iv.setImageBitmap(baseBitmap);
break;
}
return true;
}
});
}
public void save(View view) {
try {
File file = new File(Environment.getExternalStorageDirectory(),
System.currentTimeMillis() + ".jpg");
OutputStream stream = new FileOutputStream(file);
baseBitmap.compress(CompressFormat.JPEG, 100, stream);
stream.close();
// 模擬一個(gè)廣播,通知系統(tǒng)sdcard被掛載
Intent intent = new Intent();
intent.setAction(Intent.ACTION_MEDIA_MOUNTED);
intent.setData(Uri.fromFile(Environment
.getExternalStorageDirectory()));
sendBroadcast(intent);
Toast.makeText(this, "保存圖片成功", 0).show();
} catch (Exception e) {
Toast.makeText(this, "保存圖片失敗", 0).show();
e.printStackTrace();
}
}
}
簡(jiǎn)單的布局文件
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity" >
<Button
android:id="@+id/button1"
android:onClick="save"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:text="保存圖片" />
<ImageView
android:layout_above="@id/button1"
android:id="@+id/iv"
android:layout_width="match_parent"
android:layout_height="match_parent"
/>
</RelativeLayout>
再來(lái)個(gè)權(quán)限
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
上兩張我畫的高端大氣上檔次的圖片。。。。


- Android實(shí)現(xiàn)畫板、寫字板功能(附源碼下載)
- Android自定義SurfaceView實(shí)現(xiàn)畫板功能
- Android采用雙緩沖技術(shù)實(shí)現(xiàn)畫板
- Android畫板開(kāi)發(fā)之添加背景和保存畫板內(nèi)容為圖片
- Android畫板開(kāi)發(fā)之橡皮擦功能
- Android實(shí)現(xiàn)畫畫板案例
- Android編程實(shí)現(xiàn)畫板功能的方法總結(jié)【附源碼下載】
- Android畫板開(kāi)發(fā)之撤銷反撤銷功能
- Android多媒體之畫畫板開(kāi)發(fā)案例分享
- Android自定義View實(shí)現(xiàn)簡(jiǎn)易畫板功能
相關(guān)文章
android中使用Activity實(shí)現(xiàn)監(jiān)聽(tīng)手指上下左右滑動(dòng)
這篇文章主要介紹了android中使用Activity實(shí)現(xiàn)監(jiān)聽(tīng)手指上下左右滑動(dòng),本文使用了Activity的ontouchEvent方法監(jiān)聽(tīng)手指點(diǎn)擊事件,并給出代碼實(shí)例,需要的朋友可以參考下2015-05-05
Android自定義View實(shí)現(xiàn)多邊形統(tǒng)計(jì)圖示例代碼
這篇文章主要給大家介紹了關(guān)于Android自定義View如何實(shí)現(xiàn)多邊形統(tǒng)計(jì)圖的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。2018-01-01
UiOS開(kāi)發(fā)中ITextView回收或關(guān)閉鍵盤使用方法總結(jié)
iOS開(kāi)發(fā)中,發(fā)現(xiàn)UITextView沒(méi)有像UITextField中textFieldShouldReturn:這樣的方法,那么要實(shí)現(xiàn)UITextView關(guān)閉鍵盤,必須使用其他的方法,下面是可以使用的幾種方法,需要的朋友參考下吧2016-11-11
詳解android 用webview加載網(wǎng)頁(yè)(https和http)
這篇文章主要介紹了詳解android 用webview加載網(wǎng)頁(yè)(https和http),詳細(xì)的介紹了兩個(gè)錯(cuò)誤的解決方法,有興趣的可以了解一下2017-11-11
使用android隱藏api實(shí)現(xiàn)亮度調(diào)節(jié)的方法
使用android隱藏api實(shí)現(xiàn)亮度調(diào)節(jié)的方法,需要的朋友可以參考一下2013-05-05

