我正在尝试在方向更改上实现平稳过渡,就像库存相机应用程序那样(图标旋转,相机视图不闪烁)。
我已经通过设置ROTATION_ANIMATION_CROSSFADE
完成了图标旋转部分,并在创建活动时手动启动了动画。
但是我的TextureView
(渲染camerax的地方)是在配置更改时重新创建的,因此在方向更改时会淡化为黑色。
如何避免重新创建视图?我应该自己处理配置更改吗?
答案 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。