У меня есть ListView, в котором может быть один или несколько элементов, на которые можно нажимать. Когда я применяю анимацию поворота, щелкающие координаты соответствуют исходной позиции элементов ListView. Например, список с одним элементом в портретном режиме, повернутый на 180 градусов, будет иметь элемент вверх дном внизу экрана, но элемент получает событие щелчка, когда я нажимаю на верхнюю часть экрана. 180 градусов - это просто пример, я хочу иметь возможность перемещаться на произвольный угол.
Я просмотрел все свойства listView, но, похоже, ни одно из них не влияет на интерактивные координаты. Я бы предположил, что willChangeTransformationMatrix справится с задачей, но это не так, и не делает недействительными или недействительными Views. Есть ли свойство, которое я пропускаю, или как мне перенести координаты в нужное место?
Спасибо
образцы элементов списка кодов подсвечиваются правильно при щелчке, поворачиваются с помощью dpad_center, после того, как повернутые элементы подсвечиваются при нажатии на исходную позицию. Я пытался анимировать анимацию, animationSet и layoutAnimationController все тот же результат.
public class ToDoList extends Activity {
ListView myListView;
/** Called when the activity is first created. */
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
final ListView myListView = new ListView(this);
final ArrayList<String> todoItems = new ArrayList<String>();
todoItems.add(0, "asdf");
todoItems.add(0, "1234");
// Create the array adapter to bind the array to the listview
final ArrayAdapter<String> aa;
aa = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,todoItems);
// Bind the array adapter to the listview.
myListView.setAdapter(aa);
setContentView(myListView);
myListView.setOnKeyListener(new OnKeyListener() {
public boolean onKey(View v, int keyCode, KeyEvent event) {
if (event.getAction() == KeyEvent.ACTION_DOWN)
if (keyCode == KeyEvent.KEYCODE_DPAD_CENTER)
{
aa.notifyDataSetChanged();
//myEditText.setText("");
RotateAnimation ranim = new RotateAnimation(0f, 180f, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);
ranim.setDuration(1000);
ranim.setFillAfter(true);
ranim.willChangeBounds();
ranim.willChangeTransformationMatrix();
ranim.setInterpolator(new LinearInterpolator());
myListView.startAnimation(ranim);
AnimationSet set = new AnimationSet(true);
set.addAnimation(ranim);
set.willChangeTransformationMatrix();
set.setInterpolator(new LinearInterpolator());
//set.setFillAfter(true);
//set.setFillEnabled(true);
LayoutAnimationController controller = new LayoutAnimationController(set, 0.5f);
controller.setInterpolator(new LinearInterpolator());
myListView.setLayoutAnimation(controller);
return true;
}
return false;
}
});
}
}