From b5ccfaa01f39ce953d3ad57fb2d93345cbd596f4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mat=C4=9Bj=20Trakal?= Date: Tue, 1 Aug 2017 17:52:09 +0200 Subject: [PATCH 1/3] Upgrade buildtools: 3.0.0-alpha9, joda-time 2.9.9, appcompat 26.0.0, gradle 4.1-rc-2, minSdk = 14, remove nineoldandroids --- README.md | 2 +- build.gradle | 10 +++++----- gradle.properties | 9 ++++----- gradle/wrapper/gradle-wrapper.jar | Bin 54224 -> 54713 bytes gradle/wrapper/gradle-wrapper.properties | 3 +-- gradlew | 15 ++++++++------- library/build.gradle | 10 +++++++--- .../com/codetroopers/betterpickers/Utils.java | 14 +++++--------- .../CalendarDatePickerDialogFragment.java | 2 +- .../calendardatepicker/MonthView.java | 4 ++-- .../TextViewWithCircularIndicator.java | 4 ++-- .../betterpickers/datepicker/DatePicker.java | 13 +++++++------ .../expirationpicker/ExpirationPicker.java | 5 +++-- .../betterpickers/hmspicker/HmsPicker.java | 3 ++- .../numberpicker/NumberPicker.java | 3 ++- .../NumberPickerErrorTextView.java | 4 ++-- .../radialtimepicker/RadialPickerLayout.java | 17 +++++++++-------- .../radialtimepicker/RadialSelectorView.java | 15 ++++++--------- .../radialtimepicker/RadialTextsView.java | 15 ++++++--------- .../RadialTimePickerDialogFragment.java | 2 +- .../betterpickers/timepicker/TimePicker.java | 3 ++- .../widget/AccessibleTextView.java | 4 ++-- .../widget/UnderlinePageIndicatorPicker.java | 3 ++- .../widget/ZeroTopPaddingTextView.java | 4 ++-- sample/build.gradle | 9 +++++++-- 25 files changed, 89 insertions(+), 84 deletions(-) diff --git a/README.md b/README.md index bb8ab06d..3733ab2e 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ [![Maven Central](https://img.shields.io/maven-central/v/com.code-troopers.betterpickers/library.svg?style=flat)](https://repo1.maven.org/maven2/com/code-troopers/betterpickers/library/) -[![API](https://img.shields.io/badge/API-9%2B-brightgreen.svg?style=flat)](https://android-arsenal.com/api?level=9) +[![API](https://img.shields.io/badge/API-14%2B-brightgreen.svg?style=flat)](https://android-arsenal.com/api?level=14) [![Android Arsenal](https://img.shields.io/badge/Android%20Arsenal-Android%20Betterpickers-brightgreen.svg?style=flat)](https://android-arsenal.com/details/1/118) [![Built With Cloudbees](https://www.cloudbees.com/sites/default/files/styles/large/public/Button-Built-on-CB-1.png?itok=3Tnkun-C)](https://codetroopers.ci.cloudbees.com/job/betterpickers-master/) diff --git a/build.gradle b/build.gradle index dc66a8f4..3ed1fb92 100644 --- a/build.gradle +++ b/build.gradle @@ -4,11 +4,11 @@ buildscript { repositories { jcenter() mavenLocal() - mavenCentral() + google() maven { url 'https://jitpack.io' } } dependencies { - classpath 'com.android.tools.build:gradle:2.2.3' + classpath 'com.android.tools.build:gradle:3.0.0-alpha9' // to auto install sdk components when building see #248 // classpath 'com.jakewharton.sdkmanager:gradle-plugin:0.12.+' classpath 'com.github.plastiv:sdk-manager-plugin:b04aea1cddf87e78db9a4372794d678f9e568c48' @@ -26,11 +26,11 @@ allprojects { repositories { jcenter() mavenLocal() - mavenCentral() + google() } - apply plugin: 'android-sdk-manager' //see #248 } task wrapper(type: Wrapper) { - gradleVersion = '3.2' + gradleVersion = '4.1-rc-2' + distributionUrl = distributionUrl.replace("bin", "all") } diff --git a/gradle.properties b/gradle.properties index 49d70469..288dde31 100644 --- a/gradle.properties +++ b/gradle.properties @@ -19,11 +19,10 @@ VERSION_NAME=3.1.0 VERSION_CODE=310 GROUP=com.code-troopers.betterpickers - -ANDROID_BUILD_MIN_SDK_VERSION=9 -ANDROID_BUILD_TARGET_SDK_VERSION=25 -ANDROID_BUILD_SDK_VERSION=25 -ANDROID_BUILD_TOOLS_VERSION=25.0.0 +ANDROID_BUILD_MIN_SDK_VERSION=14 +ANDROID_BUILD_TARGET_SDK_VERSION=26 +ANDROID_BUILD_SDK_VERSION=26 +ANDROID_BUILD_TOOLS_VERSION=26.0.1 POM_DESCRIPTION=Android library for better number/date/time-picker DialogFragments. POM_URL=http://github.com/derekbrameyer/android-betterpickers diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index d6e2637affb74a80bfbe87bd2da57e81b2f3c661..ae3d248e62c267f98e8b529fb5539ccfad6d6def 100644 GIT binary patch delta 20058 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 B^^E`k diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 9c4cbae8..5ba837fa 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,5 @@ -#Mon Nov 14 18:28:11 CET 2016 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-3.2-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-4.1-rc-2-all.zip diff --git a/gradlew b/gradlew index 4ef3a871..cccdd3d5 100755 --- a/gradlew +++ b/gradlew @@ -33,11 +33,11 @@ DEFAULT_JVM_OPTS="" # Use the maximum available, or set MAX_FD != -1 to use that value. MAX_FD="maximum" -warn ( ) { +warn () { echo "$*" } -die ( ) { +die () { echo echo "$*" echo @@ -155,13 +155,14 @@ if $cygwin ; then fi # Escape application args -for s in "${@}" ; do - s=\"$s\" - APP_ARGS=$APP_ARGS" "$s -done +save () { + for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done + echo " " +} +APP_ARGS=$(save "$@") # Collect all arguments for the java command, following the shell quoting and substitution rules -eval set -- "$DEFAULT_JVM_OPTS" "$JAVA_OPTS" "$GRADLE_OPTS" "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" +eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" # by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then diff --git a/library/build.gradle b/library/build.gradle index 89723ae2..af043c18 100644 --- a/library/build.gradle +++ b/library/build.gradle @@ -32,10 +32,14 @@ android { lintOptions { abortOnError false } + + // https://developer.android.com/studio/preview/features/java8-support.html + compileOptions { + sourceCompatibility JavaVersion.VERSION_1_8 + targetCompatibility JavaVersion.VERSION_1_8 + } } dependencies { - compile fileTree(dir: 'libs', include: ['*.jar']) - compile 'com.nineoldandroids:library:2.4.0' - compile 'com.android.support:appcompat-v7:25.0.1' + compile 'com.android.support:appcompat-v7:26.0.0' } diff --git a/library/src/main/java/com/codetroopers/betterpickers/Utils.java b/library/src/main/java/com/codetroopers/betterpickers/Utils.java index ff7ad067..f4ebc46e 100644 --- a/library/src/main/java/com/codetroopers/betterpickers/Utils.java +++ b/library/src/main/java/com/codetroopers/betterpickers/Utils.java @@ -16,16 +16,14 @@ package com.codetroopers.betterpickers; +import android.animation.Keyframe; +import android.animation.ObjectAnimator; +import android.animation.PropertyValuesHolder; import android.annotation.SuppressLint; import android.os.Build; import android.text.format.Time; import android.view.View; -import com.nineoldandroids.animation.Keyframe; -import com.nineoldandroids.animation.ObjectAnimator; -import com.nineoldandroids.animation.PropertyValuesHolder; -import com.nineoldandroids.view.animation.AnimatorProxy; - import java.util.Calendar; /** @@ -122,7 +120,7 @@ public static int getWeeksSinceEpochFromJulianDay(int julianDay, int firstDayOfW * @return The animator object. Use .start() to begin. */ public static ObjectAnimator getPulseAnimator(View labelToAnimate, float decreaseRatio, - float increaseRatio) { + float increaseRatio) { Keyframe k0 = Keyframe.ofFloat(0f, 1f); Keyframe k1 = Keyframe.ofFloat(0.275f, decreaseRatio); Keyframe k2 = Keyframe.ofFloat(0.69f, increaseRatio); @@ -131,9 +129,7 @@ public static ObjectAnimator getPulseAnimator(View labelToAnimate, float decreas PropertyValuesHolder scaleX = PropertyValuesHolder.ofKeyframe("scaleX", k0, k1, k2, k3); PropertyValuesHolder scaleY = PropertyValuesHolder.ofKeyframe("scaleY", k0, k1, k2, k3); ObjectAnimator pulseAnimator = - ObjectAnimator.ofPropertyValuesHolder( - AnimatorProxy.NEEDS_PROXY ? AnimatorProxy.wrap(labelToAnimate) : labelToAnimate, scaleX, - scaleY); + ObjectAnimator.ofPropertyValuesHolder(labelToAnimate, scaleX, scaleY); pulseAnimator.setDuration(PULSE_ANIMATOR_DURATION); return pulseAnimator; diff --git a/library/src/main/java/com/codetroopers/betterpickers/calendardatepicker/CalendarDatePickerDialogFragment.java b/library/src/main/java/com/codetroopers/betterpickers/calendardatepicker/CalendarDatePickerDialogFragment.java index 641424a3..69049bdc 100644 --- a/library/src/main/java/com/codetroopers/betterpickers/calendardatepicker/CalendarDatePickerDialogFragment.java +++ b/library/src/main/java/com/codetroopers/betterpickers/calendardatepicker/CalendarDatePickerDialogFragment.java @@ -16,6 +16,7 @@ package com.codetroopers.betterpickers.calendardatepicker; +import android.animation.ObjectAnimator; import android.app.Activity; import android.content.DialogInterface; import android.content.res.Resources; @@ -45,7 +46,6 @@ import com.codetroopers.betterpickers.R; import com.codetroopers.betterpickers.Utils; import com.codetroopers.betterpickers.calendardatepicker.MonthAdapter.CalendarDay; -import com.nineoldandroids.animation.ObjectAnimator; import java.text.SimpleDateFormat; import java.util.Calendar; diff --git a/library/src/main/java/com/codetroopers/betterpickers/calendardatepicker/MonthView.java b/library/src/main/java/com/codetroopers/betterpickers/calendardatepicker/MonthView.java index b31e2686..1e1e4f08 100644 --- a/library/src/main/java/com/codetroopers/betterpickers/calendardatepicker/MonthView.java +++ b/library/src/main/java/com/codetroopers/betterpickers/calendardatepicker/MonthView.java @@ -582,7 +582,7 @@ private void onDayClick(int day) { * @return The date that has accessibility focus, or {@code null} if no date has focus */ public CalendarDay getAccessibilityFocus() { - final int day = mTouchHelper.getFocusedVirtualView(); + final int day = mTouchHelper.getAccessibilityFocusedVirtualViewId(); if (day >= 0) { return new CalendarDay(mYear, mMonth, day); } @@ -630,7 +630,7 @@ public void setFocusedVirtualView(int virtualViewId) { } public void clearFocusedVirtualView() { - final int focusedVirtualView = getFocusedVirtualView(); + final int focusedVirtualView = getAccessibilityFocusedVirtualViewId(); if (focusedVirtualView != ExploreByTouchHelper.INVALID_ID) { getAccessibilityNodeProvider(MonthView.this).performAction( focusedVirtualView, diff --git a/library/src/main/java/com/codetroopers/betterpickers/calendardatepicker/TextViewWithCircularIndicator.java b/library/src/main/java/com/codetroopers/betterpickers/calendardatepicker/TextViewWithCircularIndicator.java index 6a5ea47f..4c2e1c49 100644 --- a/library/src/main/java/com/codetroopers/betterpickers/calendardatepicker/TextViewWithCircularIndicator.java +++ b/library/src/main/java/com/codetroopers/betterpickers/calendardatepicker/TextViewWithCircularIndicator.java @@ -22,15 +22,15 @@ import android.graphics.Paint; import android.graphics.Paint.Align; import android.graphics.Paint.Style; +import android.support.v7.widget.AppCompatTextView; import android.util.AttributeSet; -import android.widget.TextView; import com.codetroopers.betterpickers.R; /** * A text view which, when pressed or activated, displays a blue circle around the text. */ -public class TextViewWithCircularIndicator extends TextView { +public class TextViewWithCircularIndicator extends AppCompatTextView { private static final int SELECTED_CIRCLE_ALPHA = 60; diff --git a/library/src/main/java/com/codetroopers/betterpickers/datepicker/DatePicker.java b/library/src/main/java/com/codetroopers/betterpickers/datepicker/DatePicker.java index 4aa8a288..982cb30c 100644 --- a/library/src/main/java/com/codetroopers/betterpickers/datepicker/DatePicker.java +++ b/library/src/main/java/com/codetroopers/betterpickers/datepicker/DatePicker.java @@ -6,6 +6,7 @@ import android.content.res.TypedArray; import android.os.Parcel; import android.os.Parcelable; +import android.support.v4.content.ContextCompat; import android.support.v4.view.PagerAdapter; import android.support.v4.view.ViewPager; import android.text.format.DateFormat; @@ -87,7 +88,7 @@ public DatePicker(Context context) { * Instantiates a DatePicker object * * @param context the Context required for creation - * @param attrs additional attributes that define custom colors, selectors, and backgrounds. + * @param attrs additional attributes that define custom colors, selectors, and backgrounds. */ public DatePicker(Context context, AttributeSet attrs) { super(context, attrs); @@ -102,8 +103,8 @@ public DatePicker(Context context, AttributeSet attrs) { mTextColor = getResources().getColorStateList(R.color.dialog_text_color_holo_dark); mKeyBackgroundResId = R.drawable.key_background_dark; mButtonBackgroundResId = R.drawable.button_background_dark; - mTitleDividerColor = getResources().getColor(R.color.default_divider_color_dark); - mKeyboardIndicatorColor = getResources().getColor(R.color.default_keyboard_indicator_color_dark); + mTitleDividerColor = ContextCompat.getColor(context, R.color.default_divider_color_dark); + mKeyboardIndicatorColor = ContextCompat.getColor(context, R.color.default_keyboard_indicator_color_dark); mDeleteDrawableSrcResId = R.drawable.ic_backspace_dark; mCheckDrawableSrcResId = R.drawable.ic_check_dark; } @@ -240,7 +241,7 @@ public KeyboardPagerAdapter(LayoutInflater inflater) { * Based on the Locale, inflate the day, month, or year keyboard * * @param collection the ViewPager collection group - * @param position the position within the ViewPager + * @param position the position within the ViewPager * @return an inflated View representing the keyboard for this position */ public Object instantiateItem(ViewGroup collection, int position) { @@ -760,9 +761,9 @@ public int getDayOfMonth() { /** * Set the date shown in the date picker * - * @param year the new year to set + * @param year the new year to set * @param monthOfYear the new zero-indexed month to set - * @param dayOfMonth the new day of month to set + * @param dayOfMonth the new day of month to set */ public void setDate(int year, int monthOfYear, int dayOfMonth) { mMonthInput = monthOfYear; diff --git a/library/src/main/java/com/codetroopers/betterpickers/expirationpicker/ExpirationPicker.java b/library/src/main/java/com/codetroopers/betterpickers/expirationpicker/ExpirationPicker.java index 5a45ac4e..d8a4292d 100644 --- a/library/src/main/java/com/codetroopers/betterpickers/expirationpicker/ExpirationPicker.java +++ b/library/src/main/java/com/codetroopers/betterpickers/expirationpicker/ExpirationPicker.java @@ -7,6 +7,7 @@ import android.content.res.TypedArray; import android.os.Parcel; import android.os.Parcelable; +import android.support.v4.content.ContextCompat; import android.support.v4.view.PagerAdapter; import android.support.v4.view.ViewPager; import android.text.format.DateFormat; @@ -95,8 +96,8 @@ public ExpirationPicker(Context context, AttributeSet attrs) { mTextColor = getResources().getColorStateList(R.color.dialog_text_color_holo_dark); mKeyBackgroundResId = R.drawable.key_background_dark; mButtonBackgroundResId = R.drawable.button_background_dark; - mTitleDividerColor = getResources().getColor(R.color.default_divider_color_dark); - mKeyboardIndicatorColor = getResources().getColor(R.color.default_keyboard_indicator_color_dark); + mTitleDividerColor = ContextCompat.getColor(context, R.color.default_divider_color_dark); + mKeyboardIndicatorColor = ContextCompat.getColor(context, R.color.default_keyboard_indicator_color_dark); mDeleteDrawableSrcResId = R.drawable.ic_backspace_dark; mCheckDrawableSrcResId = R.drawable.ic_check_dark; diff --git a/library/src/main/java/com/codetroopers/betterpickers/hmspicker/HmsPicker.java b/library/src/main/java/com/codetroopers/betterpickers/hmspicker/HmsPicker.java index 1c5f6397..3602ba16 100644 --- a/library/src/main/java/com/codetroopers/betterpickers/hmspicker/HmsPicker.java +++ b/library/src/main/java/com/codetroopers/betterpickers/hmspicker/HmsPicker.java @@ -7,6 +7,7 @@ import android.os.Bundle; import android.os.Parcel; import android.os.Parcelable; +import android.support.v4.content.ContextCompat; import android.util.AttributeSet; import android.view.HapticFeedbackConstants; import android.view.LayoutInflater; @@ -71,7 +72,7 @@ public HmsPicker(Context context, AttributeSet attrs) { mTextColor = getResources().getColorStateList(R.color.dialog_text_color_holo_dark); mKeyBackgroundResId = R.drawable.key_background_dark; mButtonBackgroundResId = R.drawable.button_background_dark; - mDividerColor = getResources().getColor(R.color.default_divider_color_dark); + mDividerColor = ContextCompat.getColor(context, R.color.default_divider_color_dark); mDeleteDrawableSrcResId = R.drawable.ic_backspace_dark; } diff --git a/library/src/main/java/com/codetroopers/betterpickers/numberpicker/NumberPicker.java b/library/src/main/java/com/codetroopers/betterpickers/numberpicker/NumberPicker.java index f07107b2..aedef269 100644 --- a/library/src/main/java/com/codetroopers/betterpickers/numberpicker/NumberPicker.java +++ b/library/src/main/java/com/codetroopers/betterpickers/numberpicker/NumberPicker.java @@ -6,6 +6,7 @@ import android.content.res.TypedArray; import android.os.Parcel; import android.os.Parcelable; +import android.support.v4.content.ContextCompat; import android.text.TextUtils; import android.util.AttributeSet; import android.view.HapticFeedbackConstants; @@ -82,7 +83,7 @@ public NumberPicker(Context context, AttributeSet attrs) { mKeyBackgroundResId = R.drawable.key_background_dark; mButtonBackgroundResId = R.drawable.button_background_dark; mDeleteDrawableSrcResId = R.drawable.ic_backspace_dark; - mDividerColor = getResources().getColor(R.color.default_divider_color_dark); + mDividerColor = ContextCompat.getColor(context, R.color.default_divider_color_dark); } protected int getLayoutId() { diff --git a/library/src/main/java/com/codetroopers/betterpickers/numberpicker/NumberPickerErrorTextView.java b/library/src/main/java/com/codetroopers/betterpickers/numberpicker/NumberPickerErrorTextView.java index 911e7f78..866b564e 100644 --- a/library/src/main/java/com/codetroopers/betterpickers/numberpicker/NumberPickerErrorTextView.java +++ b/library/src/main/java/com/codetroopers/betterpickers/numberpicker/NumberPickerErrorTextView.java @@ -2,16 +2,16 @@ import android.content.Context; import android.os.Handler; +import android.support.v7.widget.AppCompatTextView; import android.util.AttributeSet; import android.view.View; import android.view.animation.Animation; import android.view.animation.AnimationUtils; -import android.widget.TextView; /** * User: derek Date: 6/21/13 Time: 10:37 AM */ -public class NumberPickerErrorTextView extends TextView { +public class NumberPickerErrorTextView extends AppCompatTextView { private static final long LENGTH_SHORT = 3000; diff --git a/library/src/main/java/com/codetroopers/betterpickers/radialtimepicker/RadialPickerLayout.java b/library/src/main/java/com/codetroopers/betterpickers/radialtimepicker/RadialPickerLayout.java index b6b15884..db3eadd1 100644 --- a/library/src/main/java/com/codetroopers/betterpickers/radialtimepicker/RadialPickerLayout.java +++ b/library/src/main/java/com/codetroopers/betterpickers/radialtimepicker/RadialPickerLayout.java @@ -16,12 +16,15 @@ package com.codetroopers.betterpickers.radialtimepicker; +import android.animation.AnimatorSet; +import android.animation.ObjectAnimator; import android.annotation.SuppressLint; import android.content.Context; import android.content.res.Resources; import android.content.res.TypedArray; import android.os.Bundle; import android.os.Handler; +import android.support.v4.content.ContextCompat; import android.support.v4.view.accessibility.AccessibilityManagerCompat; import android.text.format.DateUtils; import android.text.format.Time; @@ -39,9 +42,6 @@ import com.codetroopers.betterpickers.HapticFeedbackController; import com.codetroopers.betterpickers.R; -import com.nineoldandroids.animation.AnimatorSet; -import com.nineoldandroids.animation.ObjectAnimator; -import com.nineoldandroids.view.ViewHelper; public class RadialPickerLayout extends FrameLayout implements OnTouchListener { @@ -130,7 +130,7 @@ public RadialPickerLayout(Context context, AttributeSet attrs) { mInputEnabled = true; mGrayBox = new View(context); mGrayBox.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT)); - mGrayBox.setBackgroundColor(getResources().getColor(R.color.bpTransparent_black)); + mGrayBox.setBackgroundColor(ContextCompat.getColor(context, R.color.bpTransparent_black)); mGrayBox.setVisibility(View.INVISIBLE); addView(mGrayBox); @@ -544,10 +544,11 @@ public void setCurrentItemShowing(int index, boolean animate) { } else { int hourAlpha = (index == HOUR_INDEX) ? 255 : 0; int minuteAlpha = (index == MINUTE_INDEX) ? 255 : 0; - ViewHelper.setAlpha(mHourRadialTextsView, hourAlpha); - ViewHelper.setAlpha(mHourRadialSelectorView, hourAlpha); - ViewHelper.setAlpha(mMinuteRadialTextsView, minuteAlpha); - ViewHelper.setAlpha(mMinuteRadialSelectorView, minuteAlpha); + mHourRadialSelectorView.setAlpha(hourAlpha); + mHourRadialTextsView.setAlpha(hourAlpha); + mHourRadialSelectorView.setAlpha(hourAlpha); + mMinuteRadialTextsView.setAlpha(minuteAlpha); + mMinuteRadialSelectorView.setAlpha(minuteAlpha); } } diff --git a/library/src/main/java/com/codetroopers/betterpickers/radialtimepicker/RadialSelectorView.java b/library/src/main/java/com/codetroopers/betterpickers/radialtimepicker/RadialSelectorView.java index f1ed7275..4b7bd5fd 100644 --- a/library/src/main/java/com/codetroopers/betterpickers/radialtimepicker/RadialSelectorView.java +++ b/library/src/main/java/com/codetroopers/betterpickers/radialtimepicker/RadialSelectorView.java @@ -16,6 +16,10 @@ package com.codetroopers.betterpickers.radialtimepicker; +import android.animation.Keyframe; +import android.animation.ObjectAnimator; +import android.animation.PropertyValuesHolder; +import android.animation.ValueAnimator; import android.content.Context; import android.content.res.Resources; import android.content.res.TypedArray; @@ -27,11 +31,6 @@ import com.codetroopers.betterpickers.R; import com.codetroopers.betterpickers.Utils; -import com.nineoldandroids.animation.Keyframe; -import com.nineoldandroids.animation.ObjectAnimator; -import com.nineoldandroids.animation.PropertyValuesHolder; -import com.nineoldandroids.animation.ValueAnimator; -import com.nineoldandroids.view.animation.AnimatorProxy; /** * View to show what number is selected. This will draw a blue circle over the number, with a blue line coming from the @@ -319,8 +318,7 @@ public ObjectAnimator getDisappearAnimator() { kf1 = Keyframe.ofFloat(1f, 0f); PropertyValuesHolder fadeOut = PropertyValuesHolder.ofKeyframe("alpha", kf0, kf1); - ObjectAnimator disappearAnimator = ObjectAnimator.ofPropertyValuesHolder( - AnimatorProxy.NEEDS_PROXY ? AnimatorProxy.wrap(this) : this, radiusDisappear, fadeOut).setDuration( + ObjectAnimator disappearAnimator = ObjectAnimator.ofPropertyValuesHolder(this, radiusDisappear, fadeOut).setDuration( duration); disappearAnimator.addUpdateListener(mInvalidateUpdateListener); @@ -359,8 +357,7 @@ public ObjectAnimator getReappearAnimator() { kf2 = Keyframe.ofFloat(1f, 1f); PropertyValuesHolder fadeIn = PropertyValuesHolder.ofKeyframe("alpha", kf0, kf1, kf2); - ObjectAnimator reappearAnimator = ObjectAnimator.ofPropertyValuesHolder( - AnimatorProxy.NEEDS_PROXY ? AnimatorProxy.wrap(this) : this, radiusReappear, fadeIn) + ObjectAnimator reappearAnimator = ObjectAnimator.ofPropertyValuesHolder(this, radiusReappear, fadeIn) .setDuration(totalDuration); reappearAnimator.addUpdateListener(mInvalidateUpdateListener); return reappearAnimator; diff --git a/library/src/main/java/com/codetroopers/betterpickers/radialtimepicker/RadialTextsView.java b/library/src/main/java/com/codetroopers/betterpickers/radialtimepicker/RadialTextsView.java index 5b45fff2..5067f3da 100644 --- a/library/src/main/java/com/codetroopers/betterpickers/radialtimepicker/RadialTextsView.java +++ b/library/src/main/java/com/codetroopers/betterpickers/radialtimepicker/RadialTextsView.java @@ -16,6 +16,10 @@ package com.codetroopers.betterpickers.radialtimepicker; +import android.animation.Keyframe; +import android.animation.ObjectAnimator; +import android.animation.PropertyValuesHolder; +import android.animation.ValueAnimator; import android.content.Context; import android.content.res.Resources; import android.content.res.TypedArray; @@ -28,11 +32,6 @@ import android.view.View; import com.codetroopers.betterpickers.R; -import com.nineoldandroids.animation.Keyframe; -import com.nineoldandroids.animation.ObjectAnimator; -import com.nineoldandroids.animation.PropertyValuesHolder; -import com.nineoldandroids.animation.ValueAnimator; -import com.nineoldandroids.view.animation.AnimatorProxy; /** * A view to show a series of numbers in a circular pattern. @@ -296,8 +295,7 @@ private void renderAnimations() { kf1 = Keyframe.ofFloat(1f, 0f); PropertyValuesHolder fadeOut = PropertyValuesHolder.ofKeyframe("alpha", kf0, kf1); - mDisappearAnimator = ObjectAnimator.ofPropertyValuesHolder( - AnimatorProxy.NEEDS_PROXY ? AnimatorProxy.wrap(this) : this, radiusDisappear, fadeOut) + mDisappearAnimator = ObjectAnimator.ofPropertyValuesHolder(this, radiusDisappear, fadeOut) .setDuration(duration); mDisappearAnimator.addUpdateListener(mInvalidateUpdateListener); @@ -321,8 +319,7 @@ private void renderAnimations() { kf2 = Keyframe.ofFloat(1f, 1f); PropertyValuesHolder fadeIn = PropertyValuesHolder.ofKeyframe("alpha", kf0, kf1, kf2); - mReappearAnimator = ObjectAnimator.ofPropertyValuesHolder( - AnimatorProxy.NEEDS_PROXY ? AnimatorProxy.wrap(this) : this, radiusReappear, fadeIn) + mReappearAnimator = ObjectAnimator.ofPropertyValuesHolder(this, radiusReappear, fadeIn) .setDuration(totalDuration); mReappearAnimator.addUpdateListener(mInvalidateUpdateListener); } diff --git a/library/src/main/java/com/codetroopers/betterpickers/radialtimepicker/RadialTimePickerDialogFragment.java b/library/src/main/java/com/codetroopers/betterpickers/radialtimepicker/RadialTimePickerDialogFragment.java index 9beaccfa..d05d222f 100644 --- a/library/src/main/java/com/codetroopers/betterpickers/radialtimepicker/RadialTimePickerDialogFragment.java +++ b/library/src/main/java/com/codetroopers/betterpickers/radialtimepicker/RadialTimePickerDialogFragment.java @@ -16,6 +16,7 @@ package com.codetroopers.betterpickers.radialtimepicker; +import android.animation.ObjectAnimator; import android.app.ActionBar.LayoutParams; import android.content.Context; import android.content.DialogInterface; @@ -44,7 +45,6 @@ import com.codetroopers.betterpickers.Utils; import com.codetroopers.betterpickers.numberpicker.NumberPickerErrorTextView; import com.codetroopers.betterpickers.radialtimepicker.RadialPickerLayout.OnValueSelectedListener; -import com.nineoldandroids.animation.ObjectAnimator; import java.text.DateFormatSymbols; import java.util.ArrayList; diff --git a/library/src/main/java/com/codetroopers/betterpickers/timepicker/TimePicker.java b/library/src/main/java/com/codetroopers/betterpickers/timepicker/TimePicker.java index 1cf5a4a5..dedf22a7 100644 --- a/library/src/main/java/com/codetroopers/betterpickers/timepicker/TimePicker.java +++ b/library/src/main/java/com/codetroopers/betterpickers/timepicker/TimePicker.java @@ -7,6 +7,7 @@ import android.os.Bundle; import android.os.Parcel; import android.os.Parcelable; +import android.support.v4.content.ContextCompat; import android.util.AttributeSet; import android.view.HapticFeedbackConstants; import android.view.LayoutInflater; @@ -84,7 +85,7 @@ public TimePicker(Context context, AttributeSet attrs) { mTextColor = getResources().getColorStateList(R.color.dialog_text_color_holo_dark); mKeyBackgroundResId = R.drawable.key_background_dark; mButtonBackgroundResId = R.drawable.button_background_dark; - mDividerColor = getResources().getColor(R.color.default_divider_color_dark); + mDividerColor = ContextCompat.getColor(context, R.color.default_divider_color_dark); mDeleteDrawableSrcResId = R.drawable.ic_backspace_dark; } diff --git a/library/src/main/java/com/codetroopers/betterpickers/widget/AccessibleTextView.java b/library/src/main/java/com/codetroopers/betterpickers/widget/AccessibleTextView.java index 9ba99250..ce55111c 100644 --- a/library/src/main/java/com/codetroopers/betterpickers/widget/AccessibleTextView.java +++ b/library/src/main/java/com/codetroopers/betterpickers/widget/AccessibleTextView.java @@ -17,16 +17,16 @@ package com.codetroopers.betterpickers.widget; import android.content.Context; +import android.support.v7.widget.AppCompatTextView; import android.util.AttributeSet; import android.view.accessibility.AccessibilityEvent; import android.view.accessibility.AccessibilityNodeInfo; import android.widget.Button; -import android.widget.TextView; /** * Fake Button class, used so TextViews can announce themselves as Buttons, for accessibility. */ -public class AccessibleTextView extends TextView { +public class AccessibleTextView extends AppCompatTextView { public AccessibleTextView(Context context, AttributeSet attrs) { super(context, attrs); diff --git a/library/src/main/java/com/codetroopers/betterpickers/widget/UnderlinePageIndicatorPicker.java b/library/src/main/java/com/codetroopers/betterpickers/widget/UnderlinePageIndicatorPicker.java index 9d6ab00b..8230dc44 100644 --- a/library/src/main/java/com/codetroopers/betterpickers/widget/UnderlinePageIndicatorPicker.java +++ b/library/src/main/java/com/codetroopers/betterpickers/widget/UnderlinePageIndicatorPicker.java @@ -22,6 +22,7 @@ import android.graphics.Paint.Style; import android.os.Parcel; import android.os.Parcelable; +import android.support.v4.content.ContextCompat; import android.support.v4.view.MotionEventCompat; import android.support.v4.view.ViewConfigurationCompat; import android.support.v4.view.ViewPager; @@ -70,7 +71,7 @@ public UnderlinePageIndicatorPicker(Context context, AttributeSet attrs) { public UnderlinePageIndicatorPicker(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); - mColorUnderline = getResources().getColor(R.color.dialog_text_color_holo_dark); + mColorUnderline = ContextCompat.getColor(context, R.color.dialog_text_color_holo_dark); TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.BetterPickersDialogFragment, defStyle, 0); mColorUnderline = a.getColor(R.styleable.BetterPickersDialogFragment_bpKeyboardIndicatorColor, mColorUnderline); diff --git a/library/src/main/java/com/codetroopers/betterpickers/widget/ZeroTopPaddingTextView.java b/library/src/main/java/com/codetroopers/betterpickers/widget/ZeroTopPaddingTextView.java index 10cf0e2a..6130796b 100644 --- a/library/src/main/java/com/codetroopers/betterpickers/widget/ZeroTopPaddingTextView.java +++ b/library/src/main/java/com/codetroopers/betterpickers/widget/ZeroTopPaddingTextView.java @@ -19,15 +19,15 @@ import android.content.Context; import android.graphics.Typeface; import android.os.Build; +import android.support.v7.widget.AppCompatTextView; import android.util.AttributeSet; -import android.widget.TextView; import com.codetroopers.betterpickers.R; /** * Displays text with no padding at the top. */ -public class ZeroTopPaddingTextView extends TextView { +public class ZeroTopPaddingTextView extends AppCompatTextView { private static final float NORMAL_FONT_PADDING_RATIO = 0.328f; // the bold fontface has less empty space on the top diff --git a/sample/build.gradle b/sample/build.gradle index bbb2affe..babb4229 100644 --- a/sample/build.gradle +++ b/sample/build.gradle @@ -20,10 +20,15 @@ android { proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } + + // https://developer.android.com/studio/preview/features/java8-support.html + compileOptions { + sourceCompatibility JavaVersion.VERSION_1_8 + targetCompatibility JavaVersion.VERSION_1_8 + } } dependencies { - compile fileTree(dir: 'libs', include: ['*.jar']) compile project(':library') - compile 'joda-time:joda-time:2.9.6' + compile 'joda-time:joda-time:2.9.9' } From ac1958618cec6428ea1b0c4e081511128e3fb9bb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mat=C4=9Bj=20Trakal?= Date: Tue, 1 Aug 2017 18:14:00 +0200 Subject: [PATCH 2/3] Use implementation instead of compile --- library/build.gradle | 2 +- sample/build.gradle | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/library/build.gradle b/library/build.gradle index af043c18..f8b7e8a4 100644 --- a/library/build.gradle +++ b/library/build.gradle @@ -41,5 +41,5 @@ android { } dependencies { - compile 'com.android.support:appcompat-v7:26.0.0' + implementation 'com.android.support:appcompat-v7:26.0.0' } diff --git a/sample/build.gradle b/sample/build.gradle index babb4229..f9756e45 100644 --- a/sample/build.gradle +++ b/sample/build.gradle @@ -29,6 +29,7 @@ android { } dependencies { - compile project(':library') - compile 'joda-time:joda-time:2.9.9' + implementation project(':library') + implementation 'com.android.support:appcompat-v7:26.0.0' + implementation 'joda-time:joda-time:2.9.9' } From e547ab86f489acdfc98efa0c0070a3a48cd6261c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mat=C4=9Bj=20Trakal?= Date: Fri, 11 Aug 2017 15:14:39 +0200 Subject: [PATCH 3/3] Upgrade to gradle 4.1 --- build.gradle | 4 ++-- gradle/wrapper/gradle-wrapper.jar | Bin 54713 -> 54708 bytes gradle/wrapper/gradle-wrapper.properties | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/build.gradle b/build.gradle index 3ed1fb92..5e20b6f3 100644 --- a/build.gradle +++ b/build.gradle @@ -8,7 +8,7 @@ buildscript { maven { url 'https://jitpack.io' } } dependencies { - classpath 'com.android.tools.build:gradle:3.0.0-alpha9' + classpath 'com.android.tools.build:gradle:3.0.0-beta1' // to auto install sdk components when building see #248 // classpath 'com.jakewharton.sdkmanager:gradle-plugin:0.12.+' classpath 'com.github.plastiv:sdk-manager-plugin:b04aea1cddf87e78db9a4372794d678f9e568c48' @@ -31,6 +31,6 @@ allprojects { } task wrapper(type: Wrapper) { - gradleVersion = '4.1-rc-2' + gradleVersion = '4.1' distributionUrl = distributionUrl.replace("bin", "all") } diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index ae3d248e62c267f98e8b529fb5539ccfad6d6def..7a3265ee94c0ab25cf079ac8ccdf87f41d455d42 100644 GIT binary patch delta 51 zcmdnFnt97=<_)?>_*obNyxBRtR)5G9W?*0t-0XNnN01ZFom_U+md*YMP=)~jwbBnZ delta 56 zcmdn8ntA7H<_)?>M6T$1T{C532=Hd-sNXcbP=bMhL2R?l5gkEJICpa4Ra-WfBS0Aj E05K*JYybcN diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 5ba837fa..bf1b63c3 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -2,4 +2,4 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-4.1-rc-2-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-4.1-all.zip