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、以下の私のレイアウトを見てください。

WebViewmy mainRelativeLayoutでmyを指定ProgressBarし、同じレイアウトで my を指定します。レイアウトが読み込まれるとすぐに myProgressBarが一番上WebViewに表示され、コンテンツが読み込まれるとLinearLayoutmy ProgressBaris defined in が非表示になります。

これは私の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 に答える