0

我一直在查看很多进度条示例,它们都涉及创建新线程或异步任务。这些进度条是在任务完成时弹出、更新和消失的进度条。

但是,我有兴趣在我的应用程序中创建一个永久的 ProgressBar,它实际上可以通过硬编码进度来更新。

所以这是一个示例代码:

ProgressBar levelProgress;
levelProgress = (ProgressBar)findViewById( R.id.progressBarLevel);
levelProgress.setMax(100);
levelProgress.setProgress(50); //this is what I wanted to do

我想让 ProgressBar 保持原样,因此使用上面的代码,我希望在我的布局中拥有一个永久的 ProgressBar 以完成一半。我实际上拥有的是一个空的 ProgressBar。

最后一个问题是,有没有办法对进度条的更新进行硬编码?还是只能通过 AsyncTask 或可运行线程获得?

编辑:我忘了提到我正在将它作为一个片段来实现。稍微更完整的代码如下

public class myLevelDisplayActivity extends Fragment{

LinearLayout ll;
static FragmentActivity fa;
ProgressBar levelProgress;

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

    fa = super.getActivity();
    ll = (LinearLayout) inflater.inflate(R.layout.levelDisplay, container, false);

       levelProgress = (ProgressBar) ll.findViewById( R.id.progressBarLevel);
       levelProgress.setMax(100);
       levelProgress.setProgress(0);
       levelProgress.setProgress(10);
       levelProgress.setProgress(50);

 return ll;
}

水平显示.xml

    <?xml version="1.0" encoding="utf-8"?>


<LinearLayout xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical"
    tools:ignore="HardcodedText,ExtraText,ExtraText,ExtraText,ExtraText,ExtraText" xmlns:android="http://schemas.android.com/apk/res/android">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginLeft="10dp" >


        <ImageView
            android:id="@+id/imageViewCurrentLevel"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/circle1" />


        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:layout_marginLeft="10dp"
            android:layout_marginRight="10dp"
            android:layout_weight="0.26"
            android:orientation="vertical">

            <TextView
                android:id="@+id/textViewLevelTitle"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center_horizontal"
                android:gravity="center_horizontal"
                android:text="Level Title"
                android:textAppearance="?android:attr/textAppearanceMedium" />

            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content" >

                <ProgressBar
                    android:id="@+id/progressBarLevel"
                    style="?android:attr/progressBarStyleHorizontal"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_weight="3.16"
                    android:max="100" 
                    />



            </LinearLayout>



            <LinearLayout
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:layout_gravity="center_horizontal"
                android:layout_weight="3.16" >

                <TextView
                    android:id="@+id/textViewCurrent"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="Current"
                    android:textAppearance="?android:attr/textAppearanceSmall" />

                <TextView
                    android:id="@+id/textViewSeparator"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="/"
                    android:textAppearance="?android:attr/textAppearanceSmall" />

                <TextView
                    android:id="@+id/textViewNextLimit"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="Next Level"
                    android:textAppearance="?android:attr/textAppearanceSmall" />

            </LinearLayout>

        </LinearLayout>
    </LinearLayout>
</LinearLayout>
4

3 回答 3

0

您可以在布局中放置一个 ProgressBar(表单小部件下有一个)。我不知道你是否可以从 XML 设置进度百分比,如果不能,你可以像这样以编程方式设置它:(这只是我的想法):

ProgressBar pb = (ProgressBar)findViewById(R.id.progressBar); 
pb.setProgress(50);
于 2012-08-16T16:47:13.853 回答
0

Thread您可以在没有或的情况下从 XML 和代码设置进度AsyncTask。您的问题是您的代码没有运行,或者您的布局有问题。布局 XML 应该具有style="?android:attr/progressBarStyleHorizontal"或包含在该样式中的一组自定义属性。请参阅在 Android 中使用水平进度条

<ProgressBar
    android:id="@+id/progressBarLevel"
    style="?android:attr/progressBarStyleHorizontal"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:max="100"
    android:progress="50" />

最后一个问题是,有没有办法对进度条的更新进行硬编码?

Thread是的, /的原因AsyncTask是人们希望随着时间的推移改变进度,但您不想这样做,您不必使用它。

于 2012-08-16T17:50:38.547 回答
0

当前的代码似乎很好。如果仍有问题,您应该显示更多代码。

此外,线程只是与问题无关,因为它们仅用于表明它可以前进。

顺便说一句,您可以使用处理程序而不是新线程。

于 2012-08-16T18:35:58.893 回答