4

私はアンドロイドでウェブビューを含むフレームレイアウトを回転させようとしています、ここに私のコードがあります:

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);

回転は問題ありません...しかし問題は、レイアウトの回転された座標系に従って、webview のクリック可能な領域が座標を変更していないことです。また、webview のスクロールが逆になっています

この問題を解決する方法に関する提案

4

1 に答える 1

0

「何もない」にもかかわらず、アニメーションの実行中にUIの一部をアクティブ化できるという同様の問題が発生しました。使用RotateAnimationしているのはビューのビジュアルを更新するだけで、すべてFrameLayoutの要素は元の場所にそのまま残ります。

FrameLayout1つの可能性は、回転後のビューのように設定された別のレイアウトを作成することです。このレイアウトは、インスタンス化コードをActivity実装してメソッドに配置することにより、でインスタンス化できます。Animation.AnimationListeneronAnimationEnd(Animation)

値0に基づいsetDuration(int)て、ビューがアニメーション化されるのをまったく気にしないように見えます。この場合、開始するLayoutAnimationコードをレイアウトを置き換えるコードに置き換えることができます。

于 2012-02-19T18:26:10.973 に答える