欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

进度条ProgressBar样式设计

程序员文章站 2022-03-30 16:29:33
...

Android 进度条的样式

进度条ProgressBar样式设计
 
例1:(默认样式(中等圆形))
Xml代码 
<ProgressBar  
    android:id="@+id/progressBar1" 
    android:layout_width="wrap_content"  
    android:layout_height="wrap_content"  
    /> 
例2:(超大圆形)
Xml代码 
<ProgressBar  
    android:id="@+id/progressBar2" 
    android:layout_width="wrap_content"  
    android:layout_height="wrap_content"  
    style="?android:attr/progressBarStyleLarge" 
    /> 
例3:(小号圆形)
Xml代码 
<ProgressBar  
    android:id="@+id/progressBar3" 
    android:layout_width="wrap_content"  
    android:layout_height="wrap_content"  
    style="?android:attr/progressBarStyleSmall" 
    /> 
例4:(标题小号圆形) 
Xml代码 
<ProgressBar  
    android:id="@+id/progressBar4" 
    android:layout_width="wrap_content"  
    android:layout_height="wrap_content"  
    style="?android:attr/progressBarStyleSmallTitle" 
    /> 
 
例4-在标题中使用小号圆形的使用代码:

进度条ProgressBar样式设计
 
Java代码 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    //设置标题不确定性进度条风格 
    requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS); 
    setContentView(R.layout.progress_bars); 
    //显示标题不确定性进度条 
    setProgressBarIndeterminateVisibility(true); 
    //关闭标题不确定性进度条 
    //setProgressBarIndeterminateVisibility(false); 

 
例5:(长方形进度条) 
Xml代码 
<ProgressBar  
    android:id="@+id/progressBar5" 
    android:layout_width="200dp"  
    android:layout_height="wrap_content"  
    style="?android:attr/progressBarStyleHorizontal" 
    android:max="100" 
    android:progress="50" 
    android:secondaryProgress="70" 
    /> 
 
            android:max="100" 最大进度值100
            android:progress="50" 当前初始化进度值50
            android:secondaryProgress="70" 当前初始化第2进度值70
 
 
例5-在标题中使用长方形进度条的代码:

进度条ProgressBar样式设计
Java代码 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
     
    //设置标题进度条风格 
    requestWindowFeature(Window.FEATURE_PROGRESS); 
    setContentView(R.layout.progress_bars); 
    //显示标题进度 
    setProgressBarVisibility(true); 
    //设置标题当前进度值为5000(标题进度最大值默认为10000) 
    setProgress(5000); 
    //关闭标题进度 
    //setProgressBarVisibility(false); 

 
例6:(进度对话框-圆形进度条)

进度条ProgressBar样式设计
Java代码 
ProgressDialog dialog = new ProgressDialog(this); 
//设置进度条风格,风格为圆形,旋转的 
dialog.setProgressStyle(ProgressDialog.STYLE_SPINNER); 
//设置ProgressDialog 标题 
dialog.setTitle("进度对话框"); 
//设置ProgressDialog 提示信息 
dialog.setMessage("圆形进度条"); 
//设置ProgressDialog 标题图标 
dialog.setIcon(android.R.drawable.ic_dialog_map); 
//设置ProgressDialog 的一个Button 
dialog.setButton("确定", new ProgressDialog.OnClickListener(){ 
    @Override 
    public void onClick(DialogInterface dialog, int which) { 
         
    } 
}); 
//设置ProgressDialog 的进度条是否不明确 
dialog.setIndeterminate(false); 
//设置ProgressDialog 是否可以按退回按键取消 
dialog.setCancelable(true); 
//显示 
dialog.show(); 
 
例7:(进度对话框-长方形进度条)

进度条ProgressBar样式设计
Java代码 
ProgressDialog dialog = new ProgressDialog(this); 
//设置进度条风格,风格为圆形,旋转的 
dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); 
//设置ProgressDialog 标题 
dialog.setTitle("进度对话框"); 
//设置ProgressDialog 提示信息 
dialog.setMessage("长方形进度条"); 
//设置ProgressDialog 标题图标 
dialog.setIcon(android.R.drawable.ic_dialog_alert); 
//设置ProgressDialog的最大进度 
dialog.setMax(100); 
//设置ProgressDialog 的一个Button 
dialog.setButton("确定", new ProgressDialog.OnClickListener(){ 
    @Override 
    public void onClick(DialogInterface dialog, int which) { 
         
    } 
}); 
//设置ProgressDialog 是否可以按退回按键取消 
dialog.setCancelable(true); 
//显示 
dialog.show(); 
 
//设置ProgressDialog的当前进度 
dialog.setProgress(50);


(一)这是本人自己写的XML布局

 <ProgressBar
        android:id="@+id/progress"
        style="?android:attr/progressBarStyleHorizontal"
        android:progressDrawable="@drawable/pro"
        android:layout_width="match_parent"
        android:layout_height="15dp"
        android:layout_marginBottom="15dp"
        android:layout_marginLeft="25dp"
        android:layout_marginRight="25dp"
        android:layout_marginTop="8dp"/>
**看这个android:progressDrawable="@drawable/pro"代码如下,在drawable中创建;
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">

    <!-- 背景  gradient是渐变,corners定义的是圆角 -->
    <item android:id="@android:id/background">
        <shape>
            <corners android:radius="10dp" />

            <solid android:color="#A5EAFF" />
        </shape>
    </item>
    <!-- 进度条 -->
    <item android:id="@android:id/progress">
        <clip>
            <shape>
                <corners android:radius="10dp" />

                <solid android:color="#00B7EE" />
            </shape>
        </clip>
    </item>

</layer-list>
(二)下边是我写的一个下载实例;
 private void Loading() {
        new Thread(new Runnable() {
            private int percent;

            @Override
            public void run() {
                try {
                    // 打开 URL 必须在子线程
                    URL url = new URL(
                            "http://b.zol-img.com.cn/sjbizhi/images/9/540x960/1472549276394.jpg");
                    HttpURLConnection conn = (HttpURLConnection) url.openConnection();
                    // conn.setRequestMethod("GET");
                    // conn.setReadTimeout(5000);
                    // conn.setConnectTimeout(5000);

                    int contentLength = conn.getContentLength();

                    if (conn.getResponseCode() == HttpURLConnection.HTTP_OK) {
                        InputStream is = conn.getInputStream();

                        byte[] buffer = new byte[1024];
                        int len = -1;
                        int sum = 0;
                        while ((len = is.read(buffer)) != -1) {
                            sum += len;
                            // 注意强转方式,防止一直为0
                            percent = (int) (100.0 * sum / contentLength);
                            // (此方法是一个在子线程中更新UI的一个方法不推荐使用用因为在我写的弹出dialog中这个方法不能使用,不知道原因希望大神指正,然后我给换成new Handler(),)
                            MainActivity.this.runOnUiThread(new Runnable() {
                                @Override
                                public void run() {
                                    progress.setProgress(percent);
                                    text.setText(percent + "%");
                                    if (percent == progress.getMax()) {
                                        Log.e("/////","下载完成");
                                        Toast.makeText(MainActivity.this, "下载完成", Toast.LENGTH_SHORT).show();
                                    }
                                }
                            });

                        }
                        is.close();
                        conn.disconnect();
                    }
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }).start();
    }