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

丫头嗳 2013-03-20 05:00:42
效果如图 ,大神们,帮帮忙。。。
...全文
228 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
macrojj 2013-03-28
  • 打赏
  • 举报
回复
#6 给的伪代码很不错
丫头嗳 2013-03-24
  • 打赏
  • 举报
回复
引用 3 楼 jnhoodlum 的回复:
其实没必要看seekbar或者progressbar的源码什么的,就是一张背景加两个按钮就可以了,监听按钮的滑动事件,然后实时重绘背景的颜色即可。
菜鸟不会呀
Lucifd 2013-03-24
  • 打赏
  • 举报
回复
我去 - - 伪代码逻辑都写好了还不详细啊? 图片的话就把drawCircle 换成drawBitmap 中间那条线。。。你附的原图上不也有么?如果你想要图片代替也成
丫头嗳 2013-03-24
  • 打赏
  • 举报
回复
引用 6 楼 Lucifd_CH 的回复:
Java code?12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364class MyView extends View { private float leftX; ……
能给个详细点的不 中间的一条线一定要用画的吗 ???左中右都是要用图片替换的 。。。。。
Lucifd 2013-03-24
  • 打赏
  • 举报
回复
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;
		}
	}
伪代码大概这样自己改一下
Lucifd 2013-03-24
  • 打赏
  • 举报
回复
话说自定义View实现起来相对容易一点吧? 两头就是两圆形 下面那条就是一条被加粗的线条而已 通过onTouch事件来监听两头的改变然后重绘那一条Line就好。。。
wlcw16 2013-03-22
  • 打赏
  • 举报
回复
没做过。推荐你去看一下SeekBar的源码,会对你自定义开发这个空间有帮助。
丫头嗳 2013-03-22
  • 打赏
  • 举报
回复
没人做过吗,大神们都哪去了,快来看看呀
jnhoodlum 2013-03-22
  • 打赏
  • 举报
回复
其实没必要看seekbar或者progressbar的源码什么的,就是一张背景加两个按钮就可以了,监听按钮的滑动事件,然后实时重绘背景的颜色即可。

80,351

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧