android 自定义SeekBar

本文介绍如何在Android中自定义SeekBar的样式,包括进度条背景、进度颜色及滑块样式,并提供XML配置示例及Java代码实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原文地址:http://yangguangfu.iteye.com/blog/732160

 

效果:

代码如下:
<SeekBar android:id="@+id/seekbar"
	    	android:layout_width="wrap_content"
	    	android:layout_height="wrap_content"
	    	android:paddingLeft="5dip"
	    	android:paddingRight="5dip"
	    	android:layout_marginLeft="10dip"
	    	android:layout_marginRight="10dip"
			android:progressDrawable="@layout/seekbar_style"
			style="?android:attr/progressBarStyleHorizontal" 
			android:thumb="@layout/thumb"
			android:layout_weight="1"
			/>

其实最最关键的就是:
android:progressDrawable="@layout/seekbar_style"
android:thumb="@layout/thumb"

怎么去定义呢?
看下面的代码:
seekbar_style.xml
<?xml version="1.0" encoding="UTF-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">

	<item android:id="@android:id/background">
		<shape>
			<corners android:radius="10dip" />
			<gradient android:startColor="#ffffffff"
				android:centerColor="#ff000000" android:endColor="#ff808A87"
				android:centerY="0.45" android:angle="270" />
		</shape>
	</item>

	<item android:id="@android:id/progress">
		<clip>
			<shape>
				<corners android:radius="10dip" />
				<gradient android:startColor="#ffffffff"
					android:centerColor="#ffFFFF00" android:endColor="#ffAABD00"
					android:centerY="0.45" android:angle="270" />
			</shape>
		</clip>
	</item>
</layer-list>  

thumb.xml的代码,这里就是哪个条上的进度按钮,你可以设置不图片。方形,圆形都可以

<?xml version="1.0" encoding="UTF-8"?>  
<selector xmlns:android="http://schemas.android.com/apk/res/android">        
    <!-- 按下状态 --> 
    <item    
        android:state_pressed="true" 
        android:drawable="@drawable/thumb_normal"   
        />   
             
    <!-- 普通无焦点状态 --> 
    <item    
        android:state_focused="false"    
        android:state_pressed="false"  
      	android:drawable="@drawable/thumb_normal"
	/>


</selector>  


Java代码的处理:并实现播放中的拖动功能

seekBar = (SeekBar) controlView.findViewById(R.id.seekbar);
		seekBar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {

			@Override
			public void onProgressChanged(SeekBar seekbar, int progress,
					boolean fromUser) {

				if (fromUser) {

					//if(!isOnline){
						vv.seekTo(progress);
					//}
					
				}

			}

			@Override
			public void onStartTrackingTouch(SeekBar arg0) {
				myHandler.removeMessages(HIDE_CONTROLER);
			}

			@Override
			public void onStopTrackingTouch(SeekBar seekBar) {
				myHandler.sendEmptyMessageDelayed(HIDE_CONTROLER, TIME);
			}
		});


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值