效果图片
原型图片
核心代码
在init()中对图片,控件距离初始化
在ondraw()中控制图片绘制位置
由于项目需要,没有对适配做出控制,setPos()方法固定据左右20dp位置
`public class SkinTestBar extends View {
private Context mContext;
private Bitmap backGround,thumb;
private Paint mPaint;
private Rect backRect;
private int centerThumb;
private int thumbLeft;
private int backWidth;
public SkinTestBar(Context context) {
super(context);
init(context);
}
public SkinTestBar(Context context, AttributeSet attrs) {
super(context, attrs);
init(context);
}
public SkinTestBar(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
init(context);
}
private void init(Context context) {
mContext = context;
//图片加载
backGround = BitmapFactory.decodeResource(getResources(), R.drawable.cst_bg);
thumb = BitmapFactory.decodeResource(getResources(), R.drawable.jct_dian);
mPaint = new Paint();
centerThumb = thumb.getWidth()/2;
backWidth = DensityUtil.getWindowWidth(mContext)-DensityUtil.dip2px(20)*2-backGround.getHeight()*2;
setPos(0);
}
public void setPos(float pos){
thumbLeft = (int) (DensityUtil.dip2px(10)-centerThumb+backGround.getHeight()+backWidth*pos-1);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
backRect = new Rect(getPaddingLeft(), getPaddingTop(),
getMeasuredWidth()-getPaddingRight(), getMeasuredHeight()-getPaddingBottom());
//绘制图片
canvas.drawBitmap(backGround,null,backRect, mPaint);
canvas.drawBitmap(thumb, thumbLeft, 0, mPaint);
}
}`