8

のデフォルトのアニメーションを変更したいProgressBarので、テーマにカスタムスタイルを追加しました。

styles.xml

<style name="ProgressTheme" parent="@android:style/Widget.ProgressBar.Large">
    <item name="android:indeterminateDrawable">@drawable/spinner_holo_light</item>
</style>

私はこのスタイルを私ProgressBarの中で次のように呼んでいます:

ProgressBar.xml

<ProgressBar
    android:id="@+id/loadingProgressBar"
    style="@style/ProgressTheme"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" />

問題はspinner_holo_light.xml:の中にあります。

以下を使用すると、os 3.0以降のデバイスではすべて正常に動作しますが、古いosバージョンでは進行状況が変わりません。

spinner_holo_light.xml

<rotate xmlns:android="http://schemas.android.com/apk/res/android"
    android:drawable="@drawable/spinner_76_inner_holo"
    android:fromDegrees="720"
    android:pivotX="50%"
    android:pivotY="50%"
    android:toDegrees="0" />

しかし、animate-rotate代わりに使用すると、アニメーションはすべてのOSバージョンで機能しますが、結果として非常に遅延したアニメーションになります。

<animated-rotate xmlns:android="http://schemas.android.com/apk/res/android"
    android:drawable="@drawable/spinner_76_inner_holo"
    android:fromDegrees="720"
    android:pivotX="50%"
    android:pivotY="50%"
    android:toDegrees="0" />

あなたはそれについてどう思いますか?私はここで何か間違ったことをしていますか?

4

4 に答える 4

12

古いデバイスでは、android:fromDegreesがよりも大きい場合android:toDegressに問題が発生し<rotate>ます。値を交換してみてください。

<rotate xmlns:android="http://schemas.android.com/apk/res/android"
    android:drawable="@drawable/spinner_76_inner_holo"
    android:fromDegrees="0"
    android:pivotX="50%"
    android:pivotY="50%"
    android:toDegrees="720" />

または、無限に設定してみてください。

<rotate xmlns:android="http://schemas.android.com/apk/res/android"
    android:drawable="@drawable/spinner_76_inner_holo"
    android:pivotX="50%"
    android:pivotY="50%"
    android:repeatCount="infinite" />

古いデバイスでは、アニメーションが遅くなる可能性があります。これを修正するandroid:animationResolutionには、スタイルに追加します。

<style name="ProgressTheme" parent="@android:style/Widget.ProgressBar.Large">
    <item name="android:indeterminateDrawable">@drawable/spinner_holo_light</item>
    <item name="android:animationResolution">33</item>
</style>
于 2012-11-11T16:29:16.570 に答える
1

進行状況ダイアログの背景を透明にします。

ボーダーレスプログレスダイアログを作成します。

そして、円形プログレスダイアログのスピナーの色のカスタマイズ。

http://pankajchunchun.wordpress.com/2011/09/10/customization-of-spinner-progress/

于 2013-06-06T16:27:50.257 に答える
0

追加してもSamsungGalaxySPlusで動作させることができませんでした

<item name="android:animationResolution">33</item>

私はあなたの応答@Tomikに似た何かを求めていました

HoneyComb以前のデバイスでのAndroidプログレスバーの低速回転

確かにすべてのプレハニカムデバイスでスムーズですか?

于 2013-05-19T10:41:05.757 に答える
0

BackGroundxmlカスタム形式をindeterminateDrawableに変更することでこの問題を解決しました

android:BackGroundを除いてandroid :indeterminateDrawableを使用します

    <ProgressBar
    android:layout_centerHorizontal = "true"
    android:layout_centerVertical = "true"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:indeterminateDrawable = "@drawable/progressbar"
    android:id="@+id/progressBar"        
    android:indeterminate = "true"/>

およびカスタムプログレスバーXMLコード

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

 <rotate xmlns:android="http://schemas.android.com/apk/res/android"
    android:fromDegrees="0"
    android:pivotX="50%"
    android:pivotY="50%"
    android:toDegrees="360">

     <shape android:shape="ring" android:innerRadiusRatio="3"
        android:thicknessRatio="7" android:useLevel="false">

        <size android:width="76dip" android:height="76dip" />
           <gradient android:type="sweep" android:useLevel="false"
            android:startColor="@android:color/transparent"
            android:endColor="#00FF00"
            android:angle="0" />
    </shape>
</rotate>  
于 2019-08-20T19:57:49.780 に答える