国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

Android實現彈窗進度條效果

2019-10-22 18:11:59
字體:
來源:轉載
供稿:網友

Android自定義進度條主要是修改ProgressBar的style,彈窗則是在Dialog里顯示ProgressBar。

直接上代碼。

在style.xml里加入如下代碼:

<style name="ProgressBar_Mini" parent="@android:style/Widget.ProgressBar.Horizontal">   <item name="android:maxHeight">50dip</item>   <item name="android:minHeight">8dip</item>   <item name="android:indeterminateOnly">false</item>   <item name="android:indeterminateDrawable">@android:drawable/progress_indeterminate_horizontal</item>   <item name="android:progressDrawable">@drawable/progressbar_mini</item> </style> 
<style name="dialog" parent="@android:style/Theme.Dialog">   <item name="android:windowFrame">@null</item>   <item name="android:windowIsFloating">true</item>   <item name="android:windowIsTranslucent">true</item>   <item name="android:windowNoTitle">true</item>   <item name="android:backgroundDimEnabled">true</item>   <item name="android:windowBackground">@color/transparent</item>  </style> 

新建drawable/progressbar_mini.xml內容如下:

<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >  <item android:id="@android:id/background">   <shape>    <corners android:radius="0dip" />    <gradient     android:angle="270"     android:centerY="0.75"     android:endColor="#F5F5F5"     android:startColor="#BEBEBE" />   </shape>  </item>   <item android:id="@android:id/secondaryProgress">   <clip>    <shape>     <corners android:radius="0dip" />     <gradient      android:angle="270"      android:centerY="0.75"      android:endColor="#165CBC"      android:startColor="#85B0E9" />    </shape>   </clip>  </item>   <item android:id="@android:id/progress">   <clip>    <shape>     <corners android:radius="0dip" />     <gradient      android:angle="270"      android:centerY="0.75"      android:endColor="#00FF66"      android:startColor="#00FF66" />    </shape>   </clip>  </item> </layer-list> 

myprogressbar.xml的內容如下:

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  android:layout_width="match_parent"  android:layout_height="match_parent"  android:background="@drawable/back_qian"  android:gravity="center"  android:orientation="vertical" >   <TextView   android:layout_width="fill_parent"   android:layout_height="wrap_content"   android:gravity="center"   android:text="正在切換狀態...."   android:textSize="18sp"   android:textColor="@color/black" />   <TextView   android:layout_width="fill_parent"   android:layout_height="wrap_content"   android:gravity="center"   android:text="" />  <ProgressBar  android:id="@+id/progressBar1"   style="@style/ProgressBar_Mini"  android:layout_width="290dp"  android:layout_height="17dp" />   </LinearLayout> 

MyProgressBar.java的內容如下:

package com.wl.util;  import android.app.Dialog; import android.content.Context; import android.content.DialogInterface; import android.content.DialogInterface.OnCancelListener; import android.view.LayoutInflater; import android.view.View; import android.widget.ProgressBar;  import com.wl.R;  public class MyProgressBar {  Dialog dialog;  Context context;  // 聲明ProgressBar對象  private ProgressBar pro1;     /**   * 構造   */  public MyProgressBar(Context context) {   // TODO Auto-generated constructor stub   this.context = context;   dialog = new Dialog(context, R.style.dialog);   dialog.setOnCancelListener(onCancelListener);  }   /**   * 初始化進度對話框   */  public void initDialog() {    LayoutInflater inflater = (LayoutInflater) context     .getSystemService(Context.LAYOUT_INFLATER_SERVICE);   View view = inflater.inflate(R.layout.myprogressbar, null);   dialog.setContentView(view);   pro1 = (ProgressBar) dialog.findViewById(R.id.progressBar1);   // 設置進度條是否自動旋轉,即設置其不確定模式,false表示不自動旋轉   pro1.setIndeterminate(false);   // 設置ProgressBar的最大值   pro1.setMax(100);    // 設置ProgressBar的當前值   pro1.setProgress(0);       dialog.show();  }   public void setProgress(int progressValue) {   pro1.setProgress(progressValue);  }    public void colseDialog() {   dialog.dismiss();  }   public boolean isShowing() {   if (dialog.isShowing()) {    return true;   } else {    return false;   }  }   OnCancelListener onCancelListener = new OnCancelListener() {   @Override   public void onCancel(DialogInterface dialog) {    // TODO Auto-generated method stub    dialog.dismiss();   }  }; } 

調用代碼如下:

MyProgressBar myProgressBar; myProgressBar = new MyProgressBar(Dialog_TestActivity.this); myProgressBar.initDialog();     new Thread(new Runnable() {      @Override      public void run() {       // TODO Auto-generated method stub         try {        Thread.sleep(200);       } catch (InterruptedException e) {        // TODO Auto-generated catch block        e.printStackTrace();       }       for (int i = 0; i < 100; i++) {        handler.sendEmptyMessage(0);        try {         Thread.sleep(30);        } catch (InterruptedException e) {         // TODO Auto-generated catch block         e.printStackTrace();        }       }      }     }).start(); Handler handler = new Handler() {   @Override   public void handleMessage(Message msg) {    // 改變ProgressBar的當前值    myProgressBar.setProgress(intCounter++);    if (intCounter == 100) {     intCounter = 0;     myProgressBar.colseDialog();    }   }   }; 

按返回退出:

@Override  public void onBackPressed() {   // TODO Auto-generated method stub   Log.d("11", "onBackPressed()");    if (myProgressDialog.isShowing()) {    myProgressDialog.colseDialog();   }   if (myProgressBar.isShowing()) {    myProgressBar.colseDialog();   }    super.onBackPressed();  } 

源碼:Android實現彈窗進度條

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VEVB武林網。


注:相關教程知識閱讀請移步到Android開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 牡丹江市| 宜昌市| 辛集市| 克什克腾旗| 白山市| 大名县| 大英县| 绍兴县| 峨眉山市| 贵定县| 敖汉旗| 仁布县| 清镇市| 松滋市| 容城县| 永安市| 胶州市| 潍坊市| 茂名市| 从江县| 中宁县| 右玉县| 西贡区| 彭山县| 隆德县| 云浮市| 张家港市| 科技| 繁峙县| 泊头市| 开江县| 托克托县| 清苑县| 南皮县| 伊春市| 呈贡县| 茌平县| 青岛市| 商都县| 玉溪市| 翁源县|