Android 如何让Linkedin这样的进度条显示个人资料状态?
我想用一个进度条来显示个人资料的状态,就像Linkedin一样,我到处搜索,但没有找到任何相关的参考资料 我的代码:Android 如何让Linkedin这样的进度条显示个人资料状态?,android,android-studio,android-layout,Android,Android Studio,Android Layout,我想用一个进度条来显示个人资料的状态,就像Linkedin一样,我到处搜索,但没有找到任何相关的参考资料 我的代码: public class ProgressDrawable extends Drawable { private static final int NUM_SEGMENTS = 5; private final int mForeground; private final int mBackground; private final Paint mPaint = new Pai
public class ProgressDrawable extends Drawable {
private static final int NUM_SEGMENTS = 5;
private final int mForeground;
private final int mBackground;
private final Paint mPaint = new Paint();
private final RectF mSegment = new RectF();
public ProgressDrawable(int fgColor, int bgColor) {
mForeground = fgColor;
mBackground = bgColor;
}
@Override
protected boolean onLevelChange(int level) {
invalidateSelf();
return true;
}
@Override
public void draw(Canvas canvas) {
float level = getLevel() / 10000f;
Rect b = getBounds();
float gapWidth = b.height() / 10f;
float segmentWidth = (b.width() - (NUM_SEGMENTS - 1) * gapWidth) / NUM_SEGMENTS;
mSegment.set(0, 0, segmentWidth, b.height());
mPaint.setColor(mForeground);
for (int i = 0; i < NUM_SEGMENTS; i++) {
float loLevel = i / (float) NUM_SEGMENTS;
float hiLevel = (i + 1) / (float) NUM_SEGMENTS;
if (loLevel <= level && level <= hiLevel) {
float middle = mSegment.left + NUM_SEGMENTS * segmentWidth * (level - loLevel);
canvas.drawRect(mSegment.left, mSegment.top, middle, mSegment.bottom, mPaint);
mPaint.setColor(mBackground);
canvas.drawRect(middle, mSegment.top, mSegment.right, mSegment.bottom, mPaint);
} else {
canvas.drawRect(mSegment, mPaint);
}
mSegment.offset(mSegment.width() + gapWidth, 0);
}
}
@Override
public void setAlpha(int alpha) {
}
@Override
public void setColorFilter(ColorFilter cf) {
}
@Override
public int getOpacity() {
return PixelFormat.TRANSLUCENT;
}
公共类ProgressDrawable扩展了Drawable{
私有静态最终int NUM_段=5;
私人场地;
私人决赛场;
专用最终油漆mPaint=新油漆();
private final RectF mSegment=new RectF();
公共可进行绘制(int-fgColor、int-bgColor){
mForeground=fgColor;
mBackground=bgColor;
}
@凌驾
受保护的布尔onLevelChange(int级别){
使自己无效();
返回true;
}
@凌驾
公共空白绘制(画布){
float level=getLevel()/10000f;
Rect b=getBounds();
浮动间隙宽度=b.高度()/10f;
float segmentWidth=(b.width()-(NUM_SEGMENTS-1)*gapWidth)/NUM_SEGMENTS;
mSegment.set(0,0,segmentWidth,b.height());
mPaint.setColor(mForeground);
对于(int i=0;i