Androidコードを掘り下げて、不確定な進行状況バーでの使用を見ました。このタグで独自のドロアブルを作成しようとした後:
<animated-rotate xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:drawable="@drawable/spinner_pia"
Android:pivotX="50%"
Android:pivotY="50%"
Android:framesCount="12"
Android:frameDuration="100" />
「パッケージ 'Android'の属性 'frameDuration'のリソース識別子が見つかりません」というエラーが表示されます-これは、frameDurationがプライベート属性であることを意味します。この「アニメーション回転」機能を使用する方法はありますか?
私の仕事は、システムのデフォルトの不確定な進行状況バーを置き換えることです。できるだけ少ないコードでそれをしたいです(可能な場合は、いくつかの属性を変更するだけです)。 ProgressBarビューを使用して、以下を設定します。
Android:indeterminateOnly="true"
Android:indeterminateBehavior="cycle"
Android:indeterminateDuration="3500"
Android:indeterminateDrawable="@drawable/pia_sivuvator"
そして、「@ drawable/pia_sivuvator」をそのオブジェクトに向けると、私の仕事は彼らと同じくらいエレガントになりますが、私はそれらのプライベートな属性にこだわっています。
助けて?
私はまったく同じ問題に遭遇しました。これらのパラメーター(framesCountおよびframeDuration)を除外できます。私はそれらを除外しようとしましたが、うまくアニメーションしましたが、設定していた幅/高さは尊重されていなかったため、単純な回転アニメーションとそれを適用するImageViewを作成しました。アニメーションファイル(res/anim/clockwise_rotation.xml)は次のとおりです。
<?xml version="1.0" encoding="utf-8"?>
<rotate
xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:fromDegrees="0"
Android:interpolator="@Android:anim/linear_interpolator"
Android:toDegrees="360"
Android:pivotX="50%"
Android:pivotY="50%"
Android:duration="1000"
Android:startOffset="0"
/>
次に、アニメーションを膨らませて、繰り返し回数を設定し、ビューから開始します
Animation rotation = AnimationUtils.loadAnimation(this, R.anim.clockwise_rotation);
rotation.setRepeatCount(Animation.INFINITE);
myView.startAnimation(rotation);
アニメーションを作成する代わりに(XML構成だけでなく、より多くのコードが必要です)、layer-list
描画可能リソースとして。 layer-list
はanimated-rotate
。
<layer-list xmlns:Android="http://schemas.Android.com/apk/res/Android">
<item>
<rotate
Android:drawable="@drawable/spinner_loading"
Android:pivotX="50%"
Android:pivotY="50%"
Android:fromDegrees="0"
Android:toDegrees="360"/>
</item>
</layer-list>
それからもちろん、マリオ・レンチが書いたようにスタイルでそれを使用します:
<style name="YourProgressBarStyle" parent="@Android:style/Widget.ProgressBar">
<item name="Android:indeterminateDrawable">@drawable/progress_bar_indeterminate</item>
</style>
プライベート属性を回避する方法がわかりません、同じ問題があります。
ちなみに、ProgressBarのこれらの属性を変更する場合:
Android:indeterminateOnly="true"
Android:indeterminateBehavior="cycle"
Android:indeterminateDuration="3500"
Android:indeterminateDrawable="@drawable/pia_sivuvator"
values/styles.xml
ファイルで標準Android one:
<style name="YourProgressBarStyle" parent="@Android:style/Widget.ProgressBar">
<item name="Android:indeterminateDrawable">@drawable/progress_bar_indeterminate</item>
</style>
そして、それをxmlレイアウトファイルのプログレスバーに適用します。
...
<ProgressBar
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
style="@style/YourProgressBarStyle"/>
...
このドローアブルxmlを使用してこれを解決しました。新しいバージョンのAndroidでのみスムーズに思えますが:
<rotate xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:drawable="@drawable/spinner_pia"
Android:fromDegrees="0"
Android:pivotX="50%"
Android:pivotY="50%"
Android:toDegrees="1080" />
これが回転アニメーションの簡単な説明です。これを試してみてください。
http://androidtutorials60.blogspot.in/2013/09/simple-rotate-animation-in-Android.html
<rotate xmlns:Android="”http://schemas.Android.com/apk/res/Android”">
Android:duration="4000"
Android:fromdegrees="0"
Android:pivotx="50%"
Android:pivoty="50%"
Android:todegrees="360"
Android:toyscale="0.0"
</rotate>