在Android上的状态栏中显示不确定的进度条

时间:2011-04-13 08:53:10

标签: android progress-bar

我正在尝试显示与状态栏中的不确定进度条(不是水平的,但是圆形的)相同的动画图形,同时我正在进行的通知处于活动状态。

我试图找到与不确定进度条对应的资源ID,但发现它是通过代码动画的。

我尝试将Notification实例中的图标ID设置为动画GIF,但只有GIF的第一帧显示在状态栏中。

如果我将图标ID设置为android.R.drawable.progress_indeterminate_horizo​​ntal,则图形会完美动画。所以,我的问题是 - 在这种情况下动画是如何实现的?通过iconLevel?如何设置动画图标而不需要自己定期制作动画?

2 个答案:

答案 0 :(得分:5)

我找到了答案。要求是创建一个动画列表(比如保存为my_spinner.xml),旋转器的各种图像从0到360以不同的角度旋转。

<?xml version="1.0" encoding="utf-8"?>
<animation-list
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:oneshot="false">
    <item android:drawable="@drawable/spinner_0"
        android:duration="200" />
    <item android:drawable="@drawable/spinner_60"
        android:duration="200" />
    <item android:drawable="@drawable/spinner_120"
        android:duration="200" />
    <item android:drawable="@drawable/spinner_180"
        android:duration="200" />
    <item android:drawable="@drawable/spinner_240"
        android:duration="200" />
    <item android:drawable="@drawable/spinner_360"
        android:duration="200" />
</animation-list>

在创建通知时将my_spinner.xml设置为图标ID。

Notification n = new Notification(R.drawable.my_spinner, null, 0);

答案 1 :(得分:1)

您可以通过请求正确的窗口功能和设置栏可见性来显示标题中的进度条:

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);
    //any code here
    setProgressBarIndeterminateVisibility(true);

但是,它会出现在标题中,而不是状态栏中。