0

мне нужно сделать анимацию поворота на RelativeLayout, я использовал NineOldAndroid библиотека для анимации:Как сделать анимацию вращения на RelativeLayout

View v = findViewById(R.id.wrap_btnSelect); 
ObjectAnimator t1 = ObjectAnimator.ofFloat(
     v, "rotation", 0.0f, -45.0f); 
t1.setStartDelay(500); 
t1.setDuration(1500); 
t1.start(); 

Анимация работает отлично, и нажмите posions обновляются соответственно на ICS, но на Gingerbread положение позиций остается в старой позиции, что делает просмотр недоступным.

есть что-нибудь, что я могу сделать, чтобы исправить эту проблему на android 2.3?

оригинал-макет:

Original Layout

Пытаясь достичь этого:

Rotated Layout

EDIT: Этот макет выполнен из 4 квадратов, каждый из них является TextView.

ответ

1

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

Что-то вроде этого:

public class WrapBtnSelect extends RelativeLayout { 
    // Copy onstructors here 

    @Override 
    public boolean onTouchEvent(MotionEvent event) { 
     if (event.getAction() == MotionEvent.ACTION_DOWN) { 
      double x = (event.getX()/getWidth()) * 2 - 1; 
      double y = (event.getY()/getHeight()) * 2 - 1; 
      double angle = Math.atan2(y, x); 
      // Do your actions depending on the angle here 

      return true; 
     } 
     return super.onTouchEvent(event); 
    } 
} 
+0

Этот макет выполнен из 4 квадратов, каждый из них является 'TextView'. этот метод, похоже, как-то перегружен. можно ли повернуть кнопки? – Nevercom

+1

Вы можете вызвать 'View.setRotation()' на свой 'RelativeLayout', но он доступен только из API 11 (BTW вы также используете' ObjectAnimator', который доступен только из API 11). Чтобы работать с API 8, я бы анимировал «RelativeLayout» с помощью анимации просмотра и использовал пользовательский класс для обработки событий кликов, потому что View Animation фактически не перемещает представление, поэтому ваша позиция не будет обновляться в зависимости от анимации. – minipif