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

+ Google
License API Build Status - Codacy Android Weekly Javadoc


@@ -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