android多段seekbar

最近项目中需要实现一个功能,用seekbar来实现,需要将seekbar分为4段,seekbar最大值为120,然后有一个吸附效果,不多说,上两张效果图:

             

当滑动条值小于33时,为0;当滑动条值在33到70时,为45;当滑动条值为70到104时,为80;当大于104时,为最大值120。

最开始一直使用的是一个单独的seekbar,在onProgressChanged方法中,时时判断seekbar的progress,然后设置吸附效果,同时更改thumb的图片。然后在滑动条的onStopTrackingTouch方法中发送控制命令,然后等待服务器返回数据更新ui界面。然后问题来了,我在handler中调用到seekbar设置thumb的方法后,设置thumb图片后,thumb消失了。网上查资料说什么需要设置thumb的bounds。照搬过来发现没起作用。只要调用setThumb方法,thumb就消失。反反复复,始终得不到解决,项目又追的急。突然想到一个办法,虽然拙劣,但是实现效果没问题。在seekbar下边先放一个imageview,然后,在seekbar的onProgressChanged方法中根据progress来更改这个imageview的图片,然后设置seekbar的background为透明“#00000000”。然后拖动seekbar,实现了滑动条分段且更改thumb的效果。

开始上代码:

myVerticalSeek_new_wind = (MySeekBar) findViewById(R.id.verticalSeekBar_new_wind);
myVerticalSeek_new_wind.setOnSeekBarChangeListener(onSeekBarChangeListener);
然后seekbar的方法中:

private OnSeekBarChangeListener onSeekBarChangeListener = new OnSeekBarChangeListener() {

		@Override
		public void onProgressChanged(MySeekBar VerticalSeekBar, int progress,
				boolean fromUser) {

				//新风  0   33    66  100 						    
				
				if(progress<=33){
					progress = 0;
					myVerticalSeek_new_wind.setProgress(progress);
					new_wind_background_image.setBackgroundResource(R.drawable.new_wind_back_zero1);
					
				}else if(progress>33 && progress<=70){
					progress = 45;
					myVerticalSeek_new_wind.setProgress(progress);
					new_wind_background_image.setBackgroundResource(R.drawable.new_wind_back_one1);
					
				}else if(progress>70 &&progress<=104){
					progress = 80;
					myVerticalSeek_new_wind.setProgress(progress);
					new_wind_background_image.setBackgroundResource(R.drawable.new_wind_back_two1);
					
				}else if(progress>104){
					progress =120;
					myVerticalSeek_new_wind.setProgress(progress);
					new_wind_background_image.setBackgroundResource(R.drawable.new_wind_back_three1);
					
				}
							
		}

		@Override
		public void onStartTrackingTouch(MySeekBar VerticalSeekBar) {


		}

		@Override
		public void onStopTrackingTouch(MySeekBar VerticalSeekBar) {
				
				
			sendControlNewWindSpeedValue(VerticalSeekBar.getProgress());
				
		}

	};




你可能感兴趣的:(Android布局,Android日常问题)