Progress & activity¶
Circular¶
摘自 google material design 文档
Minimize visual changes that occur while your app loads content by representing each operation with a single activity indicator. 例如,一个刷新操作应该显示一个 refresh bar 或者 activity circle 的任何一个,但是不能同时显示。
如何添加?¶
I. 在你的 build.grade
文件末尾添加 appcompat
库。
dependencies { compile 'com.android.support:appcompat-v7:X.X.X' // where X.X.X version }
II. 创建你的 activity 并继承自 android.support.v7.app.AppCompatActivity。
public class MainActivity extends AppCompatActivity { ... }
III. 在 layout.xml
内的任意位置声明你的 ProgressBar
。
<ProgressBar style="@style/Widget.AppCompat.ProgressBar" android:layout_width="wrap_content" android:layout_height="wrap_content"/>
如何设置样式?¶
I. 在你的 styles.xml
内定义自定义样式。
<style name="CircularProgress" parent="Theme.AppCompat.Light"> <item name="colorAccent">@color/indigo</item> </style>
II. 通过 android:theme
属性应用这个样式到你的 ProgressBar
。
<ProgressBar android:theme="@style/CircularProgress" style="@style/Widget.AppCompat.ProgressBar" android:layout_width="wrap_content" android:layout_height="wrap_content"/>
Linear¶
摘自 google material design 文档
一个 linear progress 指示器应该总是从 0% 填充到 100%,绝对不能反着填充。 It should be represented by bars on the edge of a header or sheet that appear and disappear.
如何添加?¶
I. 在你的 build.grade
文件末尾添加 appcompat
库。
dependencies { compile 'com.android.support:appcompat-v7:X.X.X' // where X.X.X version }
II. 创建你的 activity 并继承自 android.support.v7.app.AppCompatActivity
。
public class MainActivity extends AppCompatActivity { ... }
III. 在 layout.xml
内的任意位置声明你的 ProgressBar
。
<ProgressBar style="@style/Widget.AppCompat.ProgressBar.Horizontal" android:layout_width="wrap_content" android:layout_height="wrap_content"/>
不确定的¶
创建不确定的 ProgressBar
设置 android:indeterminate
属性的值为 true。
<ProgressBar style="@style/Widget.AppCompat.ProgressBar.Horizontal" android:layout_width="wrap_content" android:layout_height="wrap_content" android:indeterminate="true"/>
确定的¶
I. 创建确定的 ProgressBar
设置 android:indeterminate
属性的值为 false。
<ProgressBar android:id="@+id/progressBar" style="@style/Widget.AppCompat.ProgressBar.Horizontal" android:layout_width="wrap_content" android:layout_height="wrap_content" android:indeterminate="false" android:max="100" android:progress="20"/>
使用 android:max
属性去指定最大进度数。它默认等于100。
使用 android:progress
属性设置进度默认位置。
II. 从 UI 线程使用 setProgress(int progress)
方法去更新进度位置。
ProgressBar progressBar = (ProgressBar) findViewById(R.id.progressBar); progressBar.setProgress(50);
缓冲的¶
I. 创建缓冲的 ProgressBar
设置 android:indeterminate
属性的值为 false。
<ProgressBar android:id="@+id/progressBar" style="@style/Widget.AppCompat.ProgressBar.Horizontal" android:layout_width="wrap_content" android:layout_height="wrap_content" android:indeterminate="false" android:max="100" android:progress="10" android:secondaryProgress="50"/>
使用 android:secondaryProgress
属性设置默认的缓冲值。
II. 使用 setSecondaryProgress(int progress)
方法去更新缓冲进度位置。
ProgressBar progressBar = (ProgressBar) findViewById(R.id.progressBar); // set current progress progressBar.setProgress(20); // set buffered progress progressBar.setSecondaryProgress(50);
不确定的和确定的¶
创建不确定的 ProgressBar
设置 android:indeterminate
属性的值为 true。
<ProgressBar android:id="@+id/progressBar" style="@style/Widget.AppCompat.ProgressBar.Horizontal" android:layout_width="wrap_content" android:layout_height="wrap_content" android:indeterminate="true"/>
每当你需要从不确定的切换到确定的进度,可以使用 setIndeterminate(boolean indeterminate)
方法。
ProgressBar progressBar = (ProgressBar) findViewById(R.id.progressBar); progressBar.setIndeterminate(false);
如何设置样式?¶
I. 在你的 values-v21/styles.xml
内定义自定义样式。
<style name="LinearProgress" parent="Theme.AppCompat.Light"> <item name="colorAccent">@color/indigo</item> <item name="android:progressBackgroundTint">@color/pink</item> </style>
II. 通过 android:theme
属性应用这个样式到你的 ProgressBar
。
<ProgressBar android:theme="@style/LinearProgress" style="@style/Widget.AppCompat.ProgressBar.Horizontal" android:layout_width="wrap_content" android:layout_height="wrap_content"/>
备注
android:progressBackgroundTint
属性只工作在确定的 ProgressBar
。
翻译水平有限,欢迎批评指正
原文作者:Yakiv Mospan 原文链接:Progress