2013-03-27 60 views
0

我在安卓上完成了一個平滑加載動畫(沒有laggs /口吃)的麻煩。 我正在使用AsyncTask異步獲取數據,但似乎UI線程受其影響。 對於我的微調(加載指示燈)我使用的是PNG圖標,我通過動畫旋轉它:在android上實現平滑微調的最佳方式

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

在加載數據的微調開始滯後。當我嘗試在webview中加載內容時,情況會變得更糟 - 加載動畫完全凍結最多3秒。

我正在使用Galaxy S3進行測試(多核!)。

任何人都有解決方案嗎?

+0

如果我的回答沒有幫助,請發佈更多的代碼,以便我們可以看到你在做什麼。 – Neil

回答

1

難道你不想使用標準的Android微調,它應該給你更好的表現。如果不看this鏈接創建自定義ProgressBar其他人看看我的佈局下面。

我在我的主要RelativeLayout和我的ProgressBar指定我的WebView在相同的佈局。一旦佈局被裝載我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); 
+0

是的,我知道有一種使用進度對話框的標準方式。但那不是我感興趣的事。 – stoefln

+0

是的,我以爲你可能不會。我猜你也是以類似於我發佈的鏈接的方式來做這件事? – Neil

+0

不,我不是。感謝您的鏈接,我會試一試。我仍然認爲問題的根源不在於微調器的實現,而在於線程問題...... – stoefln

相關問題