android 自定義SeekBar

 

效果:

 

<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);
			}
		});

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章