diff --git a/.github/workflows/android.yml b/.github/workflows/android.yml
index e47cef2..1db9de8 100644
--- a/.github/workflows/android.yml
+++ b/.github/workflows/android.yml
@@ -1,24 +1,49 @@
name: Android CI
on:
- push:
- branches:
- - master
+ push:
+ branches:
+ - master
+ pull_request:
+ branches:
+ - master
jobs:
- build:
+ lint:
+ name: Spotless check
+ runs-on: ubuntu-18.04
+ steps:
+ - name: Check out code
+ uses: actions/checkout@v2
+ - name: Set up JDK
+ uses: actions/setup-java@v1
+ with:
+ java-version: 11
+ - name: spotless
+ run: ./gradlew spotlessCheck
+ build:
runs-on: ubuntu-latest
-
steps:
- - uses: actions/checkout@v2
- - name: set up JDK 1.8
- uses: actions/setup-java@v1
- with:
- java-version: 1.8
- - name: Make Gradle executable
- run: chmod +x ./gradlew
- - name: Build with Gradle
- run: ./gradlew build
- - name: Build Debug APK
- run: ./gradlew assembleDebug
+ - uses: actions/checkout@v2
+
+ - name: set up JDK
+ uses: actions/setup-java@v1
+ with:
+ java-version: 11
+
+ - name: Cache Gradle and wrapper
+ uses: actions/cache@v2
+ with:
+ path: |
+ ~/.gradle/caches
+ ~/.gradle/wrapper
+ key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*') }}
+ restore-keys: |
+ ${{ runner.os }}-gradle-
+
+ - name: Make Gradle executable
+ run: chmod +x ./gradlew
+
+ - name: Build with Gradle
+ run: ./gradlew build
diff --git a/README.md b/README.md
index 52fb342..ef4f7a0 100644
--- a/README.md
+++ b/README.md
@@ -7,10 +7,10 @@ Supports alpha & brightness slider bar, dialog, and saving & restoring selected
+ 
-
@@ -35,7 +35,7 @@ allprojects {
And add a dependency code to your **module**'s `build.gradle` file.
```gradle
dependencies {
- implementation "com.github.skydoves:colorpickerview:2.2.3"
+ implementation "com.github.skydoves:colorpickerview:2.2.4"
}
```
diff --git a/app/build.gradle b/app/build.gradle
index 8a02f21..568f6fc 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -26,8 +26,8 @@ android {
versionName versions.versionName
}
compileOptions {
- sourceCompatibility JavaVersion.VERSION_1_8
- targetCompatibility JavaVersion.VERSION_1_8
+ sourceCompatibility JavaVersion.VERSION_11
+ targetCompatibility JavaVersion.VERSION_11
}
}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index cc3e710..566c193 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -13,7 +13,9 @@
android:supportsRtl="true"
android:theme="@style/AppTheme"
tools:ignore="AllowBackup,GoogleAppIndexingWarning">
-
+
diff --git a/build.gradle b/build.gradle
index c7442ef..dce94da 100644
--- a/build.gradle
+++ b/build.gradle
@@ -15,7 +15,6 @@
buildscript {
apply from: "$rootDir/dependencies.gradle"
repositories {
- jcenter()
mavenCentral()
google()
}
@@ -30,7 +29,6 @@ buildscript {
allprojects {
repositories {
- jcenter()
mavenCentral()
google()
}
diff --git a/colorpickerview/src/main/java/com/skydoves/colorpickerview/ColorPickerView.java b/colorpickerview/src/main/java/com/skydoves/colorpickerview/ColorPickerView.java
index f75098e..d2dcd20 100644
--- a/colorpickerview/src/main/java/com/skydoves/colorpickerview/ColorPickerView.java
+++ b/colorpickerview/src/main/java/com/skydoves/colorpickerview/ColorPickerView.java
@@ -87,10 +87,12 @@ public class ColorPickerView extends FrameLayout implements LifecycleObserver {
private ActionMode actionMode = ActionMode.ALWAYS;
@FloatRange(from = 0.0, to = 1.0)
- private float alpha_selector = 1.0f;
+ private float selector_alpha = 1.0f;
@FloatRange(from = 0.0, to = 1.0)
- private float alpha_flag = 1.0f;
+ private float flag_alpha = 1.0f;
+
+ private boolean flag_isFlipAble = true;
@Px private int selectorSize = 0;
@@ -135,16 +137,20 @@ private void getAttrs(AttributeSet attrs) {
this.selectorDrawable = AppCompatResources.getDrawable(getContext(), resourceId);
}
}
- if (a.hasValue(R.styleable.ColorPickerView_alpha_selector)) {
- this.alpha_selector =
- a.getFloat(R.styleable.ColorPickerView_alpha_selector, alpha_selector);
+ if (a.hasValue(R.styleable.ColorPickerView_selector_alpha)) {
+ this.selector_alpha =
+ a.getFloat(R.styleable.ColorPickerView_selector_alpha, selector_alpha);
}
if (a.hasValue(R.styleable.ColorPickerView_selector_size)) {
this.selectorSize =
a.getDimensionPixelSize(R.styleable.ColorPickerView_selector_size, selectorSize);
}
- if (a.hasValue(R.styleable.ColorPickerView_alpha_flag)) {
- this.alpha_flag = a.getFloat(R.styleable.ColorPickerView_alpha_flag, alpha_flag);
+ if (a.hasValue(R.styleable.ColorPickerView_flag_alpha)) {
+ this.flag_alpha = a.getFloat(R.styleable.ColorPickerView_flag_alpha, flag_alpha);
+ }
+ if (a.hasValue(R.styleable.ColorPickerView_flag_isFlipAble)) {
+ this.flag_isFlipAble =
+ a.getBoolean(R.styleable.ColorPickerView_flag_isFlipAble, flag_isFlipAble);
}
if (a.hasValue(R.styleable.ColorPickerView_actionMode)) {
int actionMode = a.getInteger(R.styleable.ColorPickerView_actionMode, 0);
@@ -193,7 +199,7 @@ private void onCreate() {
}
selectorParam.gravity = Gravity.CENTER;
addView(selector, selectorParam);
- selector.setAlpha(alpha_selector);
+ selector.setAlpha(selector_alpha);
getViewTreeObserver()
.addOnGlobalLayoutListener(
@@ -230,14 +236,11 @@ private void onFinishInflated() {
final int persisted = preferenceManager.getColor(getPreferenceName(), -1);
if (palette.getDrawable() instanceof ColorHsvPalette && persisted != -1) {
post(
- new Runnable() {
- @Override
- public void run() {
- try {
- selectByHsvColor(persisted);
- } catch (IllegalAccessException e) {
- e.printStackTrace();
- }
+ () -> {
+ try {
+ selectByHsvColor(persisted);
+ } catch (IllegalAccessException e) {
+ e.printStackTrace();
}
});
}
@@ -260,8 +263,8 @@ protected void onCreateByBuilder(Builder builder) {
this.paletteDrawable = builder.paletteDrawable;
this.selectorDrawable = builder.selectorDrawable;
- this.alpha_selector = builder.alpha_selector;
- this.alpha_flag = builder.alpha_flag;
+ this.selector_alpha = builder.selector_alpha;
+ this.flag_alpha = builder.flag_alpha;
this.selectorSize = builder.selectorSize;
this.debounceDuration = builder.debounceDuration;
onCreate();
@@ -313,6 +316,7 @@ private boolean onTouchReceived(final MotionEvent event) {
setCoordinate(snapPoint.x, snapPoint.y);
if (actionMode == ActionMode.LAST) {
+ notifyToFlagView(this.selectedPoint);
if (event.getAction() == MotionEvent.ACTION_UP) {
notifyColorChanged();
}
@@ -333,12 +337,9 @@ public boolean isHuePalette() {
private void notifyColorChanged() {
this.debounceHandler.removeCallbacksAndMessages(null);
Runnable debounceRunnable =
- new Runnable() {
- @Override
- public void run() {
- fireColorListener(getColor(), true);
- notifyToFlagView(selectedPoint);
- }
+ () -> {
+ fireColorListener(getColor(), true);
+ notifyToFlagView(selectedPoint);
};
this.debounceHandler.postDelayed(debounceRunnable, this.debounceDuration);
}
@@ -429,10 +430,10 @@ public void fireColorListener(@ColorInt int color, final boolean fromUser) {
if (VISIBLE_FLAG) {
VISIBLE_FLAG = false;
if (this.selector != null) {
- this.selector.setAlpha(alpha_selector);
+ this.selector.setAlpha(selector_alpha);
}
if (this.flagView != null) {
- this.flagView.setAlpha(alpha_flag);
+ this.flagView.setAlpha(flag_alpha);
}
}
}
@@ -460,17 +461,22 @@ private void notifyToFlagView(Point point) {
if (flagView != null) {
if (flagView.getFlagMode() == FlagMode.ALWAYS) flagView.visible();
int posX = centerPoint.x - flagView.getWidth() / 2 + selector.getWidth() / 2;
- if (centerPoint.y - flagView.getHeight() > 0) {
+ if (flagView.isFlipAble()) {
+ if (centerPoint.y - flagView.getHeight() > 0) {
+ flagView.setRotation(0);
+ flagView.setX(posX);
+ flagView.setY(centerPoint.y - flagView.getHeight());
+ } else {
+ flagView.setRotation(180);
+ flagView.setX(posX);
+ flagView.setY(centerPoint.y + flagView.getHeight() - selector.getHeight() * 0.5f);
+ }
+ } else {
flagView.setRotation(0);
flagView.setX(posX);
flagView.setY(centerPoint.y - flagView.getHeight());
- flagView.onRefresh(getColorEnvelope());
- } else if (flagView.isFlipAble()) {
- flagView.setRotation(180);
- flagView.setX(posX);
- flagView.setY(centerPoint.y + flagView.getHeight() - selector.getHeight() * 0.5f);
- flagView.onRefresh(getColorEnvelope());
}
+ flagView.onRefresh(getColorEnvelope());
if (posX < 0) flagView.setX(0);
if (posX + flagView.getMeasuredWidth() > getMeasuredWidth()) {
flagView.setX(getMeasuredWidth() - flagView.getMeasuredWidth());
@@ -541,7 +547,8 @@ public void setFlagView(@NonNull FlagView flagView) {
flagView.gone();
addView(flagView);
this.flagView = flagView;
- flagView.setAlpha(alpha_flag);
+ flagView.setAlpha(flag_alpha);
+ flagView.setFlipAble(flag_isFlipAble);
}
/**
@@ -579,6 +586,15 @@ private Point getCenterPoint(int x, int y) {
return new Point(x - (selector.getMeasuredWidth() / 2), y - (selector.getMeasuredHeight() / 2));
}
+ /**
+ * gets a selector.
+ *
+ * @return selector.
+ */
+ public ImageView getSelector() {
+ return this.selector;
+ }
+
/**
* gets a selector's selected coordinate x.
*
@@ -660,14 +676,11 @@ public void setInitialColor(@ColorInt final int color) {
|| (getPreferenceName() != null
&& preferenceManager.getColor(getPreferenceName(), -1) == -1)) {
post(
- new Runnable() {
- @Override
- public void run() {
- try {
- selectByHsvColor(color);
- } catch (IllegalAccessException e) {
- e.printStackTrace();
- }
+ () -> {
+ try {
+ selectByHsvColor(color);
+ } catch (IllegalAccessException e) {
+ e.printStackTrace();
}
});
}
@@ -768,11 +781,11 @@ public void setPaletteDrawable(Drawable drawable) {
if (!VISIBLE_FLAG) {
VISIBLE_FLAG = true;
if (selector != null) {
- alpha_selector = selector.getAlpha();
+ selector_alpha = selector.getAlpha();
selector.setAlpha(0.0f);
}
if (flagView != null) {
- alpha_flag = flagView.getAlpha();
+ flag_alpha = flagView.getAlpha();
flagView.setAlpha(0.0f);
}
}
@@ -940,7 +953,7 @@ public void onDestroy() {
/** Builder class for create {@link ColorPickerView}. */
public static class Builder {
- private Context context;
+ private final Context context;
private ColorPickerViewListener colorPickerViewListener;
private int debounceDuration = 0;
private FlagView flagView;
@@ -952,10 +965,12 @@ public static class Builder {
@ColorInt private int initialColor = 0;
@FloatRange(from = 0.0, to = 1.0)
- private float alpha_selector = 1.0f;
+ private float selector_alpha = 1.0f;
@FloatRange(from = 0.0, to = 1.0)
- private float alpha_flag = 1.0f;
+ private float flag_alpha = 1.0f;
+
+ private boolean flag_isFlipAble = false;
@Dp private int selectorSize = 0;
@Dp private int width = LayoutParams.MATCH_PARENT;
@@ -1008,12 +1023,17 @@ public Builder setActionMode(ActionMode actionMode) {
}
public Builder setSelectorAlpha(@FloatRange(from = 0.0, to = 1.0) float alpha) {
- this.alpha_selector = alpha;
+ this.selector_alpha = alpha;
return this;
}
public Builder setFlagAlpha(@FloatRange(from = 0.0, to = 1.0) float alpha) {
- this.alpha_flag = alpha;
+ this.flag_alpha = alpha;
+ return this;
+ }
+
+ public Builder setFlagIsFlipAble(boolean isFlipAble) {
+ this.flag_isFlipAble = isFlipAble;
return this;
}
diff --git a/colorpickerview/src/main/res/values/attrs_colorpicker.xml b/colorpickerview/src/main/res/values/attrs_colorpicker.xml
index 61f2d9c..c2181dd 100644
--- a/colorpickerview/src/main/res/values/attrs_colorpicker.xml
+++ b/colorpickerview/src/main/res/values/attrs_colorpicker.xml
@@ -8,9 +8,11 @@
-
+
-
+
+
+
diff --git a/dependencies.gradle b/dependencies.gradle
index 8062936..04b4bec 100644
--- a/dependencies.gradle
+++ b/dependencies.gradle
@@ -14,21 +14,21 @@
ext.versions = [
minSdk : 15,
- compileSdk : 30,
- versionoCode : 26,
- versionName : '2.2.2',
+ compileSdk : 31,
+ versionoCode : 28,
+ versionName : '2.2.4',
- gradleBuildTool : '4.1.1',
- spotlessGradle : '5.9.0',
- ktlintGradle : '0.40.0',
- dokkaGradle : '1.4.20',
- mavenPublish : '0.13.0',
+ gradleBuildTool : '7.0.2',
+ spotlessGradle : '5.15.0',
+ ktlintGradle : '0.41.0',
+ dokkaGradle : '1.4.32',
+ mavenPublish : '0.15.1',
- kotlin : '1.4.20',
+ kotlin : '1.4.32',
androidxAppcompat: '1.2.0',
// for demo
googleMaterial : '1.3.0-alpha02',
- powermenu : '2.1.3',
+ powermenu : '2.1.9',
timber : '4.7.1'
]
diff --git a/gradle.properties b/gradle.properties
index bfb1238..46bf6ee 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -31,7 +31,7 @@ systemProp.org.gradle.internal.http.socketTimeout=120000
GROUP=com.github.skydoves
POM_PACKAGING=aar
-VERSION_NAME=2.2.4-SNAPSHOT
+VERSION_NAME=2.2.5-SNAPSHOT
POM_ARTIFACT_ID=colorpickerview
POM_NAME=colorpickerview
@@ -49,6 +49,3 @@ POM_LICENCE_DIST=repo
POM_DEVELOPER_ID=skydoves
POM_DEVELOPER_NAME=Jaewoong Eum
POM_DEVELOPER_URL=https://github.com/skydoves/
-
-RELEASE_REPOSITORY_URL=https://oss.sonatype.org/service/local/staging/deploy/maven2/
-SNAPSHOT_REPOSITORY_URL=https://oss.sonatype.org/content/repositories/snapshots/
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
index 93d8db4..fd9e2e1 100644
--- a/gradle/wrapper/gradle-wrapper.properties
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -17,4 +17,4 @@ distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-6.7-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-7.2-all.zip