2015-04-05 6 views
0

Предположим, у вас есть изображение небоскреба в ImageView. В портретном режиме небоскреб направлен вверх, как обычно.Как я могу заставить ImageView поворачивать изображение, когда устройство поворачивается с портрета/пейзажа?

По умолчанию, если вы поворачиваете ландшафт устройства, небоскреб по-прежнему будет направлен вверх.

Мой желаемый результат - для небоскреба следить за ориентацией устройства, поэтому он будет указывать сбоку.

Я не могу на всю жизнь найти решение.

В принципе, у меня есть полноэкранное фоновое изображение, которое хорошо выглядит независимо от того, как оно повернуто. Я хочу использовать scaleType centerCrop, чтобы он заполнял экран, и поскольку изображение не вращается, оно «масштабируется», так сказать, чтобы заполнить ландшафтный экран портретным изображением.

enter image description here

+0

Если это на самом деле все, что вам нужно, тогда вы можете просто заблокировать ориентацию экрана (но я предполагаю, что вы хотите сделать больше, чем это). – Suragch

ответ

3

Попробуйте повернуть изображение на конфигурации изменилось:

@Override 
public void onConfigurationChanged(Configuration newConfig) { 
    super.onConfigurationChanged(newConfig); 

    // Checks the orientation of the screen 
    if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) { 
     Toast.makeText(this, "landscape", Toast.LENGTH_SHORT).show(); 
    } else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT){ 
     Toast.makeText(this, "portrait", Toast.LENGTH_SHORT).show(); 
    } 
} 

Вы, возможно, придется добавить эти строки в AndroidManifest.xml сказать системе вы обработки изменения конфигурации себя:

<activity 
android:name="MainActivity" 
android:configChanges="keyboardHidden|orientation|screenSize"> 
+0

Как сказано выше. Для поворота изображения используйте [этот ответ.] (Http://stackoverflow.com/a/10104318/3455196) – Siri0S

0

Добавить android: screenOrientation = "портрет" под действие вашего AndroidManifest.xml.

Смежные вопросы