From 8c5ba1f9dca2f8c101a8023b354129b749516d2f Mon Sep 17 00:00:00 2001 From: ShawnTeoh Date: Thu, 15 Jun 2017 11:29:37 +0800 Subject: [PATCH 1/2] Cleanup and update libraries --- build.gradle | 2 +- gradle/wrapper/gradle-wrapper.properties | 4 ++-- materialintro/build.gradle | 11 +++++------ .../mobiwise/materialintro/ApplicationTest.java | 13 ------------- materialintro/src/main/AndroidManifest.xml | 11 +---------- .../mobiwise/materialintro/ExampleUnitTest.java | 15 --------------- sample/build.gradle | 12 +++++------- .../java/co/mobiwise/sample/ApplicationTest.java | 13 ------------- .../java/co/mobiwise/sample/ExampleUnitTest.java | 15 --------------- 9 files changed, 14 insertions(+), 82 deletions(-) delete mode 100644 materialintro/src/androidTest/java/co/mobiwise/materialintro/ApplicationTest.java delete mode 100644 materialintro/src/test/java/co/mobiwise/materialintro/ExampleUnitTest.java delete mode 100644 sample/src/androidTest/java/co/mobiwise/sample/ApplicationTest.java delete mode 100644 sample/src/test/java/co/mobiwise/sample/ExampleUnitTest.java diff --git a/build.gradle b/build.gradle index 4872fdf..d09744f 100644 --- a/build.gradle +++ b/build.gradle @@ -5,7 +5,7 @@ buildscript { jcenter() } dependencies { - classpath 'com.android.tools.build:gradle:1.5.0' + classpath 'com.android.tools.build:gradle:2.3.3' // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 122a0dc..85d1614 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ -#Mon Dec 28 10:00:20 PST 2015 +#Thu Jun 15 11:14:36 MYT 2017 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-3.3-all.zip diff --git a/materialintro/build.gradle b/materialintro/build.gradle index 876f9ab..0a07783 100644 --- a/materialintro/build.gradle +++ b/materialintro/build.gradle @@ -1,12 +1,12 @@ apply plugin: 'com.android.library' android { - compileSdkVersion 23 - buildToolsVersion "23.0.2" + compileSdkVersion 25 + buildToolsVersion "25.0.3" defaultConfig { minSdkVersion 14 - targetSdkVersion 23 + targetSdkVersion 25 versionCode 1 versionName "1.0" } @@ -21,7 +21,6 @@ android { dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) - testCompile 'junit:junit:4.12' - compile 'com.android.support:appcompat-v7:23.1.1' - compile 'com.android.support:cardview-v7:23.1.0' + compile 'com.android.support:appcompat-v7:25.3.1' + compile 'com.android.support:cardview-v7:25.3.1' } diff --git a/materialintro/src/androidTest/java/co/mobiwise/materialintro/ApplicationTest.java b/materialintro/src/androidTest/java/co/mobiwise/materialintro/ApplicationTest.java deleted file mode 100644 index 6dd7113..0000000 --- a/materialintro/src/androidTest/java/co/mobiwise/materialintro/ApplicationTest.java +++ /dev/null @@ -1,13 +0,0 @@ -package co.mobiwise.materialintro; - -import android.app.Application; -import android.test.ApplicationTestCase; - -/** - * Testing Fundamentals - */ -public class ApplicationTest extends ApplicationTestCase { - public ApplicationTest() { - super(Application.class); - } -} \ No newline at end of file diff --git a/materialintro/src/main/AndroidManifest.xml b/materialintro/src/main/AndroidManifest.xml index 9324cc5..4f8d371 100644 --- a/materialintro/src/main/AndroidManifest.xml +++ b/materialintro/src/main/AndroidManifest.xml @@ -1,12 +1,3 @@ - - - - - + diff --git a/materialintro/src/test/java/co/mobiwise/materialintro/ExampleUnitTest.java b/materialintro/src/test/java/co/mobiwise/materialintro/ExampleUnitTest.java deleted file mode 100644 index 450589b..0000000 --- a/materialintro/src/test/java/co/mobiwise/materialintro/ExampleUnitTest.java +++ /dev/null @@ -1,15 +0,0 @@ -package co.mobiwise.materialintro; - -import org.junit.Test; - -import static org.junit.Assert.*; - -/** - * To work on unit tests, switch the Test Artifact in the Build Variants view. - */ -public class ExampleUnitTest { - @Test - public void addition_isCorrect() throws Exception { - assertEquals(4, 2 + 2); - } -} \ No newline at end of file diff --git a/sample/build.gradle b/sample/build.gradle index ea5e823..28cba87 100644 --- a/sample/build.gradle +++ b/sample/build.gradle @@ -1,13 +1,13 @@ apply plugin: 'com.android.application' android { - compileSdkVersion 23 - buildToolsVersion "23.0.2" + compileSdkVersion 25 + buildToolsVersion "25.0.3" defaultConfig { applicationId "co.mobiwise.sample" minSdkVersion 14 - targetSdkVersion 23 + targetSdkVersion 25 versionCode 1 versionName "1.0" } @@ -21,10 +21,8 @@ android { dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) - testCompile 'junit:junit:4.12' - compile 'com.android.support:appcompat-v7:23.1.1' - compile 'com.android.support:design:23.1.1' - //compile 'com.github.iammert:MaterialIntroView:1.5.1' + compile 'com.android.support:appcompat-v7:25.3.1' + compile 'com.android.support:design:25.3.1' compile project(':materialintro') compile 'com.squareup.picasso:picasso:2.5.2' } diff --git a/sample/src/androidTest/java/co/mobiwise/sample/ApplicationTest.java b/sample/src/androidTest/java/co/mobiwise/sample/ApplicationTest.java deleted file mode 100644 index a9f85ac..0000000 --- a/sample/src/androidTest/java/co/mobiwise/sample/ApplicationTest.java +++ /dev/null @@ -1,13 +0,0 @@ -package co.mobiwise.sample; - -import android.app.Application; -import android.test.ApplicationTestCase; - -/** - * Testing Fundamentals - */ -public class ApplicationTest extends ApplicationTestCase { - public ApplicationTest() { - super(Application.class); - } -} \ No newline at end of file diff --git a/sample/src/test/java/co/mobiwise/sample/ExampleUnitTest.java b/sample/src/test/java/co/mobiwise/sample/ExampleUnitTest.java deleted file mode 100644 index 3f152c8..0000000 --- a/sample/src/test/java/co/mobiwise/sample/ExampleUnitTest.java +++ /dev/null @@ -1,15 +0,0 @@ -package co.mobiwise.sample; - -import org.junit.Test; - -import static org.junit.Assert.*; - -/** - * To work on unit tests, switch the Test Artifact in the Build Variants view. - */ -public class ExampleUnitTest { - @Test - public void addition_isCorrect() throws Exception { - assertEquals(4, 2 + 2); - } -} \ No newline at end of file From a2150ee59f8b11ae64e579e242060e77773ae24f Mon Sep 17 00:00:00 2001 From: ShawnTeoh Date: Thu, 15 Jun 2017 12:17:36 +0800 Subject: [PATCH 2/2] Add dismiss on back key press The trick is with requestFocus(). Depending on your code, some other view might request for focus after MaterialIntroView is shown. In that case, you will have to call requestFocus() manually. --- .../MaterialIntroConfiguration.java | 10 ++++++ .../materialintro/view/MaterialIntroView.java | 36 +++++++++++++++++++ 2 files changed, 46 insertions(+) diff --git a/materialintro/src/main/java/co/mobiwise/materialintro/MaterialIntroConfiguration.java b/materialintro/src/main/java/co/mobiwise/materialintro/MaterialIntroConfiguration.java index b244b03..984423b 100644 --- a/materialintro/src/main/java/co/mobiwise/materialintro/MaterialIntroConfiguration.java +++ b/materialintro/src/main/java/co/mobiwise/materialintro/MaterialIntroConfiguration.java @@ -21,6 +21,8 @@ public class MaterialIntroConfiguration { private boolean dismissOnTouch; + private boolean dismissOnBackPress; + private int colorTextViewInfo; private boolean isDotViewEnabled; @@ -96,6 +98,14 @@ public void setDismissOnTouch(boolean dismissOnTouch) { this.dismissOnTouch = dismissOnTouch; } + public boolean isDismissOnBackPress() { + return dismissOnBackPress; + } + + public void setDismissOnBackPress(boolean dismissOnBackPress) { + this.dismissOnBackPress = dismissOnBackPress; + } + public int getColorTextViewInfo() { return colorTextViewInfo; } diff --git a/materialintro/src/main/java/co/mobiwise/materialintro/view/MaterialIntroView.java b/materialintro/src/main/java/co/mobiwise/materialintro/view/MaterialIntroView.java index 2f5afe2..6b646e4 100644 --- a/materialintro/src/main/java/co/mobiwise/materialintro/view/MaterialIntroView.java +++ b/materialintro/src/main/java/co/mobiwise/materialintro/view/MaterialIntroView.java @@ -14,6 +14,7 @@ import android.util.AttributeSet; import android.util.TypedValue; import android.view.Gravity; +import android.view.KeyEvent; import android.view.LayoutInflater; import android.view.MotionEvent; import android.view.View; @@ -130,6 +131,7 @@ public class MaterialIntroView extends RelativeLayout { * Dismiss on touch any position */ private boolean dismissOnTouch; + private boolean dismissOnBackPress; /** * Info dialog view @@ -259,6 +261,7 @@ private void init(Context context) { isReady = false; isFadeAnimationEnabled = true; dismissOnTouch = false; + dismissOnBackPress = false; isLayoutCompleted = false; isInfoEnabled = false; isDotViewEnabled = false; @@ -419,6 +422,9 @@ public void onAnimationStart() { }); else setVisibility(VISIBLE); + if (dismissOnBackPress) { + requestFocus(); + } } }, delayMillis); @@ -573,6 +579,10 @@ private void setDismissOnTouch(boolean dismissOnTouch) { this.dismissOnTouch = dismissOnTouch; } + private void setDismissOnBackPress(boolean dismissOnBackPress) { + this.dismissOnBackPress = dismissOnBackPress; + } + private void setFocusGravity(FocusGravity focusGravity) { this.focusGravity = focusGravity; } @@ -606,6 +616,11 @@ private void enableDotView(boolean isDotViewEnabled){ this.isDotViewEnabled = isDotViewEnabled; } + private void enableDismissOnBackPress() { + setFocusableInTouchMode(true); + setFocusable(true); + } + public void setConfiguration(MaterialIntroConfiguration configuration) { if (configuration != null) { @@ -615,6 +630,7 @@ public void setConfiguration(MaterialIntroConfiguration configuration) { this.colorTextViewInfo = configuration.getColorTextViewInfo(); this.isDotViewEnabled = configuration.isDotViewEnabled(); this.dismissOnTouch = configuration.isDismissOnTouch(); + this.dismissOnBackPress = configuration.isDismissOnBackPress(); this.colorTextViewInfo = configuration.getColorTextViewInfo(); this.focusType = configuration.getFocusType(); this.focusGravity = configuration.getFocusGravity(); @@ -710,6 +726,11 @@ public Builder dismissOnTouch(boolean dismissOnTouch) { return this; } + public Builder dismissOnBackPress(boolean dismissOnBackPress) { + materialIntroView.setDismissOnBackPress(dismissOnBackPress); + return this; + } + public Builder setUsageId(String materialIntroViewId) { materialIntroView.setUsageId(materialIntroViewId); return this; @@ -774,6 +795,10 @@ public MaterialIntroView build() { } materialIntroView.setShape(shape); + + if (materialIntroView.dismissOnBackPress) { + materialIntroView.enableDismissOnBackPress(); + } return materialIntroView; } @@ -784,4 +809,15 @@ public MaterialIntroView show() { } + @Override + public boolean dispatchKeyEvent(KeyEvent event) { + if (dismissOnBackPress && event.getKeyCode() == KeyEvent.KEYCODE_BACK) { + if (event.getAction() == KeyEvent.ACTION_UP) { + dismiss(); + } + return true; + } + return super.dispatchKeyEvent(event); + } + }