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..5e20b6f3 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-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' @@ -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' + 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 d6e2637a..7a3265ee 100644 Binary files a/gradle/wrapper/gradle-wrapper.jar and b/gradle/wrapper/gradle-wrapper.jar differ diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 9c4cbae8..bf1b63c3 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-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..f8b7e8a4 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' + implementation '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..f9756e45 100644 --- a/sample/build.gradle +++ b/sample/build.gradle @@ -20,10 +20,16 @@ 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' + implementation project(':library') + implementation 'com.android.support:appcompat-v7:26.0.0' + implementation 'joda-time:joda-time:2.9.9' }