修改 首页tab indicator 样式
This commit is contained in:
@@ -1,21 +1,21 @@
|
||||
package com.yizhuan.erban.ui.user.adapter;
|
||||
|
||||
import android.content.Context;
|
||||
import android.view.Gravity;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.FrameLayout;
|
||||
import android.graphics.Canvas;
|
||||
import android.graphics.LinearGradient;
|
||||
import android.widget.TextView;
|
||||
|
||||
import androidx.core.content.ContextCompat;
|
||||
|
||||
import com.yizhuan.erban.R;
|
||||
import com.yizhuan.erban.ui.widget.XRecyclerView.ScaleTransitionPagerTitleView;
|
||||
import com.yizhuan.erban.ui.widget.magicindicator.FragmentContainerHelper;
|
||||
import com.yizhuan.erban.ui.widget.magicindicator.buildins.UIUtil;
|
||||
import com.yizhuan.erban.ui.widget.magicindicator.buildins.commonnavigator.abs.CommonNavigatorAdapter;
|
||||
import com.yizhuan.erban.ui.widget.magicindicator.buildins.commonnavigator.abs.IPagerIndicator;
|
||||
import com.yizhuan.erban.ui.widget.magicindicator.buildins.commonnavigator.abs.IPagerTitleView;
|
||||
import com.yizhuan.erban.ui.widget.magicindicator.buildins.commonnavigator.indicators.GradientLinePagerIndicator;
|
||||
import com.yizhuan.erban.ui.widget.magicindicator.buildins.commonnavigator.indicators.LinePagerIndicator;
|
||||
import com.yizhuan.erban.ui.widget.magicindicator.buildins.commonnavigator.model.PositionData;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@@ -60,14 +60,60 @@ public class MainIndicatorAdapter extends CommonNavigatorAdapter {
|
||||
@Override
|
||||
public IPagerIndicator getIndicator(Context context) {
|
||||
if (!showIndicator) return null;
|
||||
GradientLinePagerIndicator indicator = new GradientLinePagerIndicator(context);
|
||||
indicator.setMode(LinePagerIndicator.MODE_WRAP_CONTENT);
|
||||
indicator.setLineHeight(UIUtil.dip2px(mContext, 8));
|
||||
indicator.setRoundRadius(UIUtil.dip2px(mContext, 5));
|
||||
FrameLayout.LayoutParams lp = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
|
||||
lp.gravity = Gravity.END;
|
||||
lp.bottomMargin = UIUtil.dip2px(mContext, 0);
|
||||
indicator.setLayoutParams(lp);
|
||||
|
||||
int startColor = ContextCompat.getColor(context, R.color.color_5CF1FF);
|
||||
int endColor = ContextCompat.getColor(context, R.color.color_CF70FF);
|
||||
GradientLinePagerIndicator indicator = new GradientLinePagerIndicator(context) {
|
||||
|
||||
private List<PositionData> mDataList;
|
||||
|
||||
@Override
|
||||
public void onPositionDataProvide(List<PositionData> dataList) {
|
||||
mDataList = dataList;
|
||||
super.onPositionDataProvide(mDataList);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
|
||||
if (mDataList == null || mDataList.isEmpty()) {
|
||||
return;
|
||||
}
|
||||
|
||||
// 计算锚点位置
|
||||
PositionData current = FragmentContainerHelper.getImitativePositionData(mDataList, position);
|
||||
PositionData next = FragmentContainerHelper.getImitativePositionData(mDataList, position + 1);
|
||||
|
||||
float leftX;
|
||||
float nextLeftX;
|
||||
float rightX;
|
||||
float nextRightX;
|
||||
|
||||
leftX = current.mContentRight - getLineWidth();
|
||||
rightX = current.mContentRight;
|
||||
nextLeftX = next.mContentRight - getLineWidth();
|
||||
nextRightX = next.mContentRight;
|
||||
|
||||
getLineRect().left = leftX + (nextLeftX - leftX) * positionOffset;
|
||||
getLineRect().right = rightX + (nextRightX - rightX) * positionOffset;
|
||||
getLineRect().top = getHeight() - getLineHeight() - getYOffset();
|
||||
getLineRect().bottom = getHeight() - getYOffset();
|
||||
|
||||
LinearGradient lg = new LinearGradient(getLineRect().left, getLineRect().top, getLineRect().right, getLineRect().bottom,
|
||||
new int[]{startColor, endColor}, null, LinearGradient.TileMode.CLAMP);
|
||||
getPaint().setShader(lg);
|
||||
|
||||
invalidate();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onDraw(Canvas canvas) {
|
||||
canvas.drawRoundRect(getLineRect(), getRoundRadius(), getRoundRadius(), getPaint());
|
||||
}
|
||||
};
|
||||
|
||||
indicator.setLineHeight(context.getResources().getDimensionPixelOffset(R.dimen.dp_8));
|
||||
indicator.setLineWidth(context.getResources().getDimensionPixelOffset(R.dimen.dp_35));
|
||||
indicator.setRoundRadius(context.getResources().getDimensionPixelOffset(R.dimen.dp_5));
|
||||
return indicator;
|
||||
}
|
||||
|
||||
|
@@ -693,5 +693,7 @@
|
||||
<color name="color_A3A0AD">#A3A0AD</color>
|
||||
<color name="color_ff80cc">#FF80CC</color>
|
||||
<color name="color_6bb3ff">#6BB3FF</color>
|
||||
<color name="color_5CF1FF">#5CF1FF</color>
|
||||
<color name="color_CF70FF">#CF70FF</color>
|
||||
|
||||
</resources>
|
||||
|
Reference in New Issue
Block a user