亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

詳解Android如何實現手繪功能

發布時間:2020-07-20 16:18:51 來源:億速云 閱讀:209 作者:小豬 欄目:移動開發

小編這次要給大家分享的是詳解Android如何實現手繪功能,文章內容豐富,感興趣的小伙伴可以來了解一下,希望大家閱讀完這篇文章之后能夠有所收獲。

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

布局文件如下

<&#63;xml version="1.0" encoding="utf-8"&#63;>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
 xmlns:app="http://schemas.android.com/apk/res-auto"
 xmlns:tools="http://schemas.android.com/tools"
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 tools:context="com.example.administrator.main.DrawActivity">
 
 <ImageView
  android:id="@+id/iv"
  android:layout_width="1200px"
  android:layout_height="1500px"
  android:layout_alignParentLeft="true"
  android:layout_alignParentRight="true"
  android:layout_alignParentStart="true" />
 
 <LinearLayout
  android:id="@+id/linearLayout4"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:layout_alignParentBottom="true"
  android:layout_gravity="center_horizontal"
  android:orientation="horizontal">
 
 </LinearLayout>
 
 <Button
  android:id="@+id/btn_resume"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:layout_alignParentBottom="true"
  android:layout_alignParentEnd="true"
  android:layout_marginEnd="79dp"
  android:text="重繪" />
 
 <Button
  android:id="@+id/btn_save"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:layout_alignBottom="@+id/linearLayout4"
  android:layout_marginStart="91dp"
  android:layout_toEndOf="@+id/linearLayout4"
  android:text="保存" />
</RelativeLayout>

Activity代碼如下,其中線的顏色,寬度等屬性都可以修改。

package com.example.administrator.main;
 
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.net.Uri;
import android.os.Environment;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.Toast;
 
import java.io.File;
import java.io.FileOutputStream;
 
public class DrawActivity extends AppCompatActivity {
 private ImageView iv;
 private Bitmap baseBitmap;
 private Button btn_resume;
 private Button btn_save;
 private Canvas canvas;
 private Paint paint;
 
 float radio;
 
 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_draw);
  radio = 10;
  iv = (ImageView) findViewById(R.id.iv);
  // 初始化一個畫筆,筆觸寬度為5,顏色為紅色
  paint = new Paint();
  paint.setStrokeWidth(radio);
  paint.setColor(Color.BLACK);
  iv = (ImageView) findViewById(R.id.iv);
  btn_resume = (Button) findViewById(R.id.btn_resume);
  btn_save = (Button) findViewById(R.id.btn_save);
 
  btn_resume.setOnClickListener(click);
  btn_save.setOnClickListener(click);
  iv.setOnTouchListener(touch);
 }
 
 private View.OnTouchListener touch = new View.OnTouchListener() {
  // 定義手指開始觸摸的坐標
  float startX;
  float startY;
 
  @Override
  public boolean onTouch(View v, MotionEvent event) {
   switch (event.getAction()) {
    // 用戶按下動作
    case MotionEvent.ACTION_DOWN:
     // 第一次繪圖初始化內存圖片,指定背景為白色
     if (baseBitmap == null) {
      baseBitmap = Bitmap.createBitmap(iv.getWidth(),
        iv.getHeight(), Bitmap.Config.ARGB_8888);
      canvas = new Canvas(baseBitmap);
      canvas.drawColor(Color.WHITE);
     }
     // 記錄開始觸摸的點的坐標
     startX = event.getX();
     startY = event.getY();
     break;
    // 用戶手指在屏幕上移動的動作
    case MotionEvent.ACTION_MOVE:
     // 記錄移動位置的點的坐標
     float stopX = event.getX();
     float stopY = event.getY();
 
     Thread t = new Thread(new Runnable() {
      @Override
      public void run() {
       radio += 0.1;
 
       try {
        Thread.sleep(1000);
       } catch (InterruptedException e) {
        e.printStackTrace();
       }
      }
     });
     t.start();
 
     paint.setStrokeWidth(radio);
     //根據兩點坐標,繪制連線
     canvas.drawLine(startX, startY, stopX, stopY, paint);
 
     // 更新開始點的位置
     startX = event.getX();
     startY = event.getY();
     // 把圖片展示到ImageView中
     iv.setImageBitmap(baseBitmap);
     break;
    case MotionEvent.ACTION_UP:
     radio = 5;
     break;
    default:
     break;
   }
   return true;
  }
 };
 private View.OnClickListener click = new View.OnClickListener() {
 
  @Override
  public void onClick(View v) {
   switch (v.getId()) {
    case R.id.btn_save:
     saveBitmap();
     break;
    case R.id.btn_resume:
     resumeCanvas();
     break;
    default:
     break;
   }
  }
 };
 
 /**
  * 保存圖片到SD卡上
  */
 protected void saveBitmap() {
  try {
   // 保存圖片到SD卡上
   String fileName = "/sdcard/"+System.currentTimeMillis() + ".png";
   File file = new File(fileName);
   FileOutputStream stream = new FileOutputStream(file);
   baseBitmap.compress(Bitmap.CompressFormat.PNG, 100, stream);
   Toast.makeText(DrawActivity.this, "保存圖片成功", Toast.LENGTH_SHORT).show();
    // Android設備Gallery應用只會在啟動的時候掃描系統文件夾
    // 這里模擬一個媒體裝載的廣播,用于使保存的圖片可以在Gallery中查看
   Intent intent = new Intent();
   intent.setAction(Intent.ACTION_MEDIA_MOUNTED);
   intent.setData(Uri.fromFile(Environment
     .getExternalStorageDirectory()));
   sendBroadcast(intent);
  } catch (Exception e) {
   Toast.makeText(DrawActivity.this, "保存圖片失敗", Toast.LENGTH_SHORT).show();
   e.printStackTrace();
  }
 }
 
 // 手動清除畫板的繪圖,重新創建一個畫板
 protected void resumeCanvas() {
  if (baseBitmap != null) {
   baseBitmap = Bitmap.createBitmap(iv.getWidth(),
     iv.getHeight(), Bitmap.Config.ARGB_8888);
   canvas = new Canvas(baseBitmap);
   canvas.drawColor(Color.WHITE);
   iv.setImageBitmap(baseBitmap);
   Toast.makeText(DrawActivity.this, "清除畫板成功,可以重新開始繪圖", Toast.LENGTH_SHORT).show();
  }
 }
}

看完這篇關于詳解Android如何實現手繪功能的文章,如果覺得文章內容寫得不錯的話,可以把它分享出去給更多人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

安新县| 彩票| 阿拉善右旗| 遂宁市| 临颍县| 金山区| 景洪市| 黑龙江省| 麻江县| 高碑店市| 揭阳市| 旬阳县| 黄石市| 江川县| 新源县| 霸州市| 东阳市| 巨野县| 彭泽县| 大冶市| 芦溪县| 如东县| 张家口市| 南通市| 团风县| 简阳市| 靖西县| 彭州市| 冷水江市| 界首市| 都昌县| 库车县| 大新县| 蛟河市| 朝阳市| 沾益县| 泌阳县| 屯门区| 永嘉县| 中方县| 新龙县|