From ba0adf31a77230ecfc316314b0449c5dc975f4e6 Mon Sep 17 00:00:00 2001 From: dewarder Date: Wed, 10 May 2017 13:47:31 +0300 Subject: [PATCH] Add ability to enable/disable HoldingButton --- README.md | 6 +++++- holdingbutton/build.gradle | 4 ++-- .../holdinglibrary/HoldingButtonLayout.java | 17 +++++++++++++++-- holdingbutton/src/main/res/values/attr.xml | 1 + 4 files changed, 23 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index fedba2e..5d2c5ee 100644 --- a/README.md +++ b/README.md @@ -11,7 +11,7 @@ Button which is visible while user holds it. Main use case is controlling audio Add library as dependency to your `build.gradle`. ``` -compile 'com.dewarder:holdingbutton:0.0.6' +compile 'com.dewarder:holdingbutton:0.0.7' ``` ## How to use @@ -80,6 +80,10 @@ compile 'com.dewarder:holdingbutton:0.0.6' ## All XML properties +- `hbl_enabled` (`isButtonEnabled/setButtonEnabled`) + + Set enabled or disabled state of button only. + - `hbl_direction` (`getDirection/setDirection`) Set direction of sliding. Possible directions are `start` (from right to left) and `end` (from left to right). diff --git a/holdingbutton/build.gradle b/holdingbutton/build.gradle index bb2901e..ccc83de 100644 --- a/holdingbutton/build.gradle +++ b/holdingbutton/build.gradle @@ -3,7 +3,7 @@ apply plugin: 'com.github.dcendents.android-maven' apply plugin: 'com.jfrog.bintray' ext { - artifactVersion = '0.0.6' + artifactVersion = '0.0.7' artifactName = 'holdingbutton' siteUrl = 'https://github.com/dewarder/HoldingButton' gitUrl = 'https://github.com/dewarder/HoldingButton.git' @@ -110,7 +110,7 @@ bintray { vcsUrl = gitUrl version { name = artifactVersion - desc = 'Add cancel and submit methods' + desc = 'Add ability to enable/disable HoldingButton' released = new Date() vcsTag = "$artifactVersion" } diff --git a/holdingbutton/src/main/java/com/dewarder/holdinglibrary/HoldingButtonLayout.java b/holdingbutton/src/main/java/com/dewarder/holdinglibrary/HoldingButtonLayout.java index 1d4cbd4..7987341 100644 --- a/holdingbutton/src/main/java/com/dewarder/holdinglibrary/HoldingButtonLayout.java +++ b/holdingbutton/src/main/java/com/dewarder/holdinglibrary/HoldingButtonLayout.java @@ -56,6 +56,7 @@ public class HoldingButtonLayout extends FrameLayout { private Direction mDirection = Direction.START; private boolean mAnimateHoldingView = true; + private boolean mButtonEnabled = true; private boolean mIsCancel = false; private boolean mIsExpanded = false; @@ -102,6 +103,10 @@ private void init(Context context, AttributeSet attrs, @AttrRes int defStyleAttr defStyleAttr, defStyleRes); + if (array.hasValue(R.styleable.HoldingButtonLayout_hbl_enabled)) { + setButtonEnabled(array.getBoolean(R.styleable.HoldingButtonLayout_hbl_enabled, true)); + } + if (array.hasValue(R.styleable.HoldingButtonLayout_hbl_radius)) { mHoldingDrawable.setRadius(array.getDimensionPixelSize(R.styleable.HoldingButtonLayout_hbl_radius, 280)); } @@ -173,7 +178,7 @@ public boolean onInterceptTouchEvent(MotionEvent ev) { final int action = ev.getActionMasked(); switch (action) { case MotionEvent.ACTION_DOWN: { - return isViewTouched(mHoldingView, ev); + return isButtonEnabled() && isViewTouched(mHoldingView, ev); } } @@ -186,7 +191,7 @@ public boolean onTouchEvent(MotionEvent event) { switch (action) { case MotionEvent.ACTION_DOWN: { - if (isViewTouched(mHoldingView, event)) { + if (isButtonEnabled() && isViewTouched(mHoldingView, event)) { mHoldingView.getLocationInWindow(mHoldingViewLocation); getLocationInWindow(mViewLocation); @@ -308,6 +313,14 @@ public void submit() { } } + public boolean isButtonEnabled() { + return mButtonEnabled; + } + + public void setButtonEnabled(boolean enabled) { + mButtonEnabled = enabled; + } + @ColorInt public int getColor() { return mHoldingDrawable.getColor(); diff --git a/holdingbutton/src/main/res/values/attr.xml b/holdingbutton/src/main/res/values/attr.xml index 06a4cea..273e7c0 100644 --- a/holdingbutton/src/main/res/values/attr.xml +++ b/holdingbutton/src/main/res/values/attr.xml @@ -1,6 +1,7 @@ +