0

我已经开发了 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));
4

1 回答 1

0

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

你应该先翻译一点,旋转然后翻译回来。

例如:

mView.translate(-mView.getWidth()/2, -mView.getHeight()/2);
mView.setRotation(90);
mView.translate(mView.getWidth()/2, mView.getHeight()/2);
于 2017-05-16T08:07:51.990 回答