修改 首页tab indicator 样式

This commit is contained in:
wzq
2023-09-21 12:53:53 +08:00
parent 362c75f93c
commit 92f2db36ae
2 changed files with 60 additions and 12 deletions

View File

@@ -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;
}

View File

@@ -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>