0

我很难在 android 上完成流畅的加载动画(没有滞后/口吃)。我正在使用 AsyncTask 异步获取数据,但似乎 UI 线程受它的影响。对于我的微调器(加载指示器),我使用的是 png 图标,并通过动画旋转它:

Animation mRotateAnim = AnimationUtils.loadAnimation(getActivity(), R.anim.rotate);
progressBar.startAnimation(mRotateAnim);

加载数据时,微调器开始滞后。当我尝试在 webview 中加载内容时,情况会变得更糟 -> 加载动画会完全冻结长达 3 秒。

我正在使用 Galaxy S3 进行测试(多核!)。

有人有解决方案吗?

4

1 回答 1

1

你不想使用标准的 Android 微调器,它应该会给你更好的性能。如果不查看链接以创建自定义ProgressBar,请查看下面的布局。

WebView我在我的 mainRelativeLayout和 myProgressBar在相同的布局中指定 my 。一旦加载布局,我ProgressBar就会显示在顶部,当WebView内容加载时,我会隐藏LinearLayoutProgressBar的定义。

这在我的 HTC One X 上非常适合我

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >

<WebView
    android:id="@+id/browserView"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >
</WebView>

<LinearLayout
    android:id="@+id/browserProgressLayout"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@drawable/back"
    android:gravity="center_vertical|center_horizontal"
    android:orientation="vertical" >

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@drawable/widget_background_dark"
        android:gravity="center_vertical|center_horizontal"
        android:orientation="vertical"
        android:padding="@dimen/content_padding" >

        <TextView
            style="@style/ListLargeText"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_vertical|center_horizontal"
            android:text="@string/bus_loader_text"
            android:textStyle="bold"
            android:textColor="@color/terminal_text_color" />

        <ProgressBar
            android:id="@+id/browserProgress"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_vertical|center_horizontal" />
    </LinearLayout>
</LinearLayout>

您应该能够在ProgressDialog没有任何性能问题的情况下使用法线。这实际上是更好的方法,因为这将根据您应用于应用程序的主题进行样式设置。

ProgressDialog progDailog = ProgressDialog.show(_context,
                progressString, "Loading please wait...",
                true);
于 2013-03-27T14:37:37.393 回答