Skip to content
This repository was archived by the owner on Mar 19, 2022. It is now read-only.

ViewPager2 Support & Migrate to androidx #62

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 2 additions & 3 deletions library/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -22,9 +22,8 @@ android {
}

dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:26.0.0'
implementation 'androidx.appcompat:appcompat:1.2.0'
implementation "androidx.viewpager2:viewpager2:1.0.0"
}

apply from: 'gradle-mvn-push.gradle'
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,11 +18,6 @@
import android.os.Build;
import android.os.Parcel;
import android.os.Parcelable;
import android.support.annotation.Nullable;
import android.support.annotation.UiThread;
import android.support.v4.content.ContextCompat;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.text.Layout;
import android.text.StaticLayout;
import android.text.TextPaint;
Expand All @@ -34,6 +29,13 @@
import android.view.View;
import android.view.animation.DecelerateInterpolator;

import androidx.annotation.Nullable;
import androidx.annotation.UiThread;
import androidx.core.content.ContextCompat;
import androidx.viewpager.widget.PagerAdapter;
import androidx.viewpager.widget.ViewPager;
import androidx.viewpager2.widget.ViewPager2;

import java.util.ArrayList;
import java.util.List;
import java.util.Random;
Expand Down Expand Up @@ -187,7 +189,7 @@
* <p> Updated by Rakshak R.Hegde to add support for labels and it's customisations. Supports label too.</p>
*/
@SuppressWarnings("unused")
public class StepperIndicator extends View implements ViewPager.OnPageChangeListener {
public class StepperIndicator extends View implements ViewPager.OnPageChangeListener{

private static final String TAG = "StepperIndicator";

Expand Down Expand Up @@ -345,8 +347,10 @@ public class StepperIndicator extends View implements ViewPager.OnPageChangeList
private Rect stepAreaRect = new Rect();
private RectF stepAreaRectF = new RectF();

private ViewPager2 pager2;
private ViewPager pager;
private Drawable doneIcon;
private ViewPager2.OnPageChangeCallback page2Callback;
private boolean showDoneIcon;

// If viewpager is attached, viewpager's page titles are used when {@code showLabels} equals true
Expand Down Expand Up @@ -663,6 +667,25 @@ private void init(Context context, AttributeSet attrs, int defStyleAttr) {

// Initialize the gesture detector, setup with our custom gesture listener
gestureDetector = new GestureDetector(getContext(), gestureListener);


page2Callback = new ViewPager2.OnPageChangeCallback() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
super.onPageScrolled(position, positionOffset, positionOffsetPixels);
}

@Override
public void onPageSelected(int position) {
super.onPageSelected(position);
setCurrentStep(position);
}

@Override
public void onPageScrollStateChanged(int state) {
super.onPageScrollStateChanged(state);
}
};
}

/**
Expand Down Expand Up @@ -1218,6 +1241,20 @@ public void setViewPager(ViewPager pager) {
setViewPager(pager, pager.getAdapter().getCount());
}



/**
* Set the {@link ViewPager2} associated with this widget indicator.
*
* @param pager {@link ViewPager2} to attach
*/
public void setViewPager(ViewPager2 pager){
if (pager.getAdapter() == null) {
throw new IllegalStateException("ViewPager does not have adapter instance.");
}
setViewPager(pager, pager.getAdapter().getItemCount());
}

/**
* Set the {@link ViewPager} associated with this widget indicator.
*
Expand Down Expand Up @@ -1265,6 +1302,39 @@ public void setViewPager(ViewPager pager, int stepCount) {
invalidate();
}


/**
* Set the {@link ViewPager2} associated with this widget indicator.
*
* @param pager {@link ViewPager2} to attach
* @param stepCount The real page count to display (use this if you are using looped viewpager to indicate the real
* number
* of pages)
*/
public void setViewPager(ViewPager2 pager, int stepCount) {
if (this.pager2 == pager) {
return;
}
if (this.pager2 != null) {
pager.unregisterOnPageChangeCallback(page2Callback);
}
if (pager.getAdapter() == null) {
throw new IllegalStateException("ViewPager does not have adapter instance.");
}

this.pager2 = pager;
this.stepCount = stepCount;
currentStep = 0;
pager.registerOnPageChangeCallback(page2Callback);

if (showLabels && labels == null) {
setLabelsUsingPageTitles();
}

requestLayout();
invalidate();
}

private void setLabelsUsingPageTitles() {
PagerAdapter pagerAdapter = pager.getAdapter();
int pagerCount = pagerAdapter.getCount();
Expand Down Expand Up @@ -1364,6 +1434,7 @@ public void setShowDoneIcon(boolean showDoneIcon) {
invalidate();
}


@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
/* no-op */
Expand Down