Поворот на 90 градусов FrameLayout, содержащего веб-просмотр в Android

Я пытаюсь повернуть макет кадра, содержащий веб-просмотр в Android, вот мой код:

FrameLayout contentView = (FrameLayout) getRootView().findViewById(
                R.id.content);

FrameLayout backGround = new FrameLayout(getContext());

FrameLayout.LayoutParams bgfl = new FrameLayout.LayoutParams(
    FrameLayout.LayoutParams.FILL_PARENT,
    FrameLayout.LayoutParams.FILL_PARENT);

backGround.addView(WebView object);

contentView.addView(backGround, bgfl);

RotateAnimation r = new RotateAnimation(0f, -90f,Animation.RELATIVE_TO_SELF,0.5f, 

Animation.RELATIVE_TO_SELF,0.5f);

r.setDuration(0);

r.setFillAfter(true); 

LayoutAnimationController animController = new LayoutAnimationController(r, 0);

backGround.setLayoutAnimation(animController);

Он вращается нормально... но проблема в том, что любая интерактивная область в веб-просмотре не меняет свои координаты в соответствии с повернутой системой координат макета. Также прокрутка веб-просмотра переворачивается

Любое предложение о том, как решить эту проблему


person user1168687    schedule 25.01.2012    source источник
comment
Возможно, вам нужно что-то вроде кода события касания здесь.   -  person dokkaebi    schedule 25.01.2012


Ответы (1)


У меня были аналогичные проблемы с возможностью активировать часть пользовательского интерфейса во время выполнения анимации, даже если там «ничего». RotateAnimation, который вы используете, обновляет только визуальные эффекты представления, все элементы FrameLayouts остаются нетронутыми на своих исходных местах.

Одна из возможностей — создать отдельный макет для вашего FrameLayout, который будет выглядеть так, как вид после поворота. Этот макет можно создать в вашем Activity, внедрив Animation.AnimationListener и поместив код создания экземпляра в метод onAnimationEnd(Animation).

Основываясь на вашем значении setDuration(int), равном 0, похоже, что вы можете вообще не заботиться о том, чтобы увидеть анимированное представление. В этом случае вы можете просто заменить код, который запускает ваш LayoutAnimation, кодом, который заменяет макет.

person happydude    schedule 19.02.2012