国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

android 實現在照片上繪制涂鴉的方法

2019-10-21 21:37:58
字體:
來源:轉載
供稿:網友

這個應該是簡易版的美圖秀秀(小伙伴們吐槽:你這也叫簡易版的??我們看著怎么不像啊……)。好吧,只是在圖片上繪制涂鴉,然后保存。

一、選擇圖片

這個道長有必要說一下,在繪制涂鴉時,筆畫會根據設置ImageView的大小和屏幕的尺寸(不是像素)產生誤差。這個道長暫時還沒有找到解決方法,只是規避了一下。

把ImageView設置為全屏,布局文件代碼如下

<?xml version="1.0" encoding="utf-8"?><FrameLayout 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" android:layout_margin="5dp" android:orientation="vertical"> <ImageView  android:id="@+id/iv_draw_pic"  android:layout_width="match_parent"  android:layout_height="match_parent"  android:layout_gravity="center_horizontal"  android:layout_margin="10dp" /> <RelativeLayout  android:layout_width="match_parent"  android:layout_height="wrap_content">  <Button   android:id="@+id/btn_choose"   android:layout_width="wrap_content"   android:layout_height="wrap_content"   android:layout_margin="5dp"   android:layout_weight="1"   android:text="選擇照片" />  <Button   android:id="@+id/btn_save"   android:layout_width="wrap_content"   android:layout_height="wrap_content"   android:layout_alignParentRight="true"   android:layout_margin="5dp"   android:layout_weight="1"   android:text="保存照片" />  <Button   android:id="@+id/btn_clear"   android:layout_width="wrap_content"   android:layout_height="wrap_content"   android:layout_alignParentBottom="true"   android:layout_centerHorizontal="true"   android:layout_margin="5dp"   android:layout_weight="1"   android:text="擦除筆跡" /> </RelativeLayout></FrameLayout>

根據機型設置縮放比例

  switch (model){   case "MI 4LTE":    scale = 1.1f;    break;   case "HUAWEI NXT-AL10":    scale = 1.5f;    break;  }

效果圖如下

android,照片,涂鴉

二、繪制涂鴉

實現代碼如下:

 @Override public boolean onTouch(View view, MotionEvent motionEvent) {  int action = motionEvent.getAction();  switch (action) {   case MotionEvent.ACTION_CANCEL:    break;   case MotionEvent.ACTION_DOWN:    downX = motionEvent.getX() * scale;    downY = motionEvent.getY() * scale;    break;   case MotionEvent.ACTION_UP:    upX = motionEvent.getX() * scale;    upY = motionEvent.getY() * scale;    canvas.drawLine(downX, downY, upX, upY, paint);    iv_drawpicture.invalidate();    break;   case MotionEvent.ACTION_MOVE:    upX = motionEvent.getX() * scale;    upY = motionEvent.getY() * scale;    canvas.drawLine(downX, downY, upX, upY, paint);    iv_drawpicture.invalidate();    downX = upX;    downY = upY;    break;   default:    break;  }  return true; }

效果圖如下:

android,照片,涂鴉

三、保存繪制涂鴉后的圖片

實現代碼如下:

try {  Uri imageUri = getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, new ContentValues());  OutputStream os = getContentResolver().openOutputStream(imageUri);  //compress方法將圖片轉換成JPG或者PNG格式  drawBitmap.compress(Bitmap.CompressFormat.JPEG, 90, os);  Toast.makeText(this, "Saved:" + imageUri.toString(), Toast.LENGTH_LONG).show(); } catch (FileNotFoundException e) {  e.printStackTrace(); }

四、擦除涂鴉筆跡

實現代碼如下:

 drawBitmap = Bitmap.createBitmap(bmp.getWidth(), bmp.getHeight(), bmp.getConfig()); canvas = createCanvas(drawBitmap); paint = createPaint(); canvas.drawBitmap(bmp, 0, 0, paint); iv_drawpicture.setImageBitmap(drawBitmap); iv_drawpicture.setOnTouchListener(this);

在照片上繪制涂鴉暫時就到這里,功能比較單一。

以上這篇android 實現在照片上繪制涂鴉的方法就是小編分享給大家的全部內容了,希望這篇文章能夠為小伙伴們提供一些幫助,也希望大家多多支持VEVB武林網。


注:相關教程知識閱讀請移步到Android開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 丹巴县| 上饶市| 比如县| 建瓯市| 澄城县| 奉新县| 东海县| 古浪县| 滨海县| 全椒县| 贵定县| 绥棱县| 巴塘县| 汝南县| 宁明县| 鄯善县| 和田市| 衡东县| 绵阳市| 镇远县| 北碚区| 越西县| 三门县| 盐津县| 肇源县| 荥阳市| 元江| 祁门县| 平顶山市| 沙湾县| 平江县| 白水县| 达拉特旗| 绵阳市| 来宾市| 额济纳旗| 伊金霍洛旗| 温州市| 林周县| 宣武区| 凤阳县|