+
diff --git a/.travis.yml b/.travis.yml
new file mode 100644
index 0000000..9096ebb
--- /dev/null
+++ b/.travis.yml
@@ -0,0 +1,20 @@
+language: android
+android:
+ components:
+ # Uncomment the lines below if you want to
+ # use the latest revision of Android SDK Tools
+ - tools
+ - platform-tools
+
+ # The SDK version used to compile your project
+ - android-28
+
+ # Specify at least one system image,
+ # if you need to run emulator(s) during your tests
+ - sys-img-x86-android-26
+
+ # Support library
+ - extra-android-support
+ - extra-android-m2repository
+script:
+- chmod +x ./gradlew
\ No newline at end of file
diff --git a/README.md b/README.md
index 9a02748..5d5d963 100644
--- a/README.md
+++ b/README.md
@@ -1,5 +1,8 @@
# LoadingButton
-[](https://jitpack.io/#andreasagap/LoadingButton)
+[](https://jitpack.io/#andreasagap/LoadingButtonLibrary)
+[](https://opensource.org/licenses/Apache-2.0)
+[](https://travis-ci.org/andreasagap/LoadingButtonLibrary)
+[]( https://android-arsenal.com/details/1/7699 )
@@ -18,8 +21,82 @@ allprojects {
}
```
Add dependency in your app level build.gradle.
-```
+```
dependencies {
- implementation 'com.github.andreasagap:LoadingButton:1.0'
+ implementation 'com.github.andreasagap:LoadingButtonLibrary:v1.0'
}
```
+
+### Step 2
+**In xml**
+```xml
+
+
+
+
+
+```
+
+**In activity or fragment**
+
+```java
+ConstraintLayout root=findViewById(R.id.root);
+ButtonLoading buttonLoading=findViewById(R.id.loadingbutton);
+buttonLoading.setRoot(buttonLoading,this,root);
+buttonLoading.setOnButtonLoadingListener(new ButtonLoading.OnButtonLoadingListener() {
+ @Override
+ public void onClick() {
+ //...
+ }
+ @Override
+ public void onStart() {
+
+ //...
+ }
+ @Override
+ public void onFinish() {
+ //...
+
+ }
+});
+```
+## End Progress
+Just call ```buttonLoading.cancel();``` and the button moves to its original position.
+
+:exclamation: Without cancel(), the function onFinish() doesn't start.
+
+## Configure XML
+* BL_backgroundColor
+* BL_backgroundDisableColor
+* BL_circleColor color
+* BL_circleColorSecond
+* BL_stateShow: normal,animationStart,progress,animationFinish | default value is normal
+* BL_text: text button
+* BL_textColor
+* BL_textDisableColor
+* BL_textSize
+* BL_enable
+* BL_font: address font in assets. example: file in assetst > fonts > arial.ttf ==> fonts/arial.ttf
+
+## Credits
+This library was based on this repo: https://github.com/rasoulmiri/ButtonLoading :clap:
+
diff --git a/app/build.gradle b/app/build.gradle
index 8bae036..2baf68d 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -8,7 +8,7 @@ android {
targetSdkVersion 28
versionCode 1
versionName "1.0"
- testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
+ testInstrumentationRunner 'androidx.test.runner.AndroidJUnitRunner'
multiDexEnabled true
}
buildTypes {
@@ -21,11 +21,8 @@ android {
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
- implementation 'com.android.support:appcompat-v7:28.0.0'
- implementation 'com.android.support:design:28.0.0'
- implementation 'com.android.support.constraint:constraint-layout:1.1.3'
- testImplementation 'junit:junit:4.12'
- androidTestImplementation 'com.android.support.test:runner:1.0.2'
- androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
+ implementation 'androidx.appcompat:appcompat:1.2.0'
+ implementation 'com.google.android.material:material:1.2.1'
+ implementation 'androidx.constraintlayout:constraintlayout:2.0.2'
implementation project(':loadingbutton')
}
diff --git a/app/src/androidTest/java/andreasagap/sampleloadingbutton/ExampleInstrumentedTest.java b/app/src/androidTest/java/andreasagap/sampleloadingbutton/ExampleInstrumentedTest.java
index e196205..eadab17 100644
--- a/app/src/androidTest/java/andreasagap/sampleloadingbutton/ExampleInstrumentedTest.java
+++ b/app/src/androidTest/java/andreasagap/sampleloadingbutton/ExampleInstrumentedTest.java
@@ -1,8 +1,8 @@
package andreasagap.sampleloadingbutton;
import android.content.Context;
-import android.support.test.InstrumentationRegistry;
-import android.support.test.runner.AndroidJUnit4;
+import androidx.test.platform.app.InstrumentationRegistry;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
import org.junit.Test;
import org.junit.runner.RunWith;
diff --git a/app/src/main/java/andreasagap/sampleloadingbutton/MainActivity.java b/app/src/main/java/andreasagap/sampleloadingbutton/MainActivity.java
index d199007..5feb72d 100644
--- a/app/src/main/java/andreasagap/sampleloadingbutton/MainActivity.java
+++ b/app/src/main/java/andreasagap/sampleloadingbutton/MainActivity.java
@@ -1,7 +1,8 @@
package andreasagap.sampleloadingbutton;
-import android.support.constraint.ConstraintLayout;
-import android.support.v7.app.AppCompatActivity;
+import androidx.appcompat.app.AppCompatActivity;
+import androidx.constraintlayout.widget.ConstraintLayout;
+
import android.os.Bundle;
diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml
index 3f13e78..f712809 100644
--- a/app/src/main/res/layout/activity_main.xml
+++ b/app/src/main/res/layout/activity_main.xml
@@ -1,5 +1,5 @@
-
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/gradle.properties b/gradle.properties
index 82618ce..d546dea 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -6,6 +6,8 @@
# http://www.gradle.org/docs/current/userguide/build_environment.html
# Specifies the JVM arguments used for the daemon process.
# The setting is particularly useful for tweaking memory settings.
+android.enableJetifier=true
+android.useAndroidX=true
org.gradle.jvmargs=-Xmx1536m
# When configured, Gradle will run in incubating parallel mode.
# This option should only be used with decoupled projects. More details, visit
diff --git a/gradlew b/gradlew
old mode 100644
new mode 100755
diff --git a/loadingbutton/build.gradle b/loadingbutton/build.gradle
index ad73552..3945c0c 100644
--- a/loadingbutton/build.gradle
+++ b/loadingbutton/build.gradle
@@ -12,7 +12,7 @@ android {
versionCode 2
versionName "1.0.1"
- testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
+ testInstrumentationRunner 'androidx.test.runner.AndroidJUnitRunner'
}
@@ -27,8 +27,8 @@ android {
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
- implementation 'com.android.support:appcompat-v7:28.0.0'
+ implementation 'androidx.appcompat:appcompat:1.2.0'
testImplementation 'junit:junit:4.12'
- androidTestImplementation 'com.android.support.test:runner:1.0.2'
- androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
+ androidTestImplementation 'androidx.test.ext:junit:1.1.1'
+ androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.0'
}
diff --git a/loadingbutton/src/androidTest/java/andreasagap/loadingbutton/ExampleInstrumentedTest.java b/loadingbutton/src/androidTest/java/andreasagap/loadingbutton/ExampleInstrumentedTest.java
index 595f894..2853130 100644
--- a/loadingbutton/src/androidTest/java/andreasagap/loadingbutton/ExampleInstrumentedTest.java
+++ b/loadingbutton/src/androidTest/java/andreasagap/loadingbutton/ExampleInstrumentedTest.java
@@ -1,8 +1,8 @@
package andreasagap.loadingbutton;
import android.content.Context;
-import android.support.test.InstrumentationRegistry;
-import android.support.test.runner.AndroidJUnit4;
+import androidx.test.platform.app.InstrumentationRegistry;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
import org.junit.Test;
import org.junit.runner.RunWith;
diff --git a/loadingbutton/src/main/java/andreasagap/loadingbutton/ButtonLoading.java b/loadingbutton/src/main/java/andreasagap/loadingbutton/ButtonLoading.java
index dde3d4e..a60d79e 100644
--- a/loadingbutton/src/main/java/andreasagap/loadingbutton/ButtonLoading.java
+++ b/loadingbutton/src/main/java/andreasagap/loadingbutton/ButtonLoading.java
@@ -14,7 +14,7 @@
import android.graphics.RectF;
import android.graphics.Region;
import android.os.Build;
-import android.support.v4.view.animation.PathInterpolatorCompat;
+import androidx.core.view.animation.PathInterpolatorCompat;
import android.util.AttributeSet;
import android.util.DisplayMetrics;
import android.util.Log;
@@ -25,7 +25,6 @@
import android.view.animation.LinearInterpolator;
import android.view.animation.TranslateAnimation;
import android.widget.ImageButton;
-import android.widget.TextView;
import andreasagap.loadingbutton.utils.DeviceScreenUtils;
import andreasagap.loadingbutton.utils.FontUtils;
@@ -39,7 +38,7 @@
* Editing by Andreas Agapitos on 17/11/2018
*/
-public class ButtonLoading extends android.support.v7.widget.AppCompatTextView {
+public class ButtonLoading extends androidx.appcompat.widget.AppCompatTextView {
private ButtonLoadingAttribute attribute = new ButtonLoadingAttribute();
private OnButtonLoadingListener onButtonLoadingListener;
@@ -100,6 +99,7 @@ public void initView(Context context, AttributeSet attrs) {
attribute.setFont(typedArray.getString(R.styleable.ButtonLoading_BL_font));
attribute.setText(typedArray.getString(R.styleable.ButtonLoading_BL_text));
attribute.setTextColor(typedArray.getColor(R.styleable.ButtonLoading_BL_textColor, Color.WHITE));
+ attribute.setTextDisableColor(typedArray.getColor(R.styleable.ButtonLoading_BL_textDisableColor, Color.BLACK));
attribute.setBackgroundColor(typedArray.getColor(R.styleable.ButtonLoading_BL_backgroundColor, Color.parseColor("#80ffffff")));
attribute.setCircleColor(typedArray.getColor(R.styleable.ButtonLoading_BL_circleColor, Color.parseColor("#00AFEF")));
attribute.setCircleColorSecond(typedArray.getColor(R.styleable.ButtonLoading_BL_circleColorSecond, Color.parseColor("#8000AFEF")));
@@ -215,8 +215,11 @@ protected void onDraw(Canvas canvas) {
canvas.getClipBounds(RectBoundCanvas);
RectBoundCanvas.inset(-DeviceScreenUtils.width(getContext()), -DeviceScreenUtils.height(getContext()));
- canvas.clipRect(RectBoundCanvas, Region.Op.REPLACE);
-
+ if (Build.VERSION.SDK_INT < Build.VERSION_CODES.O) {
+ canvas.clipRect(RectBoundCanvas, Region.Op.REPLACE);
+ } else {
+ canvas.clipOutRect(RectBoundCanvas);
+ }
//background
paint.setColor(attribute.getBackgroundColor());
point.set(getWidth() / 2, getHeight() / 2);
@@ -301,7 +304,7 @@ protected void onDraw(Canvas canvas) {
private void paintText() {
- paint.setColor(attribute.getTextColor());
+ paint.setColor(attribute.isEnable() ? attribute.getTextColor() : attribute.getTextDisableColor());
paint.setTextSize(attribute.getTextSize());
if (attribute.getFont() != null && !attribute.getFont().isEmpty()) {
@@ -480,12 +483,16 @@ public void onAnimationRepeat(Animator animator) {
void animationFinish() {
//remove all animation for loading
- valueAnimatorCircleMain.removeAllListeners();
- valueAnimatorCircleMain.end();
- valueAnimatorCircleMain.cancel();
- valueAnimatorCircleSecond.removeAllListeners();
- valueAnimatorCircleSecond.end();
- valueAnimatorCircleSecond.cancel();
+ if (valueAnimatorCircleMain != null) {
+ valueAnimatorCircleMain.removeAllListeners();
+ valueAnimatorCircleMain.end();
+ valueAnimatorCircleMain.cancel();
+ }
+ if (valueAnimatorCircleSecond != null) {
+ valueAnimatorCircleSecond.removeAllListeners();
+ valueAnimatorCircleSecond.end();
+ valueAnimatorCircleSecond.cancel();
+ }
attribute.setStateShow(STATE_ANIMATION_FINISH);
diff --git a/loadingbutton/src/main/java/andreasagap/loadingbutton/ButtonLoadingAttribute.java b/loadingbutton/src/main/java/andreasagap/loadingbutton/ButtonLoadingAttribute.java
index f74bc23..f8bf697 100644
--- a/loadingbutton/src/main/java/andreasagap/loadingbutton/ButtonLoadingAttribute.java
+++ b/loadingbutton/src/main/java/andreasagap/loadingbutton/ButtonLoadingAttribute.java
@@ -16,6 +16,7 @@ public class ButtonLoadingAttribute {
private String text;
private int textColor;
+ private int textDisableColor;
private int backgroundColor;
private int circleColor;
@@ -122,4 +123,12 @@ public int getBackgroundDisableColor() {
public void setBackgroundDisableColor(int backgroundDisableColor) {
this.backgroundDisableColor = backgroundDisableColor;
}
+
+ public int getTextDisableColor() {
+ return textDisableColor;
+ }
+
+ public void setTextDisableColor(int textDisableColor) {
+ this.textDisableColor = textDisableColor;
+ }
}
diff --git a/loadingbutton/src/main/res/values/attrs.xml b/loadingbutton/src/main/res/values/attrs.xml
index adaf7bd..70d6467 100644
--- a/loadingbutton/src/main/res/values/attrs.xml
+++ b/loadingbutton/src/main/res/values/attrs.xml
@@ -9,6 +9,7 @@
+
pFad - Phonifier reborn
Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.
Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.
Alternative Proxies:
Alternative Proxy
pFad Proxy
pFad v3 Proxy
pFad v4 Proxy