Подтвердить что ты не робот

Android Animate Rotate

Я сделал некоторые копания в Android-коде и увидел использование в неопределенном шаге выполнения. после попытки создать мой собственный drawable с помощью этого тега:

<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" />

Я получаю сообщение об ошибке: "Идентификатор ресурса не найден для атрибута" frameDuration "в пакете" android "- это означает, что frameDuration является частным атрибутом. Есть ли способ использовать эту функцию "анимация-поворот"?

Моя задача - заменить неопределенный индикатор выполнения по умолчанию. Я бы хотел сделать это с минимальным количеством кода (просто измените несколько атрибутов, если это возможно). Используя представление ProgressBar, установите:

android:indeterminateOnly="true"
android:indeterminateBehavior="cycle"
android:indeterminateDuration="3500"
android:indeterminateDrawable="@drawable/pia_sivuvator"

и point "@drawable/pia_sivuvator" к этому объекту сделали бы мою задачу такой же изящной, как и они, но я застрял в этих частных атрибутах.

помощь?

4b9b3361

Ответ 1

Я столкнулся с той же проблемой. Вы можете исключить эти параметры (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);

Ответ 2

Вместо создания анимации (требуется больше кода, а не только для конфигурации 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>

Ответ 3

Я не знаю, как обойти частные атрибуты, у меня такая же проблема.

Кстати, если вы хотите изменить те атрибуты ProgressBar:

android:indeterminateOnly="true"
android:indeterminateBehavior="cycle"
android:indeterminateDuration="3500"
android:indeterminateDrawable="@drawable/pia_sivuvator"

вы можете сделать это легко с помощью фреймворка Styles, определяющего в файле values/styles.xml стиль ProgressBar, расширяющий стандартный андроид:

<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"/>
...

Ответ 4

Я решил это, используя этот drawable 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" />

Ответ 5

Вот простое объяснение анимации вращения. Попробуйте это, это поможет вам

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>