大神们别跑呀。双向滑动进度条的效果

大神们别跑呀。。。。求一个双向滑动进度条的效果
本帖最后由 enkezhang 于 2013-03-22 10:35:20 编辑
效果如图 ,大神们,帮帮忙。。。大神们别跑呀。双向滑动进度条的效果

------解决方案--------------------
没做过。推荐你去看一下SeekBar的源码,会对你自定义开发这个空间有帮助。
------解决方案--------------------
其实没必要看seekbar或者progressbar的源码什么的,就是一张背景加两个按钮就可以了,监听按钮的滑动事件,然后实时重绘背景的颜色即可。
------解决方案--------------------
话说自定义View实现起来相对容易一点吧?
两头就是两圆形
下面那条就是一条被加粗的线条而已

通过onTouch事件来监听两头的改变然后重绘那一条Line就好。。。
------解决方案--------------------
class MyView extends View {

private float leftX;
private float rightX;
private float circleY;
private static final float circleR = 10.0f;

public MyView(Context context) {
super(context);
leftX = 20.0f;
rightX = 200.0f;
}

@Override
protected void onDraw(Canvas canvas) {
circleY = canvas.getHeight()/2;
//Paint自己加
canvas.drawCircle(circleY, leftX, circleR, null);
canvas.drawCircle(circleY, rightX, circleR, null);
canvas.drawLine(leftX, circleY, rightX, circleY, null);
super.onDraw(canvas);
}

private static final int TOUCH_LEFT = 0;
private static final int TOUCH_RIGHT = 1;
private static final int TOUCH_NONE = 2;
private int touchWho = TOUCH_NONE;

@Override
public boolean onTouchEvent(MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
if(isTouchCircle(circleR, leftX, circleY, event.getX(), event.getY()))
touchWho = TOUCH_LEFT;
else if(isTouchCircle(circleR, rightX, circleY, event.getX(), event.getY()))
touchWho = TOUCH_RIGHT;
else 
touchWho = TOUCH_NONE;
return true;
case MotionEvent.ACTION_MOVE:
if(touchWho == TOUCH_LEFT){
leftX = event.getX();
invalidate();
}else if(touchWho == TOUCH_RIGHT){
rightX = event.getX();
invalidate();
}else{
break;
}
return true;
case MotionEvent.ACTION_UP:
if(touchWho != TOUCH_NONE)
touchWho = TOUCH_NONE;
return true;
}
return super.onTouchEvent(event);
}

private boolean isTouchCircle(float r,float cx,float cy,float mx,float my){
if((mx>=cx-r
------解决方案--------------------
mx<=cx+r)&&(my>=cy-r
------解决方案--------------------
my<=cy+r))
return true;
return false;
}
}
伪代码大概这样自己改一下
------解决方案--------------------
我去 - - 伪代码逻辑都写好了还不详细啊?
图片的话就把drawCircle 换成drawBitmap
中间那条线。。。你附的原图上不也有么?如果你想要图片代替也成