4

У меня есть вертикальное линейное расписание с тремя образами в виде кликов в линейном режиме. Когда я поворачиваю linearlayout на 90 градусов, используя простую анимацию, возникает проблема. Изображения изображения корректно повернуты, но события onclick для изображений не вращаются вместе с linearlayout и остаются в исходном положении до анимации.После поворота в линейном режиме события onclick не меняют положение после поворота

Ниже мой основной код Java

 westplayer = (LinearLayout) findViewById(R.id.linearLayout_west); 

     // Create an animation instance 
    Animation an = new RotateAnimation(0.0f, 180.0f, 32, 180); 

    // Set the animation's parameters 
    an.setDuration(0);    // duration in ms 
    an.setRepeatCount(0);    // -1 = infinite repeated 
    an.setRepeatMode(Animation.REVERSE); // reverses each repeat 
    an.setFillAfter(true);    // keep rotation after animation 

     // Apply animation to linearlayout 
    westplayer.setAnimation(an); 

Код выше обрабатывает анимационную часть. Следующий код следует за анимацией и переопределяется, чтобы обновить позиции макета, но не работает для меня.

 // Update Layout 
      int top=westplayer.getTop(); 
     int bottom=westplayer.getBottom(); 
     int left=westplayer.getLeft(); 
     int right=westplayer.getRight(); 
     westplayer.layout(left, top , right, bottom); 

XML-выглядит следующим образом:

 <LinearLayout 
    android:id="@+id/linearLayout_west" 
    android:layout_width="42dp" 
    android:layout_height="250dp" 
    android:layout_alignParentLeft="true" 
    android:layout_below="@+id/linearLayout_north" 
    android:duplicateParentState="false" 
    android:gravity="center" 
    android:orientation="vertical" > 

    <ImageView 
     android:id="@+id/imageViewW1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:src="@drawable/spades_14" 

     /> 

    <ImageView 
     android:id="@+id/imageViewW2" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:src="@drawable/spades_14" 
     android:layout_marginTop="-15dp" 
     /> 

    <ImageView 
     android:id="@+id/imageViewW3" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:src="@drawable/spades_14" 
     android:layout_marginTop="-15dp" 
     /> 

</LinearLayout> 

Я получил код макета обновление от this, а также нашел другое решение, которое я также пытался this и до сих пор никаких положительных результатов. Мне нужно, чтобы это работало для API 10. Любая помощь очень ценится

+0

Это образное изображение является дочерним элементом linearlayout? – Nithinlal

+0

Да, это дочерний элемент linearlayout, я добавил код xml выше. – user2738708

ответ

0

Да, вы получили ожидаемый результат.

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

Итак, после вашей анимации, хотя вы, setFillAfter(true), чтобы смотреть на вид, поворачивается, но на самом деле вид все еще находится в одном месте и не двигается немного.

+0

Спасибо за ответ. Я думал, что код макета обновления будет повторно размещать представления после анимации, но, похоже, это не так. Итак, как мне получить представление о изображениях, чтобы они также вращались вместе с растровыми изображениями? Есть идеи? – user2738708

+0

@ user2738708 Извините, я действительно не знаю, есть ли способ развернуть вид в повернутом виде. – faylon

+0

Спасибо за попытку ответить на мой запрос, если у кого-нибудь еще есть решение, пожалуйста, помогите мне. – user2738708

0

Проблема, с которой вы сталкиваетесь, заключается в том, что вы используете анимацию Tween. Вид будет вращаться, и только видимая часть будет двигаться. Но позиции ImageView останутся такими же, как определено в макете. Вот почему область с клики остается неизменной.

Чтобы изменить положение, в соответствии с анимацией вам нужно будет использовать Property Animation, например ObjectAnimator или ValueAnimator. С этим свойства, определенные в xml, будут обновляться. Теперь кликабельные области перемещаются вместе с видами.

+0

Да и правильно. анимация свойств решила бы мою проблему, но поскольку я не упоминал об этом раньше, мне нужно, чтобы я работал на api 10, и я думаю, что анимация свойств не поддерживается в api 10. Моя минимальная сборка - пряничная версия 2.3. Спасибо за помощь. – user2738708

+0

@ user2738708 Попробуйте [this] (http://nineoldandroids.com) –

+0

Я попробовал приложение с 9-дюймовым экраном, которое доступно в Google Play, которое имеет ту же реализацию (предположение, сделанное мной), как код в предоставленной вами ссылке. Приложение отображает различные тесты анимации, но тот, в котором я был заинтересован, была демонстрацией viewpropertyanimator. После анимации кнопка в демо должна быть доступна после нажатия. Я попробовал приложение на устройстве с желе и работал, но не работает на пряничном устройстве. пожалуйста, подтвердите мою информацию и благодарю вас за ваши материалы. – user2738708

Смежные вопросы