Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android-做個性化的滾動條

Android-做個性化的滾動條

編輯:關於Android編程

1.案例效果圖

progress[1]

2.准備素材

image

progress1 progress2

progress1.png(78*78) progress2.png(78*78)

3.原理

采用一張圖片作為ProgressBar的背景圖片(一般采用顏色比較淺的)。另一張是滾動條的圖片(一般采用顏色比較深的圖片)。進度在滾動是:滾動圖片逐步顯示,背景圖片逐步隱藏,達到上面的效果。

4.靈感來自Android控件提供的源碼

4.1 默認帶進度的滾動條,如下圖

    

image

注意:關鍵是style屬性在起作用

4.2 找到樣式定義的位置

鼠標放在style屬性值上,按下Ctrl鍵,出現超鏈接,點擊超鏈接跳轉到樣式的定義位置

image

樣式定義的內容如下

image

重點研究:

android:progressDrawable:滾動條的樣式

@android:drawable/progress_horizontal:樣式定義的文件

在android-sdk-windows\platforms\android-14\data\res目下搜索progress_horizontal.xml文件,搜索結果如下:

image

打開progress_horizontal.xml文件,內容如下

   
   
       
           
           
       
      
   
       
           
               
               
           
       
      
   
       
           
               
               
           
       
   

釋義:

定義滾動條的背景樣式

第二滾動條的樣式

滾動條的樣式

思考:如果我想做垂直滾動條,怎麼辦了?

關鍵在clip元素的屬性上做修改

<clip
android:clipOrientation
="vertical" 定義滾動的方向 vertical為垂直方向
android:drawable="@drawable/progress1" 定義滾動的圖片
android:gravity="bottom" > 定義滾動的開始位置

5.定義樣式文件progress_vertical.xml

image

progress_vertical.xml文件代碼如下



   
       
       
   

6.應用自定義的樣式

   

7.點擊按鈕模擬滾動的效果

publicclass ProgressActivity extends Activity {     
     ProgressBar pb =null;
     TextView txtProgress;
     Handler handler =new Handler();
     @Override
     publicvoid onCreate(BundlesavedInstanceState) {
          super.onCreate(savedInstanceState);
          setContentView(R.layout.main);
          System.out.println("主題=" + getTheme() + "");
          pb = (ProgressBar) findViewById(R.id.pbPic);
	   //按鈕
Button btnStart = (Button) findViewById(R.id.btStart);

 	   //顯示進度
txtProgress = (TextView) findViewById(R.id.txtProgress);

	   //按鈕點擊事件
btnStart.setOnClickListener(new OnClickListener() { publicvoid onClick(Viewv) {

		    //創建並啟動線程,使用線程執行模擬的任務
new Thread(new Runnable() { publicvoid run() { for (inti = 0; i < 100;i++) {//循環100遍 try { handler.post(new Runnable() { //更新界面的數據 publicvoid run() { pb.incrementProgressBy(1);//增加進度

								  //顯示完成的進度
txtProgress.setText(pb.getProgress() + "%"); } }); Thread.sleep(100); } catch (InterruptedExceptione) { } } } }).start(); } }); }}


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