package com.distantfuture.videos.misc;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.support.v4.view.ViewPager;
import android.util.AttributeSet;
import android.view.View;
import com.distantfuture.videos.R;
public class LinePageIndicator extends View {
private final Paint mPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
private ViewPager mViewPager;
private int mCurrentPage;
public LinePageIndicator(Context context, AttributeSet attrs) {
super(context, attrs);
int indicatorColor = context.getResources().getColor(R.color.holo_blue);
mPaint.setColor(indicatorColor);
}
public void setViewPager(ViewPager viewPager) {
mViewPager = viewPager;
// set up callback so radio group syncs to the viewPager
mViewPager.setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() {
@Override
public void onPageSelected(int position) {
updatePage(position);
}
});
}
public void updatePage(int position) {
mCurrentPage = position;
invalidate();
}
@Override
protected void onDraw(Canvas canvas) {
// super.onDraw(canvas);
if (mViewPager == null) {
return;
}
final int count = mViewPager.getAdapter().getCount();
if (count == 0) {
return;
}
if (mCurrentPage >= count) {
return;
}
final int paddingLeft = getPaddingLeft();
final float pageWidth = (getWidth() - paddingLeft - getPaddingRight()) / (1f * count);
final float left = paddingLeft + pageWidth * mCurrentPage;
final float right = left + pageWidth;
final float top = getPaddingTop();
final float bottom = getHeight() - getPaddingBottom();
canvas.drawRect(left, top, right, bottom, mPaint);
}
}