如何旋转ViewGroup



我有一个FrameLayout,我使用WindowManager.addView将此FrameLayout显示为浮动窗口。在这个FrameLayout中有许多子视图,如ImageView和SeekBar。然后我需要通过View.setRotate旋转这个FrameLayout。调用这个方法后,FrameLayout似乎被旋转了,但当我想通过其中的一些子视图与它交互时,我发现在它旋转之前,所有的子视图都仍然在原点。那么,如何旋转ViewGroup及其所有子视图呢?

你可以试试这个:

RelativeLayout mainLayout = (RelativeLayout) findViewById(R.id.main);
int w = mainLayout.getWidth();
int h = mainLayout.getHeight();
mainLayout.setRotation(270.0f);
mainLayout.setTranslationX((w - h) / 2);
mainLayout.setTranslationY((h - w) / 2);
ViewGroup.LayoutParams lp = (ViewGroup.LayoutParams) mainLayout.getLayoutParams();
lp.height = w;
lp.width = h;
mainLayout.requestLayout();

这应该会有所帮助。

最新更新