日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

Android實現手繪功能

瀏覽:126日期:2022-09-23 18:43:39

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

布局文件如下

<?xml version='1.0' encoding='utf-8'?><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: android:layout_width='1200px' android:layout_height='1500px' android:layout_alignParentLeft='true' android:layout_alignParentRight='true' android:layout_alignParentStart='true' /> <LinearLayout android: 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: 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: 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
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
欧美成人一二区| 亚洲婷婷丁香| 日韩国产在线不卡视频| 蜜桃av一区二区三区电影| 亚洲资源av| 日韩在线观看一区二区| 亚洲开心激情| 欧美在线日韩| 国产精品成人自拍| 国产一区二区三区精品在线观看| 精品视频国产| 国产粉嫩在线观看| 荡女精品导航| 夜鲁夜鲁夜鲁视频在线播放| 亚洲天堂成人| 日本欧美在线看| 日本va欧美va精品发布| 国产高清日韩| 日韩欧美中文| 宅男噜噜噜66国产日韩在线观看| 免费的成人av| 国产欧美一区| 鲁鲁在线中文| 国产精品呻吟| 国产乱人伦精品一区| 成人影视亚洲图片在线| av一区二区高清| 午夜视频一区二区在线观看| 欧美日韩中文| 国产成人精品一区二区三区免费| 99久久夜色精品国产亚洲1000部| 天堂成人免费av电影一区| 国产欧美日韩影院| 久久精品成人| 青青草国产成人99久久| 黄色在线网站噜噜噜| 国产免费成人| 精品一区二区三区四区五区| 蜜臀av免费一区二区三区| 亚洲日本三级| 成人污污视频| 亚洲久久视频| 亚洲风情在线资源| 99国产精品久久久久久久| 日本视频一区二区| 日韩精品一卡| 91精品丝袜国产高跟在线| 极品av在线| 婷婷成人av| se01亚洲视频| 7m精品国产导航在线| 999国产精品| 国产免费播放一区二区| 激情综合自拍| 欧美成a人片免费观看久久五月天| 国产二区精品| 国产精品对白| 亚洲一区二区免费在线观看| 久久久精品国产**网站| 丝袜美腿成人在线| 日韩大片在线播放| 欧美在线首页| 国产精品日本欧美一区二区三区| 麻豆国产精品一区二区三区| 美日韩精品视频| 欧美日韩国产观看视频| 欧美一级一区| 99视频在线精品国自产拍免费观看| 国产精品欧美在线观看| 免费日韩视频| 久久久久中文| 久久精品国产网站| 亚洲精品伊人| 99精品电影| 荡女精品导航| 国产欧美激情| 日韩有吗在线观看| 欧美午夜不卡影院在线观看完整版免费| 国产精品99久久久久久董美香| 男人的天堂久久精品| 久久男女视频| 国产福利91精品一区二区| 日韩av一区二区三区四区| 在线亚洲免费| 国产精品99免费看| 在线人成日本视频| 欧美1区二区| 日本高清久久| 亚洲一区日韩在线| 欧美日韩中文字幕一区二区三区| 麻豆一区二区99久久久久| 亚洲精品一二| 视频一区视频二区中文| 欧美日韩国产免费观看视频| 欧美片第1页| 精品国产18久久久久久二百| 国产日韩欧美一区二区三区在线观看| 亚洲一区区二区| 不卡一区2区| 999久久久精品国产| 四虎国产精品免费观看| 久久精品亚洲| 国产高清日韩| 国产一级成人av| 日本精品国产| 日韩一区二区三区四区五区| 视频一区在线播放| 免费人成在线不卡| 亚洲在线国产日韩欧美| 亚洲国产一区二区在线观看| 欧美日韩在线二区| 在线日韩一区| 亚洲福利专区| 欧美一区二区三区高清视频| 亚洲国产综合在线看不卡| 亚洲黑丝一区二区| 免费不卡中文字幕在线| 99成人在线视频| 91精品婷婷色在线观看| 久久在线视频免费观看| 色爱综合av| 欧美91视频| 国产婷婷精品| 视频一区二区三区在线| 日韩制服丝袜av| 亚洲日本三级| 欧美综合精品| 国产精品一区二区中文字幕| 国产精品一区二区美女视频免费看| 91大神在线观看线路一区| 国产日韩亚洲| 久久精品国产亚洲aⅴ| 高潮久久久久久久久久久久久久| 麻豆一区二区三| 中国字幕a在线看韩国电影| 日本不卡免费高清视频在线| 九色porny丨国产首页在线| 久久久亚洲一区| 黄色欧美日韩| 亚洲精品美女91| 国产欧美亚洲一区| 高清一区二区三区av| 久久网站免费观看| 日韩精品一二区| 国产亚洲精品美女久久| 精品视频自拍| 深夜福利视频一区二区| 影视先锋久久| 亚洲一区av| 国产伦精品一区二区三区千人斩| 色欧美自拍视频| 99成人在线| 国产伦理一区| 91精品国产调教在线观看| 国产精品免费看| 欧美日韩xxxx| jizzjizz中国精品麻豆| 91精品1区| 日韩不卡免费视频| 伊人久久在线| 中文字幕一区二区av| 国产精品xxx在线观看| 精品捆绑调教一区二区三区| 99在线|亚洲一区二区| 欧美日韩一区自拍| 高清av不卡| 在线国产精品一区| 精品国产一区二区三区噜噜噜| 亚洲一级高清| 欧美一区精品| 秋霞影院一区二区三区| 日韩精品成人在线观看| 久久久久久色| 日本不良网站在线观看| 久久xxxx| 精品视频一区二区三区在线观看| 欧美午夜精彩| 国产精品一区二区三区四区在线观看| 亚洲伦乱视频| 日本va欧美va精品| 久久精品亚洲人成影院| 日韩精品欧美大片| 日韩精品dvd| 日本免费新一区视频| 丝袜诱惑一区二区| 日本aⅴ亚洲精品中文乱码| 日韩精品一区二区三区免费观看| 日本午夜精品视频在线观看| 日韩电影在线视频| 欧美亚洲人成在线| 1024精品久久久久久久久| 国产精品久久久亚洲一区| 欧美日韩国产精品一区二区亚洲| 国产欧美一级| 国产精品嫩草99av在线| 国产videos久久| 日韩中文字幕无砖| 美女久久久久| 日韩av免费大片| 欧美一区二区三区久久|