我开发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));
答案 0 :(得分:0)
因为枢轴点不在TextureView的中心而是在左上角。
你应该先翻译一下,然后转动然后翻译回来。
例如:
mView.translate(-mView.getWidth()/2, -mView.getHeight()/2);
mView.setRotation(90);
mView.translate(mView.getWidth()/2, mView.getHeight()/2);