From 4b38a99961fac44b14848cf8782d5619c7b3dddc Mon Sep 17 00:00:00 2001 From: Trumeet Date: Sat, 8 Sep 2018 21:08:14 -0700 Subject: First commit --- library/.gitignore | 1 + library/build.gradle | 29 +++ library/proguard-rules.pro | 21 ++ library/src/main/AndroidManifest.xml | 1 + .../com/android/systemui/qr/PageIndicator.java | 239 +++++++++++++++++++++ .../main/res/anim/major_a_b_dot_01_animation.xml | 25 +++ .../src/main/res/anim/major_a_b_dot_animation.xml | 26 +++ .../main/res/anim/major_b_a_dot_01_animation.xml | 25 +++ .../src/main/res/anim/major_b_a_dot_animation.xml | 26 +++ .../main/res/anim/major_b_c_dot_01_animation.xml | 25 +++ .../src/main/res/anim/major_b_c_dot_animation.xml | 26 +++ .../main/res/anim/major_c_b_dot_01_animation.xml | 25 +++ .../src/main/res/anim/major_c_b_dot_animation.xml | 26 +++ .../main/res/anim/minor_a_b_dot_02_animation.xml | 25 +++ .../main/res/anim/minor_b_a_dot_02_animation.xml | 25 +++ .../main/res/anim/minor_b_c_dot_02_animation.xml | 25 +++ .../main/res/anim/minor_c_b_dot_02_animation.xml | 25 +++ library/src/main/res/drawable/major_a_b.xml | 37 ++++ .../src/main/res/drawable/major_a_b_animation.xml | 26 +++ library/src/main/res/drawable/major_b_a.xml | 37 ++++ .../src/main/res/drawable/major_b_a_animation.xml | 26 +++ .../main/res/drawable/major_b_a_dot_animation.xml | 26 +++ library/src/main/res/drawable/major_b_c.xml | 37 ++++ .../src/main/res/drawable/major_b_c_animation.xml | 26 +++ library/src/main/res/drawable/major_c_b.xml | 37 ++++ .../src/main/res/drawable/major_c_b_animation.xml | 26 +++ library/src/main/res/drawable/minor_a_b.xml | 36 ++++ .../src/main/res/drawable/minor_a_b_animation.xml | 23 ++ library/src/main/res/drawable/minor_b_a.xml | 36 ++++ .../src/main/res/drawable/minor_b_a_animation.xml | 23 ++ library/src/main/res/drawable/minor_b_c.xml | 36 ++++ .../src/main/res/drawable/minor_b_c_animation.xml | 23 ++ library/src/main/res/drawable/minor_c_b.xml | 36 ++++ .../src/main/res/drawable/minor_c_b_animation.xml | 23 ++ library/src/main/res/values/dimens.xml | 6 + library/src/main/res/values/strings.xml | 5 + 36 files changed, 1120 insertions(+) create mode 100644 library/.gitignore create mode 100644 library/build.gradle create mode 100644 library/proguard-rules.pro create mode 100644 library/src/main/AndroidManifest.xml create mode 100644 library/src/main/java/com/android/systemui/qr/PageIndicator.java create mode 100644 library/src/main/res/anim/major_a_b_dot_01_animation.xml create mode 100644 library/src/main/res/anim/major_a_b_dot_animation.xml create mode 100644 library/src/main/res/anim/major_b_a_dot_01_animation.xml create mode 100644 library/src/main/res/anim/major_b_a_dot_animation.xml create mode 100644 library/src/main/res/anim/major_b_c_dot_01_animation.xml create mode 100644 library/src/main/res/anim/major_b_c_dot_animation.xml create mode 100644 library/src/main/res/anim/major_c_b_dot_01_animation.xml create mode 100644 library/src/main/res/anim/major_c_b_dot_animation.xml create mode 100644 library/src/main/res/anim/minor_a_b_dot_02_animation.xml create mode 100644 library/src/main/res/anim/minor_b_a_dot_02_animation.xml create mode 100644 library/src/main/res/anim/minor_b_c_dot_02_animation.xml create mode 100644 library/src/main/res/anim/minor_c_b_dot_02_animation.xml create mode 100644 library/src/main/res/drawable/major_a_b.xml create mode 100644 library/src/main/res/drawable/major_a_b_animation.xml create mode 100644 library/src/main/res/drawable/major_b_a.xml create mode 100644 library/src/main/res/drawable/major_b_a_animation.xml create mode 100644 library/src/main/res/drawable/major_b_a_dot_animation.xml create mode 100644 library/src/main/res/drawable/major_b_c.xml create mode 100644 library/src/main/res/drawable/major_b_c_animation.xml create mode 100644 library/src/main/res/drawable/major_c_b.xml create mode 100644 library/src/main/res/drawable/major_c_b_animation.xml create mode 100644 library/src/main/res/drawable/minor_a_b.xml create mode 100644 library/src/main/res/drawable/minor_a_b_animation.xml create mode 100644 library/src/main/res/drawable/minor_b_a.xml create mode 100644 library/src/main/res/drawable/minor_b_a_animation.xml create mode 100644 library/src/main/res/drawable/minor_b_c.xml create mode 100644 library/src/main/res/drawable/minor_b_c_animation.xml create mode 100644 library/src/main/res/drawable/minor_c_b.xml create mode 100644 library/src/main/res/drawable/minor_c_b_animation.xml create mode 100644 library/src/main/res/values/dimens.xml create mode 100644 library/src/main/res/values/strings.xml (limited to 'library') diff --git a/library/.gitignore b/library/.gitignore new file mode 100644 index 0000000..796b96d --- /dev/null +++ b/library/.gitignore @@ -0,0 +1 @@ +/build diff --git a/library/build.gradle b/library/build.gradle new file mode 100644 index 0000000..a50f756 --- /dev/null +++ b/library/build.gradle @@ -0,0 +1,29 @@ +apply plugin: 'com.android.library' + +android { + compileSdkVersion 28 + + + + defaultConfig { + minSdkVersion 21 + targetSdkVersion 28 + versionCode 1 + versionName "1.0" + + testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" + + } + + buildTypes { + release { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' + } + } + +} + +dependencies { + implementation fileTree(dir: 'libs', include: ['*.jar']) +} diff --git a/library/proguard-rules.pro b/library/proguard-rules.pro new file mode 100644 index 0000000..f1b4245 --- /dev/null +++ b/library/proguard-rules.pro @@ -0,0 +1,21 @@ +# Add project specific ProGuard rules here. +# You can control the set of applied configuration files using the +# proguardFiles setting in build.gradle. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} + +# Uncomment this to preserve the line number information for +# debugging stack traces. +#-keepattributes SourceFile,LineNumberTable + +# If you keep the line number information, uncomment this to +# hide the original source file name. +#-renamesourcefileattribute SourceFile diff --git a/library/src/main/AndroidManifest.xml b/library/src/main/AndroidManifest.xml new file mode 100644 index 0000000..d7b035f --- /dev/null +++ b/library/src/main/AndroidManifest.xml @@ -0,0 +1 @@ + diff --git a/library/src/main/java/com/android/systemui/qr/PageIndicator.java b/library/src/main/java/com/android/systemui/qr/PageIndicator.java new file mode 100644 index 0000000..0205e71 --- /dev/null +++ b/library/src/main/java/com/android/systemui/qr/PageIndicator.java @@ -0,0 +1,239 @@ +package com.android.systemui.qr; + +import android.content.Context; +import android.content.res.ColorStateList; +import android.content.res.TypedArray; +import android.graphics.drawable.AnimatedVectorDrawable; +import android.util.AttributeSet; +import android.util.Log; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageView; + +import java.util.ArrayList; + +import moe.yuuta.lib.pageindicator.BuildConfig; +import moe.yuuta.lib.pageindicator.R; + +public class PageIndicator extends ViewGroup { + + private static final String TAG = "PageIndicator"; + // Note by Yuuta: [CHANGED] use BuildConfig instead of hardcoded value. + private static final boolean DEBUG = BuildConfig.DEBUG; + + private static final long ANIMATION_DURATION = 250; + + // The size of a single dot in relation to the whole animation. + private static final float SINGLE_SCALE = .4f; + + private static final float MINOR_ALPHA = .42f; + + private final ArrayList mQueuedPositions = new ArrayList<>(); + + private final int mPageIndicatorWidth; + private final int mPageIndicatorHeight; + private final int mPageDotWidth; + + private int mPosition = -1; + private boolean mAnimating; + + public PageIndicator(Context context, AttributeSet attrs) { + super(context, attrs); + mPageIndicatorWidth = + (int) getContext().getResources().getDimension(R.dimen.qs_page_indicator_width); + mPageIndicatorHeight = + (int) getContext().getResources().getDimension(R.dimen.qs_page_indicator_height); + mPageDotWidth = (int) (mPageIndicatorWidth * SINGLE_SCALE); + } + + public void setNumPages(int numPages) { + setVisibility(numPages > 1 ? View.VISIBLE : View.GONE); + if (mAnimating) { + Log.w(TAG, "setNumPages during animation"); + } + while (numPages < getChildCount()) { + removeViewAt(getChildCount() - 1); + } + TypedArray array = getContext().obtainStyledAttributes( + new int[]{android.R.attr.colorControlActivated}); + int color = array.getColor(0, 0); + array.recycle(); + while (numPages > getChildCount()) { + ImageView v = new ImageView(getContext()); + v.setImageResource(R.drawable.minor_a_b); + v.setImageTintList(ColorStateList.valueOf(color)); + addView(v, new LayoutParams(mPageIndicatorWidth, mPageIndicatorHeight)); + } + // Refresh state. + setIndex(mPosition >> 1); + } + + public void setLocation(float location) { + int index = (int) location; + setContentDescription(getContext().getString(R.string.accessibility_quick_settings_page, + (index + 1), getChildCount())); + int position = index << 1 | ((location != index) ? 1 : 0); + if (DEBUG) Log.d(TAG, "setLocation " + location + " " + index + " " + position); + + int lastPosition = mPosition; + if (mQueuedPositions.size() != 0) { + lastPosition = mQueuedPositions.get(mQueuedPositions.size() - 1); + } + if (position == lastPosition) return; + if (mAnimating) { + if (DEBUG) Log.d(TAG, "Queueing transition to " + Integer.toHexString(position)); + mQueuedPositions.add(position); + return; + } + + setPosition(position); + } + + /** + * Note by Yuuta: [CHANGED] isUserVisible() has been ignored because it's a hidden api. + */ + private void setPosition(int position) { + if (Math.abs(mPosition - position) == 1) { + animate(mPosition, position); + } else { + if (DEBUG) Log.d(TAG, "Skipping animation " + mPosition + + " " + position); + setIndex(position >> 1); + } + mPosition = position; + } + + private void setIndex(int index) { + final int N = getChildCount(); + for (int i = 0; i < N; i++) { + ImageView v = (ImageView) getChildAt(i); + // Clear out any animation positioning. + v.setTranslationX(0); + v.setImageResource(R.drawable.major_a_b); + v.setAlpha(getAlpha(i == index)); + } + } + + private void animate(int from, int to) { + if (DEBUG) Log.d(TAG, "Animating from " + Integer.toHexString(from) + " to " + + Integer.toHexString(to)); + int fromIndex = from >> 1; + int toIndex = to >> 1; + + // Set the position of everything, then we will manually control the two views involved + // in the animation. + setIndex(fromIndex); + + boolean fromTransition = (from & 1) != 0; + boolean isAState = fromTransition ? from > to : from < to; + int firstIndex = Math.min(fromIndex, toIndex); + int secondIndex = Math.max(fromIndex, toIndex); + if (secondIndex == firstIndex) { + secondIndex++; + } + ImageView first = (ImageView) getChildAt(firstIndex); + ImageView second = (ImageView) getChildAt(secondIndex); + if (first == null || second == null) { + // may happen during reInflation or other weird cases + return; + } + // Lay the two views on top of each other. + second.setTranslationX(first.getX() - second.getX()); + + playAnimation(first, getTransition(fromTransition, isAState, false)); + first.setAlpha(getAlpha(false)); + + playAnimation(second, getTransition(fromTransition, isAState, true)); + second.setAlpha(getAlpha(true)); + + mAnimating = true; + } + + private float getAlpha(boolean isMajor) { + return isMajor ? 1 : MINOR_ALPHA; + } + + private void playAnimation(ImageView imageView, int res) { + final AnimatedVectorDrawable avd = (AnimatedVectorDrawable) getContext().getDrawable(res); + imageView.setImageDrawable(avd); + // Note by Yuuta: [CHANGED] forceAnimationOnUI() has been ignored because it's a hidden api. + // avd.forceAnimationOnUI(); + avd.start(); + // TODO: Figure out how to user an AVD animation callback instead, which doesn't + // seem to be working right now... + postDelayed(mAnimationDone, ANIMATION_DURATION); + } + + private int getTransition(boolean fromB, boolean isMajorAState, boolean isMajor) { + if (isMajor) { + if (fromB) { + if (isMajorAState) { + return R.drawable.major_b_a_animation; + } else { + return R.drawable.major_b_c_animation; + } + } else { + if (isMajorAState) { + return R.drawable.major_a_b_animation; + } else { + return R.drawable.major_c_b_animation; + } + } + } else { + if (fromB) { + if (isMajorAState) { + return R.drawable.minor_b_c_animation; + } else { + return R.drawable.minor_b_a_animation; + } + } else { + if (isMajorAState) { + return R.drawable.minor_c_b_animation; + } else { + return R.drawable.minor_a_b_animation; + } + } + } + } + + @Override + protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { + final int N = getChildCount(); + if (N == 0) { + super.onMeasure(widthMeasureSpec, heightMeasureSpec); + return; + } + final int widthChildSpec = MeasureSpec.makeMeasureSpec(mPageIndicatorWidth, + MeasureSpec.EXACTLY); + final int heightChildSpec = MeasureSpec.makeMeasureSpec(mPageIndicatorHeight, + MeasureSpec.EXACTLY); + for (int i = 0; i < N; i++) { + getChildAt(i).measure(widthChildSpec, heightChildSpec); + } + int width = (mPageIndicatorWidth - mPageDotWidth) * (N - 1) + mPageDotWidth; + setMeasuredDimension(width, mPageIndicatorHeight); + } + + @Override + protected void onLayout(boolean changed, int l, int t, int r, int b) { + final int N = getChildCount(); + if (N == 0) { + return; + } + for (int i = 0; i < N; i++) { + int left = (mPageIndicatorWidth - mPageDotWidth) * i; + getChildAt(i).layout(left, 0, mPageIndicatorWidth + left, mPageIndicatorHeight); + } + } + + private final Runnable mAnimationDone = new Runnable() { + @Override + public void run() { + if (DEBUG) Log.d(TAG, "onAnimationEnd - queued: " + mQueuedPositions.size()); + mAnimating = false; + if (mQueuedPositions.size() != 0) { + setPosition(mQueuedPositions.remove(0)); + } + } + }; +} diff --git a/library/src/main/res/anim/major_a_b_dot_01_animation.xml b/library/src/main/res/anim/major_a_b_dot_01_animation.xml new file mode 100644 index 0000000..b5bb4dc --- /dev/null +++ b/library/src/main/res/anim/major_a_b_dot_01_animation.xml @@ -0,0 +1,25 @@ + + + + + diff --git a/library/src/main/res/anim/major_a_b_dot_animation.xml b/library/src/main/res/anim/major_a_b_dot_animation.xml new file mode 100644 index 0000000..6443167 --- /dev/null +++ b/library/src/main/res/anim/major_a_b_dot_animation.xml @@ -0,0 +1,26 @@ + + + + + diff --git a/library/src/main/res/anim/major_b_a_dot_01_animation.xml b/library/src/main/res/anim/major_b_a_dot_01_animation.xml new file mode 100644 index 0000000..2e0a4fa --- /dev/null +++ b/library/src/main/res/anim/major_b_a_dot_01_animation.xml @@ -0,0 +1,25 @@ + + + + + diff --git a/library/src/main/res/anim/major_b_a_dot_animation.xml b/library/src/main/res/anim/major_b_a_dot_animation.xml new file mode 100644 index 0000000..731c87c --- /dev/null +++ b/library/src/main/res/anim/major_b_a_dot_animation.xml @@ -0,0 +1,26 @@ + + + + + diff --git a/library/src/main/res/anim/major_b_c_dot_01_animation.xml b/library/src/main/res/anim/major_b_c_dot_01_animation.xml new file mode 100644 index 0000000..e8c2687 --- /dev/null +++ b/library/src/main/res/anim/major_b_c_dot_01_animation.xml @@ -0,0 +1,25 @@ + + + + + diff --git a/library/src/main/res/anim/major_b_c_dot_animation.xml b/library/src/main/res/anim/major_b_c_dot_animation.xml new file mode 100644 index 0000000..731c87c --- /dev/null +++ b/library/src/main/res/anim/major_b_c_dot_animation.xml @@ -0,0 +1,26 @@ + + + + + diff --git a/library/src/main/res/anim/major_c_b_dot_01_animation.xml b/library/src/main/res/anim/major_c_b_dot_01_animation.xml new file mode 100644 index 0000000..d0174bc --- /dev/null +++ b/library/src/main/res/anim/major_c_b_dot_01_animation.xml @@ -0,0 +1,25 @@ + + + + + diff --git a/library/src/main/res/anim/major_c_b_dot_animation.xml b/library/src/main/res/anim/major_c_b_dot_animation.xml new file mode 100644 index 0000000..6443167 --- /dev/null +++ b/library/src/main/res/anim/major_c_b_dot_animation.xml @@ -0,0 +1,26 @@ + + + + + diff --git a/library/src/main/res/anim/minor_a_b_dot_02_animation.xml b/library/src/main/res/anim/minor_a_b_dot_02_animation.xml new file mode 100644 index 0000000..b5bb4dc --- /dev/null +++ b/library/src/main/res/anim/minor_a_b_dot_02_animation.xml @@ -0,0 +1,25 @@ + + + + + diff --git a/library/src/main/res/anim/minor_b_a_dot_02_animation.xml b/library/src/main/res/anim/minor_b_a_dot_02_animation.xml new file mode 100644 index 0000000..2e0a4fa --- /dev/null +++ b/library/src/main/res/anim/minor_b_a_dot_02_animation.xml @@ -0,0 +1,25 @@ + + + + + diff --git a/library/src/main/res/anim/minor_b_c_dot_02_animation.xml b/library/src/main/res/anim/minor_b_c_dot_02_animation.xml new file mode 100644 index 0000000..e8c2687 --- /dev/null +++ b/library/src/main/res/anim/minor_b_c_dot_02_animation.xml @@ -0,0 +1,25 @@ + + + + + diff --git a/library/src/main/res/anim/minor_c_b_dot_02_animation.xml b/library/src/main/res/anim/minor_c_b_dot_02_animation.xml new file mode 100644 index 0000000..d0174bc --- /dev/null +++ b/library/src/main/res/anim/minor_c_b_dot_02_animation.xml @@ -0,0 +1,25 @@ + + + + + diff --git a/library/src/main/res/drawable/major_a_b.xml b/library/src/main/res/drawable/major_a_b.xml new file mode 100644 index 0000000..45386f9 --- /dev/null +++ b/library/src/main/res/drawable/major_a_b.xml @@ -0,0 +1,37 @@ + + + + + + + + + diff --git a/library/src/main/res/drawable/major_a_b_animation.xml b/library/src/main/res/drawable/major_a_b_animation.xml new file mode 100644 index 0000000..74d7544 --- /dev/null +++ b/library/src/main/res/drawable/major_a_b_animation.xml @@ -0,0 +1,26 @@ + + + + + + diff --git a/library/src/main/res/drawable/major_b_a.xml b/library/src/main/res/drawable/major_b_a.xml new file mode 100644 index 0000000..4fcff0c --- /dev/null +++ b/library/src/main/res/drawable/major_b_a.xml @@ -0,0 +1,37 @@ + + + + + + + + + diff --git a/library/src/main/res/drawable/major_b_a_animation.xml b/library/src/main/res/drawable/major_b_a_animation.xml new file mode 100644 index 0000000..cf446e6 --- /dev/null +++ b/library/src/main/res/drawable/major_b_a_animation.xml @@ -0,0 +1,26 @@ + + + + + + diff --git a/library/src/main/res/drawable/major_b_a_dot_animation.xml b/library/src/main/res/drawable/major_b_a_dot_animation.xml new file mode 100644 index 0000000..731c87c --- /dev/null +++ b/library/src/main/res/drawable/major_b_a_dot_animation.xml @@ -0,0 +1,26 @@ + + + + + diff --git a/library/src/main/res/drawable/major_b_c.xml b/library/src/main/res/drawable/major_b_c.xml new file mode 100644 index 0000000..c03a8d5 --- /dev/null +++ b/library/src/main/res/drawable/major_b_c.xml @@ -0,0 +1,37 @@ + + + + + + + + + diff --git a/library/src/main/res/drawable/major_b_c_animation.xml b/library/src/main/res/drawable/major_b_c_animation.xml new file mode 100644 index 0000000..38e12f4 --- /dev/null +++ b/library/src/main/res/drawable/major_b_c_animation.xml @@ -0,0 +1,26 @@ + + + + + + diff --git a/library/src/main/res/drawable/major_c_b.xml b/library/src/main/res/drawable/major_c_b.xml new file mode 100644 index 0000000..9e4e245 --- /dev/null +++ b/library/src/main/res/drawable/major_c_b.xml @@ -0,0 +1,37 @@ + + + + + + + + + diff --git a/library/src/main/res/drawable/major_c_b_animation.xml b/library/src/main/res/drawable/major_c_b_animation.xml new file mode 100644 index 0000000..7f7850d --- /dev/null +++ b/library/src/main/res/drawable/major_c_b_animation.xml @@ -0,0 +1,26 @@ + + + + + + diff --git a/library/src/main/res/drawable/minor_a_b.xml b/library/src/main/res/drawable/minor_a_b.xml new file mode 100644 index 0000000..4bb330c --- /dev/null +++ b/library/src/main/res/drawable/minor_a_b.xml @@ -0,0 +1,36 @@ + + + + + + + + + diff --git a/library/src/main/res/drawable/minor_a_b_animation.xml b/library/src/main/res/drawable/minor_a_b_animation.xml new file mode 100644 index 0000000..50e20e7 --- /dev/null +++ b/library/src/main/res/drawable/minor_a_b_animation.xml @@ -0,0 +1,23 @@ + + + + + diff --git a/library/src/main/res/drawable/minor_b_a.xml b/library/src/main/res/drawable/minor_b_a.xml new file mode 100644 index 0000000..f61deec --- /dev/null +++ b/library/src/main/res/drawable/minor_b_a.xml @@ -0,0 +1,36 @@ + + + + + + + + + diff --git a/library/src/main/res/drawable/minor_b_a_animation.xml b/library/src/main/res/drawable/minor_b_a_animation.xml new file mode 100644 index 0000000..460a2f7 --- /dev/null +++ b/library/src/main/res/drawable/minor_b_a_animation.xml @@ -0,0 +1,23 @@ + + + + + diff --git a/library/src/main/res/drawable/minor_b_c.xml b/library/src/main/res/drawable/minor_b_c.xml new file mode 100644 index 0000000..867af6d --- /dev/null +++ b/library/src/main/res/drawable/minor_b_c.xml @@ -0,0 +1,36 @@ + + + + + + + + + diff --git a/library/src/main/res/drawable/minor_b_c_animation.xml b/library/src/main/res/drawable/minor_b_c_animation.xml new file mode 100644 index 0000000..53b8bd6 --- /dev/null +++ b/library/src/main/res/drawable/minor_b_c_animation.xml @@ -0,0 +1,23 @@ + + + + + diff --git a/library/src/main/res/drawable/minor_c_b.xml b/library/src/main/res/drawable/minor_c_b.xml new file mode 100644 index 0000000..b2e33cf --- /dev/null +++ b/library/src/main/res/drawable/minor_c_b.xml @@ -0,0 +1,36 @@ + + + + + + + + + diff --git a/library/src/main/res/drawable/minor_c_b_animation.xml b/library/src/main/res/drawable/minor_c_b_animation.xml new file mode 100644 index 0000000..bf5e81e --- /dev/null +++ b/library/src/main/res/drawable/minor_c_b_animation.xml @@ -0,0 +1,23 @@ + + + + + diff --git a/library/src/main/res/values/dimens.xml b/library/src/main/res/values/dimens.xml new file mode 100644 index 0000000..4f4226d --- /dev/null +++ b/library/src/main/res/values/dimens.xml @@ -0,0 +1,6 @@ + + + 16dp + 8dp + 14sp + \ No newline at end of file diff --git a/library/src/main/res/values/strings.xml b/library/src/main/res/values/strings.xml new file mode 100644 index 0000000..99f7728 --- /dev/null +++ b/library/src/main/res/values/strings.xml @@ -0,0 +1,5 @@ + + + + Page %1$d of %2$d + \ No newline at end of file -- cgit v1.2.3