Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android 自定義SeekBar,讓進度條變得個性起來

Android 自定義SeekBar,讓進度條變得個性起來

編輯:關於Android編程

許多應用可能需要加入進度,例如下載、播放視頻、音頻、讀取數據庫等等,都需要一個等待狀態的進度條。原生的進度條的確不美觀,今天這篇小案例,就讓咱們的進度條“靓起來”。

首先來看一個小案例,我們部隊seekbae做樣式修改,使用默認的效果。

定義一個布局:

 



    

    

    

布局裡面兩端TextView中一個用於告知拖動進度,一個告知當前拖動狀態,在緊接著就是一個seekbar,我們設置它的進度滿時為值為100。

 

看一下主活動中加載代碼:

 

package com.itydl.seekbar;

import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.widget.SeekBar;
import android.widget.SeekBar.OnSeekBarChangeListener;
import android.widget.TextView;

public class MainActivity extends Activity {

    	private SeekBar seekBar;
    	private TextView textView_one, textView_two;

    	@Override
    	protected void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.activity_main);
    		textView_one = (TextView) findViewById(R.id.seekbar_tetview_one);
    		textView_two = (TextView) findViewById(R.id.seekbar_tetview_two);
    		seekBar = (SeekBar) findViewById(R.id.seekBar);
    		seekBar.setOnSeekBarChangeListener(seekbarChangeListener);

    	}

    	private OnSeekBarChangeListener seekbarChangeListener = new OnSeekBarChangeListener() {

    		// 停止拖動時執行
    		@Override
    		public void onStopTrackingTouch(SeekBar seekBar) {
    			textView_two.setText("停止拖動了!");

    		}

    		// 在進度開始改變時執行
    		@Override
    		public void onStartTrackingTouch(SeekBar seekBar) {
    			textView_two.setText("進度開始改變");
    		}

    		// 當進度發生改變時執行,我們使用Handler更新UI。當然,直接在這裡更新UI也是可以的。
    		@Override
    		public void onProgressChanged(SeekBar seekBar, int progress,
    				boolean fromUser) {
    			textView_two.setText("正在進行拖動操作,還沒有停下來一直再拖動");
    			Message message = new Message();

    			message.what = progress;

    			handler.sendMessage(message);

    		}
    	};

    	/**
    	 * 用Handler來更新UI
    	 */
    	private Handler handler = new Handler() {
    		@Override
    		public void handleMessage(Message msg) {
    			textView_one.setText("當前拖動位置占 :       "
    					+ msg.what + "/100");
    		}

    	};

    }

進度條改變的時候會回調監聽事件,在運行之前我們先看看這個監聽回調的方法的功能,有必要提及一下這個小知識:

 

 

//當拖動條發生變化時調用該方法

public void onProgressChanged(SeekBar seekBar,int progress,Boolean fromUser)

{System.out.println(progress);}

//當用戶開始滑動滑塊時調用該方法(即按下鼠調用一次)

public void onStartTrackingTouch(SeekBar seekBar){System.out.println(“start:=>”+seekBar.getProgress());}

//當用戶結束對滑塊滑動時,調用該方法(即松開鼠標)

public void onStopTrackingTouch(SeekBar seekBar)

{System.out.println(“stop:=>”+seekBar.getProgress());}}

好了,運行程序,如下:

\

接下來進入本博客的主題。修改seekBar的樣式。

首先來一版圖片版本的,即指示器、背景、進度條顏色都是用圖片代替:

xml中seekbar的屬性可以做如下修改:

 

 

做了修改,就標注一下都是什麼意思,詳細的解釋如下:

 

 
 
 
指示器的引用直接是一張圖片,進度的引用是通過自定義drawable方式。

 

@drawable/custom_seekbar的代碼如下:

 




    
    
    //引入圖片
    
    
    
    
    
    
    //引入圖片
    
    


運行程序如下:

 

\

這個時候發現跟原生的還是有很大區別的。

緊跟節奏,上邊是通過設置進度條背景圖片方式來改變了樣式,下面使用顏色修改進度條的樣式。類似定義顏色選擇器。利用顏色資源替代圖片資源:

seekbar_define_color_style.xml

 




    
        
            

            
        
    
    
        
            
                

                
            
        
    


然後把修改xml中這行代碼android:progressDrawable="@drawable/seekbar_define_color_style"

 

最後運行看看結果:

\

\

該小案例完畢。

 

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved