如何检测屏幕倾斜在安卓



我正在创建一个应用程序,我想检测屏幕倾斜(当我们把我们的手机向右一点点),并希望在这种情况下旋转imageview(90度)。目前我正在使用这段代码,但它只是旋转的imageview在oncreate(当应用程序开始运行)。我想检测屏幕倾斜,然后旋转imageview。如何实现这一目标?如有任何帮助,不胜感激

Sensor accelator;
SensorManager sm;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);
    imageView=(ImageView)findViewById(R.id.iv_demo_img);
    imageView.setBackgroundResource(R.drawable.demoimg);
    relativeLayout=(RelativeLayout)findViewById(R.id.content_main);
    //scaleGestureDetector=new ScaleGestureDetector(this,new ScaleListener());
    setlisteners();
    sm=(SensorManager)getSystemService(SENSOR_SERVICE);
    accelator=sm.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
    sm.registerListener(this,accelator,SensorManager.AXIS_MINUS_X);
}
@Override
public void onSensorChanged(SensorEvent event) {
    Toast.makeText(this, "On Sensor Changed Called", Toast.LENGTH_SHORT).show();
    imageView.setRotation(90);
}
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
}

使用OrientationEventListener.

private OrientationEventListener createOrientationListener() {
    return new OrientationEventListener(this) {
        public void onOrientationChanged(int orientation) {
            System.out.println("orientation................."+orientation);
        }
    };
}

onCreate方法中启动这个监听器。

OrientationEventListener orientationListener = createOrientationListener();
orientationListener.enable();

如果你把你的手机转向正确的方向,它将触发值从1到90。向四面八方转,价值可达360度。因此,您可以根据需要使用此值。

使用后可以禁用。

orientationListener.disable();

最新更新