如何使用camerax和TextureView平滑处理方向变化?

时间:2019-05-15 09:13:57

标签: android-camerax

我正在尝试在方向更改上实现平稳过渡,就像库存相机应用程序那样(图标旋转,相机视图不闪烁)。

我已经通过设置ROTATION_ANIMATION_CROSSFADE完成了图标旋转部分,并在创建活动时手动启动了动画。

但是我的TextureView(渲染camerax的地方)是在配置更改时重新创建的,因此在方向更改时会淡化为黑色。

如何避免重新创建视图?我应该自己处理配置更改吗?

1 个答案:

答案 0 :(得分:0)

添加

android:screenOrientation="portrait"

查看清单文件中的活动。然后,将不会在设备旋转时重新创建活动。之后,自行处理方向更改。 我更喜欢使用OrientationChangeListener来做到这一点。

@Override
public void onResume() {
       //handle orientation change
        orientationEventListener = new OrientationEventListener(getActivity(), SensorManager.SENSOR_DELAY_NORMAL) {
            @Override
            public void onOrientationChanged(int orientation) {
                updateUi(orientation); //rotate ui elements on orientation change
                videoCapture?.setTargetRotation(getOrientation(orientationHint)) //notify the capture session about the orientation change
            }
        };
        orientationEventListener.enable();
}

getOrientation()方法从Surface常量整数返回一个整数:Surface.ROTATION_0,Surface.ROTATION_90,Surface.ROTATION_180或Surface.ROTATION_270。

还请注意,您需要在onPause()方法中禁用orientationEventListener。