如何检测android中的颠倒方向?

前端之家收集整理的这篇文章主要介绍了如何检测android中的颠倒方向?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在我的 Android应用程序中我有全景图像,我根据手机运动使用TYPE_ORIENTATION传感器旋转此图像它适用于景观和potrait.这是旋转逻辑的代码.
@Override
public void onSensorChanged(SensorEvent event) {
  switch (event.sensor.getType()) {
  case Sensor.TYPE_ORIENTATION:

    float[] insideval = getValPoints();
    event.values[1]=(float) (event.values[1]*2.8);
    event.values[2]=(float) (event.values[2]*2.8);
    setValPoints(event.values.clone());
        if (insideval != null) {
            float check= insideval[0] - event.values[0];            
            if (-1<=check && check <=1) {
                //Animation stoped      
                this.stopAnimation();
            }else{
                if (getdefaltDeviceOrientation() == ORENTATION_LANDSCAPE) {
                     // Natural Orientation is landscape
                      if (getcurrentDeviceOrientation() == 1) {
                        //ORIENTATION_PORTRAIT
                        startPoint = CGPoint.CGPointMake(insideval[2],insideval[1]);
                                if (insideval[0] < event.values[0]) {
                                    endPoint = CGPoint.CGPointMake(insideval[2]+ event.values[2],insideval[1]);
                                } else if (insideval[0] > event.values[0]) {
                                    endPoint = CGPoint.CGPointMake(insideval[2]- event.values[2],insideval[1]);
                                }
                            } else if (getcurrentDeviceOrientation() == 2) {
                                //Log.i(TAG,"ORIENTATION_LANDSCAPE");
                                startPoint = CGPoint.CGPointMake(insideval[1],insideval[2]);
                                if (insideval[0] < event.values[0]) {
                                    endPoint = CGPoint.CGPointMake(insideval[1]- event.values[1],insideval[2]);
                                } else if (insideval[0] > event.values[0]) {
                                    endPoint = CGPoint.CGPointMake( insideval[1]+event.values[1],insideval[2]);                    
                                }
                            }
                        } else if (getdefaltDeviceOrientation() == ORENTATION_PROTRAIT) {
                            // Natural Orientation is portrait

                            if (getcurrentDeviceOrientation() == 1) {
                                //Log.i(TAG,"ORIENTATION_PORTRAIT");
                                startPoint = CGPoint.CGPointMake(insideval[1],insideval[2]);
                                if (insideval[0] < event.values[0]) {
                                    endPoint = CGPoint.CGPointMake(insideval[1]+ event.values[1],insideval[2]);
                                } else if (insideval[0] > event.values[0]) {
                                    endPoint = CGPoint.CGPointMake(insideval[1]- event.values[1],insideval[2]);
                                }
                            } else if (getcurrentDeviceOrientation() == 2) {
                                //Log.i(TAG,"ORIENTATION_LANDSCAPE");
                                startPoint = CGPoint.CGPointMake(insideval[2],insideval[1]);
                                if (insideval[0] < event.values[0]) {
                                    endPoint = CGPoint.CGPointMake(insideval[2]- event.values[2],insideval[1]);
                                } else if (insideval[0] > event.values[0]) {
                                    endPoint = CGPoint.CGPointMake(insideval[2]+event.values[2],insideval[1]);
                                }
                            }
                        }
                        this.drawView();
                    }
                }

                break;
}
}

所以我的问题是如果设备的方向改变颠倒图像将旋转到错误的方向(完全相反的方向).我如何解决这个问题以及当设备方向发生变化时实际发生了什么?
谢谢.

解决方法

使用设备当前旋转 http://developer.android.com/reference/android/view/Display.html#getRotation()

它返回4个选项之一ROTATION_0,ROTATION_90,ROTATION_180,ROTATION_270

原文链接:https://www.f2er.com/android/309495.html

猜你在找的Android相关文章