From 0db104cef8bc696110ed553f979246449b702b4b Mon Sep 17 00:00:00 2001 From: Xoself Owner Date: Thu, 13 Apr 2017 04:22:43 -0500 Subject: [PATCH] implement eraser using PorterDuff Xfer mode --- app/build.gradle | 2 +- .../com/rm/freedrawsample/ActivityDraw.java | 15 ++++++- .../main/res/layout-land/activity_draw.xml | 10 +++++ app/src/main/res/layout/activity_draw.xml | 45 +++++++++++-------- freedrawview/build.gradle | 2 +- .../com/rm/freedrawview/FreeDrawView.java | 26 +++++++++++ 6 files changed, 79 insertions(+), 21 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 38c1169..ddc689f 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -6,7 +6,7 @@ android { defaultConfig { applicationId "com.rm.freedrawsample" - minSdkVersion 9 + minSdkVersion 11 targetSdkVersion 25 versionCode 1 versionName "1.0.0" diff --git a/app/src/main/java/com/rm/freedrawsample/ActivityDraw.java b/app/src/main/java/com/rm/freedrawsample/ActivityDraw.java index d3a377d..39a4a5c 100644 --- a/app/src/main/java/com/rm/freedrawsample/ActivityDraw.java +++ b/app/src/main/java/com/rm/freedrawsample/ActivityDraw.java @@ -30,7 +30,7 @@ public class ActivityDraw extends AppCompatActivity private FreeDrawView mFreeDrawView; private View mSideView; - private Button mBtnRandomColor, mBtnUndo, mBtnRedo, mBtnClearAll; + private Button mBtnRandomColor, mBtnUndo, mBtnRedo, mBtnClearAll, mBtnEraser; private SeekBar mThicknessBar, mAlphaBar; private TextView mTxtRedoCount, mTxtUndoCount; @@ -56,6 +56,7 @@ protected void onCreate(Bundle savedInstanceState) { mBtnUndo = (Button) findViewById(R.id.btn_undo); mBtnRedo = (Button) findViewById(R.id.btn_redo); mBtnClearAll = (Button) findViewById(R.id.btn_clear_all); + mBtnEraser = (Button) findViewById(R.id.btn_eraser); mThicknessBar = (SeekBar) findViewById(R.id.slider_thickness); mAlphaBar = (SeekBar) findViewById(R.id.slider_alpha); @@ -63,6 +64,7 @@ protected void onCreate(Bundle savedInstanceState) { mBtnUndo.setOnClickListener(this); mBtnRedo.setOnClickListener(this); mBtnClearAll.setOnClickListener(this); + mBtnEraser.setOnClickListener(this); mAlphaBar.setMax((ALPHA_MAX - ALPHA_MIN) / ALPHA_STEP); mAlphaBar.setProgress(mFreeDrawView.getPaintAlpha()); @@ -141,6 +143,17 @@ public void onClick(View v) { if (id == mBtnClearAll.getId()) { mFreeDrawView.undoAll(); } + + if (id == mBtnEraser.getId()) { + // toggle pen/eraser + if (mFreeDrawView.isEraser()) { + mFreeDrawView.setEraser(false); + mBtnEraser.setText("Eraser"); + } else { + mFreeDrawView.setEraser(true); + mBtnEraser.setText("Pen"); + } + } } // SliderListener diff --git a/app/src/main/res/layout-land/activity_draw.xml b/app/src/main/res/layout-land/activity_draw.xml index 23c97ef..8ce2932 100644 --- a/app/src/main/res/layout-land/activity_draw.xml +++ b/app/src/main/res/layout-land/activity_draw.xml @@ -138,6 +138,16 @@ android:layout_weight="1" android:orientation="horizontal"> + +