Android屏幕旋转四个方向准确监听

在做相机开发时,遇到一个问题,就是需要监听屏幕旋转。最简单的就是使用onConfigurationChanged()和OrientationEventListener这两种方法来实现,但是最后都遇到了问题。

 

#1 一开始是使用onConfigurationChanged()这个回调,重新Activity里面的这个方法就可以了,简单又方便。用了之后发现,它只能监听,横屏切竖屏的情况。左横屏切右横屏是监听不到的,而且切完之后你也不知道是左横屏还是右横屏。下面是使用onConfigurationChanged()进行监听的简单使用。

@Override
    public void onConfigurationChanged(Configuration newConfig) {
        super.onConfigurationChanged(newConfig);
        if(newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE){
            // 横屏
        }else if(newConfig.orientation == Configuration.ORIENTATION_PORTRAIT){
            // 竖屏
        }
    }

#2 之后又想到了OrientationEventListener来监听屏幕旋转的实时角度,这个非常灵活,手机转动实时角度都会回调出来。下面是使用OrientationEventListener的简单实现。在适当的位置调用enable()和disable()来开启和关闭监听。

class MyOrientationEventListener extends OrientationEventListener {

        private static final int SENSOR_ANGLE = 10;

        public MyOrientationEventListener(Context context) {
            super(context);
        }

        @Override
        public void onOrientationChanged(int orientation) {
            Log.d(TAG, "onOrientationChanged orientation=" + orientation);
            if (orientation == OrientationEventListener.ORIENTATION_UNKNOWN) {
                return;  //手机平放时,检测不到有效的角度
            }

            //下面是手机旋转准确角度与四个方向角度(0 90 180 270)的转换
            if (orientation > 360 - SENSOR_ANGLE || 
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值