From e62c3fbc636bce5bcc83ac0f61b579ed21e5a85b Mon Sep 17 00:00:00 2001 From: dingruihua <2769593615@qq.com> Date: Sat, 22 Oct 2022 11:06:08 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E4=BA=86=E7=94=BB=E6=9D=BF?= =?UTF-8?q?=E7=9A=84=E4=BF=9D=E5=AD=98=EF=BC=8C=E6=94=B9=E7=B2=97=E7=BB=86?= =?UTF-8?q?=EF=BC=8C=E6=94=B9=E9=A2=9C=E8=89=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/net/micode/notes/PaintView.java | 84 ++++++++-------- .../net/micode/notes/ui/BoardActivity.java | 95 ++++++++++++++++++ src/main/res/drawable-hdpi/paint_back.png | Bin 0 -> 445 bytes src/main/res/drawable-hdpi/paint_save.png | Bin 0 -> 458 bytes src/main/res/layout/activity_paint.xml | 34 +++++-- src/main/res/values/styles.xml | 4 +- 6 files changed, 162 insertions(+), 55 deletions(-) create mode 100644 src/main/res/drawable-hdpi/paint_back.png create mode 100644 src/main/res/drawable-hdpi/paint_save.png diff --git a/src/main/java/net/micode/notes/PaintView.java b/src/main/java/net/micode/notes/PaintView.java index 12ca9b5..5b121dd 100644 --- a/src/main/java/net/micode/notes/PaintView.java +++ b/src/main/java/net/micode/notes/PaintView.java @@ -23,7 +23,7 @@ import android.view.View; /** * - * @category: View实现涂鸦、撤销以及重做功能 + * @category: View实现改变颜色、粗细、涂鸦、撤销以及重做功能 * @author: dingruihua * @date: 2022.10.10 * @@ -34,7 +34,7 @@ public class PaintView extends View { private Canvas mCanvas; private Path mPath; private Paint mBitmapPaint; - private Bitmap mBitmap; + public Bitmap mBitmap; private Paint mPaint; private ArrayList savePath; @@ -47,6 +47,9 @@ public class PaintView extends View { private int bitmapWidth; private int bitmapHeight; + private int changed_width=0; + private int changed_color=0; + public PaintView(Context c) { super(c); //得到屏幕的分辨率 @@ -80,7 +83,7 @@ public class PaintView extends View { mPaint = new Paint(); mPaint.setAntiAlias(true); mPaint.setDither(true); - mPaint.setColor(0xFF00FF00); + mPaint.setColor(0xFF000000); mPaint.setStyle(Paint.Style.STROKE); mPaint.setStrokeJoin(Paint.Join.ROUND); mPaint.setStrokeCap(Paint.Cap.ROUND); @@ -101,7 +104,29 @@ public class PaintView extends View { } + public void changewidth(){ + if (changed_width==0) { + mPaint.setStrokeWidth(50); + changed_width = 1; + } + else{ + mPaint.setStrokeWidth(10); + changed_width = 0; + } + } + + public void changecolor(){ + if (changed_color==0) { + mPaint.setColor(0xFFFF0000); + changed_color = 1; + } + else{ + mPaint.setColor(0xFF000000); + changed_color = 0; + } + + } @Override protected void onDraw(Canvas canvas) { @@ -126,8 +151,16 @@ public class PaintView extends View { System.out.println(savePath.size()+"--------------"); if(savePath != null && savePath.size() > 0){ - //调用初始化画布函数以清空画布 - initCanvas(); + //清空画布 + mBitmapPaint = new Paint(Paint.DITHER_FLAG); + //画布大小 + mBitmap = Bitmap.createBitmap(bitmapWidth, bitmapHeight, + Bitmap.Config.RGB_565); + mCanvas = new Canvas(mBitmap); //所有mCanvas画的东西都被保存在了mBitmap中 + + mCanvas.drawColor(Color.WHITE); + mPath = new Path(); + mBitmapPaint = new Paint(Paint.DITHER_FLAG); //将路径保存列表中的最后一个元素删除 ,并将其保存在路径删除列表中 DrawPath drawPath = savePath.get(savePath.size() - 1); @@ -168,52 +201,15 @@ public class PaintView extends View { public void removeAllPaint(){ //调用初始化画布函数以清空画布 initCanvas(); + changed_color=0; + changed_width=0; invalidate();//刷新 savePath.clear(); deletePath.clear(); } -/* - * 保存所绘图形 - * 返回绘图文件的存储路径 - * - public String saveBitmap(){ - //获得系统当前时间,并以该时间作为文件名 - SimpleDateFormat formatter = new SimpleDateFormat ("yyyyMMddHHmmss"); - Date curDate = new Date(System.currentTimeMillis());//获取当前时间 - String str = formatter.format(curDate); - String paintPath = ""; - str = str + "paint.png"; - File dir = new File("/sdcard/notes/"); - File file = new File("/sdcard/notes/",str); - if (!dir.exists()) { - dir.mkdir(); - } - else{ - if(file.exists()){ - file.delete(); - } - } - try { - FileOutputStream out = new FileOutputStream(file); - mBitmap.compress(Bitmap.CompressFormat.PNG, 100, out); - out.flush(); - out.close(); - //保存绘图文件路径 - paintPath = "/sdcard/notes/" + str; - - - } catch (FileNotFoundException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } catch (IOException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - return paintPath; - }*/ private void touch_start(float x, float y) { diff --git a/src/main/java/net/micode/notes/ui/BoardActivity.java b/src/main/java/net/micode/notes/ui/BoardActivity.java index 4098554..fee4249 100644 --- a/src/main/java/net/micode/notes/ui/BoardActivity.java +++ b/src/main/java/net/micode/notes/ui/BoardActivity.java @@ -1,6 +1,8 @@ package net.micode.notes.ui; import android.app.Activity; +import android.content.Intent; +import android.graphics.Bitmap; import android.os.Bundle; import android.view.View; import android.widget.ImageButton; @@ -8,6 +10,13 @@ import android.widget.ImageButton; import net.micode.notes.PaintView; import net.micode.notes.R; +import java.io.File; +import java.io.FileNotFoundException; +import java.io.FileOutputStream; +import java.io.IOException; +import java.text.SimpleDateFormat; +import java.util.Date; + public class BoardActivity extends Activity { private PaintView paintView; @@ -41,6 +50,92 @@ public class BoardActivity extends Activity { paintView.removeAllPaint(); } }); + + final ImageButton paint_save = (ImageButton) findViewById(R.id.save); + //为点击图片按钮设置监听器 + paint_save.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + saveBitmap(); + } + }); + + final ImageButton paint_width = (ImageButton) findViewById(R.id.paint_width); + //为点击图片按钮设置监听器 + paint_width.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + paintView.changewidth(); + } + }); + + final ImageButton paint_color = (ImageButton) findViewById(R.id.paint_color); + //为点击图片按钮设置监听器 + paint_color.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + paintView.changecolor(); + } + }); + + final ImageButton paint_back = (ImageButton) findViewById(R.id.paint_back); + //为点击图片按钮设置监听器 + paint_back.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + /* 新建一个Intent对象 */ + Intent intent = new Intent(); + /* 指定intent要启动的类 */ + intent.setClass(BoardActivity.this, NotesListActivity.class); + /* 启动一个新的Activity */ + startActivity(intent); + /* 关闭当前的Activity */ + BoardActivity.this.finish(); + } + }); + paintView = (PaintView)findViewById(R.id.paint_layout); } + /* 保存所绘图形 + * 返回绘图文件的存储路径 + */ + public String saveBitmap(){ + //获得系统当前时间,并以该时间作为文件名 + SimpleDateFormat formatter = new SimpleDateFormat ("yyyyMMddHHmmss"); + Date curDate = new Date(System.currentTimeMillis());//获取当前时间 + String str = formatter.format(curDate); + String paintPath = ""; + str = str + "paint.png"; + File dir = new File("/sdcard/notes"); + File file = new File("/sdcard/notes",str); + if (!dir.exists()) { + dir.mkdir(); + } + else{ + if(file.exists()){ + file.delete(); + } + } + + try { + FileOutputStream out = new FileOutputStream(file); + paintView.mBitmap.compress(Bitmap.CompressFormat.PNG, 100, out); + out.flush(); + out.close(); + //保存绘图文件路径 + paintPath = "/sdcard/notes/" + str; + + + } catch (FileNotFoundException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + + return paintPath; + } } + + diff --git a/src/main/res/drawable-hdpi/paint_back.png b/src/main/res/drawable-hdpi/paint_back.png new file mode 100644 index 0000000000000000000000000000000000000000..d0dcb4ea428e27749288ba34e7bedebe0c2a83bd GIT binary patch literal 445 zcmeAS@N?(olHy`uVBq!ia0vp^`arD3!3HFiUopu8DaPU;cPEB*=VV?2IV|apzK#qG z8~eHcB(eheoCO|{#S9EWB_ParFHODzs3FMH#W5tq`R#PYz7_`o*Y3Rxa~QgrPjfOj z?qC!WQFnN}gV94qjCq!@!p1oa?J2=aZuZPbnY473_2e(cll2b&_FP)uUnp~&GyYWn zkH219_Glra8&9XFHrkv&+9?)RDbl})hqSZobk!=o4?j+BZ)S~SG%Su^-VZ&|IuZW#^;qur_Lw; zRNzRMm+mo%CFZ*5<^PGZ)I?kr{pMHdytm-Xxn0)z`1t&UNU<-q`XI6W@2y)BIoc8r zSoBSA(2=`urqR8-Pq%An%TpEZNvl8cCEVV2g(2nppS|mEtlGph!CYtCD_Mry(}asE zS(vA!R&LczXV}zMd;GO^`{L5br-D2U`SVI+kGAlYRr*Dg#fe45i6S9hhW#N*{TuAn SzV!fuoWax8&t;ucLK6T1O0>=Z literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-hdpi/paint_save.png b/src/main/res/drawable-hdpi/paint_save.png new file mode 100644 index 0000000000000000000000000000000000000000..458dd87d4f07e580808a873ab6deebc6aea105b9 GIT binary patch literal 458 zcmV;*0X6=KP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGmbN~PnbOGLGA9w%&0bfZ(K~zXfWBd;U z3^V{tP@3uh#l_wIGZ-#ixenzK2lR9`8H)4L7?_w)-H2kay1qR_pq~eWw3Gx?1V8xq z?;peBWosGSTdR0K2N?_lYI=76Po6#xfX#4>FkU=&B7>QU z0mEOQNJ}zENs2>xnBel&8w`nQMGWDgew2qXI+!qJ&i|OCy#F{| z3<9@q-(&dj@e`Ph56H?$F-S^?f!UL%&u2Jw<^lr?n1=;`4D}63g!1qM0RcXSlLt3L zc@TipV3 + android:id="@+id/paint_reset" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginLeft="240dp" + android:layout_marginTop="0dp" + android:layout_marginBottom="0dp" + android:src="@drawable/paint_reset" /> + + + + \ No newline at end of file diff --git a/src/main/res/values/styles.xml b/src/main/res/values/styles.xml index d750e65..5012936 100644 --- a/src/main/res/values/styles.xml +++ b/src/main/res/values/styles.xml @@ -63,7 +63,7 @@ \ No newline at end of file