Как определить НАКЛОН экрана в Android?

#android #rotation

#Android #вращение

Вопрос:

я создаю приложение, в котором я хочу определять наклон экрана (когда мы немного поворачиваем телефон вправо) и в этом случае хотим повернуть imageview (на 90 градусов). в настоящее время я использую этот код, но он просто поворачивает изображение в 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) {

}
  

Ответ №1:

Используйте 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();