Progress实践

来源:互联网 发布:linux 开发工具 编辑:程序博客网 时间:2024/04/28 15:49

Progress有两个进度,一个是android:progress,另一个是android:secondaryProgress,后者主要是和缓存之类的相关,前者是为了当前进度相关。

ProgressBar分为确定的和不确定的,上面说的播放进度、缓存等就是确定的。相反地,不确定的就是不清楚、不确定一个操作需要多长时间来完成,这个时候就需要用的不确定的ProgressBar了。这个是由属性android:indeterminate来控制的,如果设置为false的话,那么ProgressBar就可能是圆形的滚动条或者水平的滚动条(由样式决定)。默认情况下,如果是水平进度条,那么就是确定的。

ProgressBar的样式可以自己设定,也可以用系统提供的样式。

1.具体在Xml文件中设定一个progressbar:

    <ProgressBar        android:id="@+id/myprogressbar"        style="@style/Widget.AppCompat.ProgressBar.Horizontal"        android:layout_width="match_parent"        android:layout_height="30dp"        android:indeterminate="false"        android:max="100"        android:progress="50"        android:secondaryProgress="80" />

max:设置最大进度。

progress:设置第一进度的默认进度。

secondaryProgress:设置第二进度的默认进度。

在代码中控制,首先要声明在xml中定义的progressbar,然后写一个自动增长的例子(用到了AA框架):

    @Click(R.id.aiprogressbar)    void Aiprogressbar() {        first = 1;        jiajiaprogress();    }    @Background    void jiajiaprogress() {        while (myprogressbar != 100) {            try {                Thread.sleep(500);                coucouprogress();            } catch (InterruptedException e) {                e.printStackTrace();            }        }    }    @UiThread    void coucouprogress() {        myprogressbar.incrementProgressBy(first);        myprogressbar.incrementSecondaryProgressBy(first);        Log.e("11111", myprogressbar.getProgress() + "");        progresstext.setText("第一进度条的进度:" + myprogressbar.getProgress()                + "% ,第二进度条的进度:" + myprogressbar.getSecondaryProgress()                + "%");    }

当点击按钮的时候,progressbar就会按照给定的first的值进行自增长。

increamentProgressBy(),这个方法增加进度条时传入大于零的值,减少时传入小于零的值。

2.在对话框中展示一个进度条

    @Click(R.id.progresswithdialog)    void showprogressdialog() {        //增量        first = 1;        //自增长控制        dialogdms = true;        //声明对象        proDialog = new ProgressDialog(Main3Activity.this);        //设置进度条样式        proDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);        //设置进度条标题栏文字        proDialog.setTitle("学习了!");        //设置进度条附带信息        proDialog.setMessage("哈哈哈,你学会了吗。");        //设置进度条图标        proDialog.setIcon(getResources().getDrawable(R.drawable.ic_launcher));        //设置进度条最大长度        proDialog.setMax(100);        //自增长的方法        bgproDialogIncre(proDialog);        //设置进度条是否精确显示,false为精确显示,true为不精确显示。Indeterminate :adj,不定的,不明确的;模糊的        proDialog.setIndeterminate(false);        //设置doalog的点击按钮        //参数1:按钮样式,选值有:BUTTON_POSITIVE,BUTTON_NEGATIVE,BUTTON_NEUTRAL,参数2:显示内容,参数3:按钮的点击监听器        proDialog.setButton(DialogInterface.BUTTON_POSITIVE, "确定", new DialogInterface.OnClickListener() {            @Override            public void onClick(DialogInterface dialog, int which) {                Log.e("11111", "Click");                progresstext.setText("你真的学会了?");            }        });        //设置返回键退出dialog        proDialog.setCancelable(true);        //设置dialog消失监听        proDialog.setOnDismissListener(new DialogInterface.OnDismissListener() {            @Override            public void onDismiss(DialogInterface dialog) {                dialogdms = false;            }        });        proDialog.show();    }    @Background    void bgproDialogIncre(ProgressDialog proDialog) {        while (dialogdms && proDialog.getProgress() != 100) {            try {                Thread.sleep(50);                proDialogIncre();            } catch (InterruptedException e) {                e.printStackTrace();            }            Log.e("11111", "我正在学习。");        }    }    @UiThread    void proDialogIncre() {        proDialog.incrementProgressBy(first);    }
3.自定义progressbar有两种方法,一个是覆盖系统的progressDrawable字段,自己定义一个xml文件,在布局中指定给progressbar:
    <ProgressBar        android:id="@+id/myprogressbar"        style="@style/Base.Widget.AppCompat.ProgressBar.Horizontal"        android:layout_width="match_parent"        android:layout_height="30dp"        android:indeterminate="false"        android:max="100"        android:progressDrawable="@drawable/my_progressbar"        android:progress="50"        android:secondaryProgress="80" />
my_progressbar.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="5dip" />            <solid android:color="#88000000" />            <gradient                android:angle="270"                android:centerColor="#ff5a5d5a"                android:centerY="0.5"                android:endColor="#88aa0000"                android:startColor="#88aa0000" />        </shape>    </item>    <item android:id="@android:id/secondaryProgress">        <clip>            <shape>                <corners android:radius="5dip" />                <gradient                    android:angle="270"                    android:centerColor="#C6B7FF"                    android:centerY="0.5"                    android:endColor="#939393"                    android:startColor="#939393" />            </shape>        </clip>    </item>    <item android:id="@android:id/progress">        <clip>            <shape>                <corners android:radius="5dip" />                <gradient                    android:angle="270"                    android:centerColor="#88aaEBFF"                    android:centerY="0.5"                    android:endColor="#8EEFFF"                    android:startColor="#8EEFFF" />            </shape>        </clip>    </item></layer-list>
第二种是自定义view。

0 0
原创粉丝点击