Android的TextureView setRotation问题

时间:2014-03-18 07:39:23

标签: android unity3d textureview

我开发Unity3d的android插件来播放视频,所以我使用TextureView来制作视频。

一切正常但当我想将TextureView对象的旋转设置为90时,它将是不可见的,而另一个值如30,60甚至89.92可以工作。

我不知道为什么会发生

这是我创建TextureView对象时的代码。

    Activity a = UnityPlayer.currentActivity;
    mediaPlayerContainer = new TextureView(a);
    RelativeLayout.LayoutParams l;
    l = new RelativeLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
    l.addRule(RelativeLayout.CENTER_IN_PARENT, -1);
    mediaPlayerContainer.setLayoutParams(l);
    mediaPlayerContainer.setRotation(89.92f);
    mediaPlayerContainer.setFocusable( true );
    mediaPlayerContainer.setFocusableInTouchMode( true );
    mediaPlayerContainer.setVisibility(View.GONE);
    mediaPlayerContainer.setSurfaceTextureListener(this);
    layout.addView(mediaPlayerContainer, new RelativeLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));

1 个答案:

答案 0 :(得分:0)

因为枢轴点不在TextureView的中心而是在左上角。

你应该先翻译一下,然后转动然后翻译回来。

例如:

mView.translate(-mView.getWidth()/2, -mView.getHeight()/2);
mView.setRotation(90);
mView.translate(mView.getWidth()/2, mView.getHeight()/2);