a亚洲精品_精品国产91乱码一区二区三区_亚洲精品在线免费观看视频_欧美日韩亚洲国产综合_久久久久久久久久久成人_在线区

首頁 > 系統 > Android > 正文

Android實現畫畫板案例

2019-10-21 21:26:12
字體:
來源:轉載
供稿:網友

本文實例為大家分享了Android實現畫畫板的具體代碼,供大家參考,具體內容如下

① 準備一個布局文件

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main"android:layout_width="match_parent" android:layout_height="match_parent"android:paddingBottom="@dimen/activity_vertical_margin"android:paddingLeft="@dimen/activity_horizontal_margin"android:paddingRight="@dimen/activity_horizontal_margin"android:paddingTop="@dimen/activity_vertical_margin"android:orientation="vertical"tools:context="com.example.it.MainActivity"><LinearLayout  android:layout_width="match_parent"  android:layout_height="wrap_content">  <Button    android:text="修改顏色"    android:onClick="color"    android:layout_width="wrap_content"    android:layout_height="wrap_content" />  <Button    android:text="粗細+1"    android:onClick="size"    android:layout_width="wrap_content"    android:layout_height="wrap_content" />  <Button    android:text="保存圖片"    android:onClick="save"    android:layout_width="wrap_content"    android:layout_height="wrap_content" /></LinearLayout><ImageView  android:id="@+id/iv_bg"  android:layout_width="wrap_content"  android:layout_height="wrap_content" /></LinearLayout>

② 核心代碼

package com.example.it;import android.content.Intent;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Matrix;import android.graphics.Paint;import android.net.Uri;import android.os.Environment;import android.os.SystemClock;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.util.Log;import android.view.MotionEvent;import android.view.View;import android.widget.ImageView;import java.io.File;import java.io.FileNotFoundException;import java.io.FileOutputStream;public class MainActivity extends AppCompatActivity {private final String TAG = getClass().getSimpleName();private ImageView iv_show;private Bitmap copyBm;private float x;private float y;private Paint paint;private int paintsize = 1;private FileOutputStream fos;@Overrideprotected void onCreate(Bundle savedInstanceState) {  super.onCreate(savedInstanceState);  setContentView(R.layout.activity_main);  //初始化控件  iv_show = (ImageView) findViewById(R.id.iv_bg);  //創建一個空白的bitmap  Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.bg);  copyBm = Bitmap.createBitmap(bitmap.getWidth(), bitmap.getHeight(), bitmap.getConfig());  //創建畫布  final Canvas canvas = new Canvas(copyBm);  //使用畫布繪制圖片  paint = new Paint();  canvas.drawBitmap(bitmap,new Matrix(), paint);  iv_show.setImageBitmap(copyBm);  //為畫筆在屏幕上移動設置監聽事件  iv_show.setOnTouchListener(new View.OnTouchListener() {    @Override    public boolean onTouch(View v, MotionEvent event) {      //獲取當前事件的類型      int action = event.getAction();      switch (action){        case MotionEvent.ACTION_DOWN:          //如果是手指按下時,記錄一下手指的位置          x = event.getX();          y = event.getY();          Log.e(TAG,x+"******"+y);          break;        case MotionEvent.ACTION_MOVE:          //如果手指正在移動時          float x1 = event.getX();          float y1 = event.getY();          canvas.drawLine(x,y,x1,y1, paint);          x = x1;          y = y1;          Log.e(TAG,x1+"**********"+y1);          break;        case MotionEvent.ACTION_UP:          break;      }      iv_show.setImageBitmap(copyBm);      return true;    }  });}//修改顏色public void color(View view) {  paint.setColor(Color.RED);}//修改線條粗細public void size(View view) {  paintsize+=1;  paint.setStrokeWidth(paintsize);}//保存圖片public void save(View view) {  //設置圖片保存的位置  File file = new File(Environment.getExternalStorageDirectory(), SystemClock.currentThreadTimeMillis()+".png");  try {    fos = new FileOutputStream(file);  } catch (FileNotFoundException e) {    e.printStackTrace();  }  //設置參數保存的質量  copyBm.compress(Bitmap.CompressFormat.PNG,100,fos);  //定義一個意圖,通過發出廣播告訴系統掃描指定的位置的文件  Intent intent = new Intent();  intent.setAction(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);  intent.setData(Uri.fromFile(file));  sendBroadcast(intent);}}


③ 權限信息

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VEVB武林網。


注:相關教程知識閱讀請移步到Android開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 黄色免费网站观看 | 动漫精品一区二区三区 | 国产日韩在线播放 | 精品无人乱码一区二区三区 | 欧美成人免费视频 | 一区二区三区精品 | 日韩福利视频 | 一区二区精品 | 在线免费观看黄色av | 中文字幕一区二区三区在线视频 | 久久亚洲精品国产一区最新章节 | 欧美一区二区大片 | 国产91在线网站 | 日韩在线视频一区二区三区 | 人人爽人人人 | 在线久草| 日本亚洲网站 | 日韩视频一区二区三区 | 国产成人精品一区二区三区视频 | 国产福利91精品 | 欧美一区在线看 | 99在线精品视频 | 羞羞视频网站在线看 | 网址av | 精品在线看 | 国产91精选 | 色婷婷一区 | 一区二区三区视频在线 | 国内精品国产三级国产在线专 | 黄桃av| 日本欧美不卡 | 日韩有码一区 | 亚洲国产精久久久久久久 | 成人av一区二区三区 | 国产午夜精品一区二区三区 | 我爱avav色aⅴ爱avav | 永久91嫩草亚洲精品人人 | 欧美日韩精品一区二区三区蜜桃 | 亚洲精品久久久一区二区三区 | 亚洲国产精品久久久男人的天堂 | 在线观看免费国产 |