成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

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

Android實現手繪功能

瀏覽:96日期: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
相關文章:
成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久
91久久人澡人人添人人爽欧美| 国产日韩欧美一区在线| 日本不卡不码高清免费观看| 青青草国产精品97视觉盛宴| av成人老司机| 亚洲一区亚洲| 91精品国产综合久久蜜臀| 国产日韩高清在线| 亚洲日本一区二区| 激情文学综合插| 亚洲高清视频一区| 欧美中文字幕一区二区三区| 国产网站一区二区三区| 亚洲第一会所有码转帖| 国产成人免费视频| 亚洲精品乱码| 91精品国产欧美一区二区18| 中文字幕一区二区视频| 麻豆精品新av中文字幕| 欧美日韩视频| 欧洲一区二区av| 国产精品另类一区| 免费观看30秒视频久久| 欧美一区免费| 欧美日韩久久一区| 成人欧美一区二区三区| 国产一区二区三区免费观看| 亚洲精品乱码| 精品理论电影在线| 亚洲国产成人精品视频| 91在线一区二区| 欧美亚一区二区| 17c精品麻豆一区二区免费| 久久国产成人午夜av影院| 欧美三级乱码| 欧美一区二区三区公司| 一区二区在线免费观看| 成人精品鲁一区一区二区| 国产精品日韩精品欧美精品| 欧美xfplay| 免费在线看成人av| 欧美日韩综合网| 欧美一区二区三区色| 亚洲午夜久久久久中文字幕久| 94色蜜桃网一区二区三区| 欧美自拍偷拍一区| 亚洲美女在线一区| 欧美xx69| 日韩欧美一区二区在线视频| 日日夜夜精品视频天天综合网| 午夜视频久久久| 91麻豆精品国产91久久久久久久久 | 国产乱妇无码大片在线观看| 亚洲欧美日韩专区| 欧美激情综合在线| www.欧美日韩国产在线| 欧美精品久久久久久久久老牛影院| 亚洲国产日韩一级| 亚洲精品1区| 久久精品亚洲麻豆av一区二区| 国产一区二区三区在线观看免费 | 国产原创一区二区| 色欧美88888久久久久久影院| 亚洲欧美aⅴ...| 国产伊人精品| 久久精品一区二区三区av| 国产成人欧美日韩在线电影 | 欧美精品乱码久久久久久按摩| 亚洲第一会所有码转帖| 亚洲国产精选| 中文字幕精品在线不卡| 成人久久视频在线观看| 91精品国产一区二区人妖| 蜜桃久久久久久| 日本久久一区二区| 日韩高清在线不卡| 久久免费高清| 亚洲电影第三页| 亚洲一区二区三区涩| 亚洲精品高清在线| 亚洲区第一页| 亚洲乱码中文字幕综合| 亚洲国产精品一区二区第一页| 国产日韩在线不卡| 91浏览器打开| 国产亚洲综合性久久久影院| voyeur盗摄精品| 久久久久久麻豆| 99re视频精品| 中文字幕欧美三区| 韩国久久久久| 亚洲图片激情小说| 99国产一区| 亚洲香蕉伊在人在线观| 免费日韩视频| 全部av―极品视觉盛宴亚洲| 欧美性猛交xxxx乱大交退制版| 日韩高清在线一区| 欧美日韩国产综合视频在线观看| 久草这里只有精品视频| 欧美精品第1页| 国产一区二区伦理片| 欧美一区午夜视频在线观看| 国产黄色91视频| 久久只精品国产| 欧美日韩高清在线一区| 国产精品传媒入口麻豆| 国产精品一区二区欧美| 日韩成人精品在线观看| 91精品欧美久久久久久动漫| 成+人+亚洲+综合天堂| 国产欧美日韩久久| 悠悠资源网久久精品| 亚洲成人一区二区在线观看| 欧洲av在线精品| 国产一区二区三区免费播放| 欧美一级电影网站| 欧美jizzhd精品欧美巨大免费| 日韩美女视频一区二区| 欧美专区18| 国内精品久久久久影院一蜜桃| 精品日韩一区二区| 国产在线成人| 偷窥少妇高潮呻吟av久久免费| 欧美体内she精视频| a亚洲天堂av| 亚洲免费视频中文字幕| 老牛嫩草一区二区三区日本| 国产精品一区一区三区| 国产精品人成在线观看免费| 久久精彩视频| 狠狠色狠狠色综合系列| 久久久久久久电影| 亚洲三级毛片| 美女被吸乳得到大胸91| 久久久www成人免费无遮挡大片| 亚洲裸体视频| 久久91精品久久久久久秒播| 国产日韩av一区二区| 国产伦精品一区二区三区视频黑人| 蜜乳av一区二区| 欧美哺乳videos| 在线精品亚洲| 蜜臀av性久久久久蜜臀aⅴ流畅| 日韩精品中文字幕一区| 亚洲午夜在线观看| 婷婷国产在线综合| 久久综合九色综合97婷婷女人| 夜夜爽av福利精品导航| 韩国v欧美v日本v亚洲v| 国产精品美女久久久久久久久久久| 色婷婷综合久色| 色综合网站在线| 日本不卡的三区四区五区| 国产调教视频一区| 91豆麻精品91久久久久久| 午夜精品婷婷| 老司机免费视频一区二区三区| 中文字幕免费不卡在线| 欧美色手机在线观看| 狠狠色综合网| 国模大尺度一区二区三区| 日韩理论片网站| 91精品久久久久久久久99蜜臂| 亚洲欧洲精品一区| 高清国产一区二区| 亚洲一区二区三区三| 日韩免费电影一区| 久久精品中文| 欧美特黄一区| 国产精品一区在线观看乱码| 亚洲最新在线观看| 国产亚洲女人久久久久毛片| 欧美亚一区二区| 日韩一级不卡| www.欧美.com| 蜜桃久久久久久久| 亚洲天堂成人网| 精品女同一区二区| 欧美亚洲综合久久| 亚洲国产欧美日韩| 91在线云播放| 黄页视频在线91| 亚洲成人动漫av| 一区精品在线播放| 久久女同精品一区二区| 欧美日韩一级大片网址| 午夜在线观看免费一区| 欧美激情四色| 风流少妇一区二区| 麻豆精品视频在线观看免费 | 欧美日韩一区中文字幕| 国产视频一区三区| 国内一区二区三区在线视频| 成人国产亚洲欧美成人综合网 | 中文字幕av一区二区三区免费看| 91 com成人网| 色婷婷综合久久久久中文一区二区| 亚洲高清网站| 欧美aⅴ99久久黑人专区|