Android8.1 Launcher3 修改PageIndicatorLineCaret为小圆点
原生Launcher的PageIndicatorLineCaret是横线,而且在手指离开屏幕后会消失。
现在修改为小圆点,不消失,先上图:
直接在原有基础上修改
src/com/android/launcher3/pageindicators/PageIndicatorLineCaret.java
增加两个变量:
//当前页面index
private int mActivePage;
//小圆点画笔
private Paint mDotPaint;
初始化:
mDotPaint = new Paint();
mDotPaint.setAntiAlias(true);
src/com/android/launcher3/pageindicators/PageIndicatorLineCaret.java -> onDraw():
@Override
protected void onDraw(Canvas canvas) {
/* 修改 begin */
// if (mTotalScroll == 0 || mNumPagesFloat == 0) {
// return;
// }
// Compute and draw line rect.
/*float progress = Utilities.boundToRange(((float) mCurrentScroll) / mTotalScroll, 0f, 1f);
int availableWidth = canvas.getWidth();
int lineWidth = (int) (availableWidth / mNumPagesFloat);
int lineLeft = (int) (progress * (availableWidth - lineWidth));
int lineRight = lineLeft + lineWidth;
canvas.drawRect(lineLeft, canvas.getHeight() - mLineHeight, lineRight, canvas.getHeight(),
mLinePaint);*/
int lengh = mNumPages * 20 + (mNumPages - 1) * 30;
int x = (getMeasuredWidth() - lengh) / 2;
for (int i = 0; i < mNumPages; i++) {
if (mActivePage == i) {
mDotPaint.setColor(Color.WHITE);
} else {
mDotPaint.setColor(Color.GRAY);
}
canvas.drawCircle(x, getMeasuredHeight() / 2, 10, mDotPaint);
x += 50;
}
/* 修改 end */
}
记录当前所在页面index:
@Override
public void setActiveMarker(int activePage) {
mActivePage = activePage;
}
大功告成!!!