Обновление Android ICS 4.0, ломающее анимацию вращающегося колеса - PullRequest
2 голосов
/ 05 января 2012

Мое приложение имеет вращающееся колесо для начальной загрузки приложения.Прекрасно работает до Android 3.0 сота.Но в ICS 4.0 его сломали.Это простая анимация вращающегося колеса.В ICS это колесо вращается вокруг точки около своей окружности вместо центральной точки.Это создает визуальное впечатление, как вращающееся колесо вместо постоянного вращающегося колеса.Вот код

Расположение:

<ImageView 
            android:id="@+id/spinner"
            android:layout_width="wrap_content" 
            android:layout_height="wrap_content"
            android:src="@drawable/spinner_white_48"
            android:layout_centerHorizontal="true"
            android:layout_alignParentTop="true"
        />

spinner_animation.xml

    <rotate
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:interpolator="@android:anim/linear_interpolator"
    android:fromDegrees="0"
    android:toDegrees="360"
    android:pivotX="50%" 
    android:pivotY="50%"
    android:repeatCount="infinite"
    android:duration="1200">

    </rotate>

Файл Java (действие)

Animation rotateSpinner = AnimationUtils.loadAnimation(this,R.anim.spinner_animation);
rotateSpinner.setAnimationListener(new Animation.AnimationListener() {
            @Override
            public void onAnimationStart(Animation animation) { 
            } 
            @Override
            public void onAnimationRepeat(Animation animation) { 
            }
            @Override
            public void onAnimationEnd(Animation animation) {
            }
        }); 
 findViewById(R.id.spinner).startAnimation(rotateSpinner); 

ПРИМЕЧАНИЕ: приложение даже не запускается на 4.0.2 (Samsung Galaxy).Но показывает, что эта искаженная анимация в приложении 4.0.3 отлично работает (Nexus S).

Любая помощь приветствуется.Заранее спасибо

Ответы [ 4 ]

1 голос
/ 27 февраля 2012

Пока не будет лучшего решения, вы можете использовать:

RotateAnimation rotation;
if(Integer.parseInt(Build.VERSION.SDK) >=15){
    rotation = new RotateAnimation(0f,360f,Animation.RELATIVE_TO_SELF,0.25f,Animation.RELATIVE_TO_SELF,0.25f);
}else{
    rotation = new RotateAnimation(0f,360f,Animation.RELATIVE_TO_SELF,0.5f,Animation.RELATIVE_TO_SELF,0.5f);
}
1 голос
/ 05 января 2012

Если под "колебанием" вы подразумеваете, что оно, кажется, вращается вокруг чего-то, отличного от его центральной точки, то это известная ошибка .

0 голосов
/ 28 марта 2012

Вы должны добавить в свой манифест это:

<supports-screens android:resizeable="true"
                  android:smallScreens="true"
                  android:normalScreens="true"
                  android:largeScreens="true"
                  android:anyDensity="true"/>
0 голосов
/ 01 февраля 2012

Проверьте настройки макета. У меня есть ощущение, что если вы просто отбросите ту же точку зрения в простой LinearLayout, она снова будет работать нормально. Похоже, вы находитесь в RelativeLayout, и у меня есть ощущение, что layout_centerHorizontal или layout_alignParentTop доставляют вам горе.

...