diff options
author | Ebrahim Byagowi <ebrahim@gnu.org> | 2020-04-08 15:32:51 +0430 |
---|---|---|
committer | Ebrahim Byagowi <ebrahim@gnu.org> | 2020-04-21 19:30:16 +0430 |
commit | cedfb27ccaef74d954bb3a8f0ea471be63a1375c (patch) | |
tree | 40b50e8feef451ab45e015f217d02cc174578829 /app/src/main/java/de/danoeh/antennapod/view | |
parent | 3a86745e8144baa6d0a2cdc88aa0e29d1fd6e66c (diff) | |
download | AntennaPod-cedfb27ccaef74d954bb3a8f0ea471be63a1375c.zip |
Port AudioPlayer's viewpager to ViewPager2, improve RTL support
Diffstat (limited to 'app/src/main/java/de/danoeh/antennapod/view')
-rw-r--r-- | app/src/main/java/de/danoeh/antennapod/view/PagerIndicatorView.java | 23 |
1 files changed, 14 insertions, 9 deletions
diff --git a/app/src/main/java/de/danoeh/antennapod/view/PagerIndicatorView.java b/app/src/main/java/de/danoeh/antennapod/view/PagerIndicatorView.java index 53a95eede..780ee0d88 100644 --- a/app/src/main/java/de/danoeh/antennapod/view/PagerIndicatorView.java +++ b/app/src/main/java/de/danoeh/antennapod/view/PagerIndicatorView.java @@ -1,15 +1,17 @@ package de.danoeh.antennapod.view; +import android.animation.ArgbEvaluator; import android.content.Context; import android.content.res.TypedArray; -import android.database.DataSetObserver; import android.graphics.Canvas; import android.graphics.Paint; import android.util.AttributeSet; import android.view.View; + import androidx.annotation.Nullable; -import androidx.vectordrawable.graphics.drawable.ArgbEvaluator; -import androidx.viewpager.widget.ViewPager; +import androidx.core.view.ViewCompat; +import androidx.recyclerview.widget.RecyclerView; +import androidx.viewpager2.widget.ViewPager2; public class PagerIndicatorView extends View { private final Paint paint = new Paint(); @@ -38,26 +40,29 @@ public class PagerIndicatorView extends View { paint.setAntiAlias(true); paint.setStyle(Paint.Style.FILL); - int[] colorAttrs = new int[] { android.R.attr.textColorSecondary }; + int[] colorAttrs = new int[]{android.R.attr.textColorSecondary}; TypedArray a = getContext().obtainStyledAttributes(colorAttrs); circleColorHighlight = a.getColor(0, 0xffffffff); circleColor = (Integer) new ArgbEvaluator().evaluate(0.8f, 0x00ffffff, circleColorHighlight); a.recycle(); } - public void setViewPager(ViewPager pager) { - numPages = pager.getAdapter().getCount(); - pager.getAdapter().registerDataSetObserver(new DataSetObserver() { + public void setViewPager(ViewPager2 pager) { + numPages = pager.getAdapter().getItemCount(); + pager.getAdapter().registerAdapterDataObserver(new RecyclerView.AdapterDataObserver() { @Override public void onChanged() { - numPages = pager.getAdapter().getCount(); + numPages = pager.getAdapter().getItemCount(); invalidate(); } }); - pager.addOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() { + pager.registerOnPageChangeCallback(new ViewPager2.OnPageChangeCallback() { @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { PagerIndicatorView.this.position = position + positionOffset; + if (ViewCompat.getLayoutDirection(pager) == ViewCompat.LAYOUT_DIRECTION_RTL) { + PagerIndicatorView.this.position = numPages - 1 - PagerIndicatorView.this.position; + } invalidate(); } }); |