2015-07-22 3 views
3

Ну, я вид изображения по центру внутри RelativeLayoutанимация Android масштаб: стержень не работает в первый раз

<ImageView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@+id/imgHomePlayPause" 
    android:layout_centerVertical="true" 
    android:layout_centerHorizontal="true" 
    android:visibility="gone" /> 

Также у меня есть эта анимация:

<set xmlns:android="http://schemas.android.com/apk/res/android"> 
<scale android:fromXScale="1.0" 
    android:fromYScale="1.0" 
    android:toXScale="2.0" 
    android:toYScale="2.0" 
    android:duration="400" 
    android:pivotX="50%" 
    android:pivotY="50%"/> 
</set> 

Проблема, когда анимация начинается первый время, оно масштабируется из верхнего левого угла, а не из центра. Все последующие времена все отлично. Есть идеи?

ответ

6

Проблема может быть вызвана при расчете pivotX и pivotY.

я должен был установить видимость на Посмотретьк НЕВИДИМОМУ вместо GONE в самом начале. Это заставило меня использовать RelativeLayout, потому что мне пришлось переключаться между двумя View.

В вашем случае просто изменить первоначальную видимость невидимой, как это:

<ImageView 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:id="@+id/imgHomePlayPause" 
android:layout_centerVertical="true" 
android:layout_centerHorizontal="true" 
android:visibility="invisible" /> 

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

Вывод:

То, что я считаю, что расчет ширины и высоты элемента будет работать только право, если оно было обращено один раз. Когда видимость элементов установлена ​​на GONE, она не будет нарисована вообще, и никакая ширина и высота не могут быть рассчитаны.

+1

Для меня используйте параметр «wrap_content», чтобы точка не была рассчитана правильно, используя всегда View.VISIBLE – Gilian