Russian Qt Forum

Qt => Qt Quick => Тема начата: Bambaleil от Июнь 12, 2018, 16:37



Название: Горизонтальная ориентация на Android
Отправлено: Bambaleil от Июнь 12, 2018, 16:37
Подскажите ,пожалуйста, как приложению на андроиде оставить только горизонтальное расположение?


Название: Re: Горизонтальная ориентация на Android
Отправлено: navrocky от Сентябрь 20, 2018, 08:59
Есть два способа:

1) В AndroidManifest.xml находишь <activity > с классом QtActivity, меняешь свойство android:screenOrientation="unspecified" на то что тебе нужно

Вот возможные значения: https://developer.android.com/guide/topics/manifest/activity-element#screen

2) В Java наследуешь QtActivity, делаешь, к примеру, несколько методов:

Код
Java
public class MainActivity extends QtActivity {
 
   public void setLandscapeOrientation() {
       setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
   }
 
   public void setPortraitOrientation() {
       setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
   }
 
}
 
И вызываешь его через QtAndroidExtras из своего кода, когда тебе надо. Таким способом можно ориентацией экрана динамически управлять.

Код
C++ (Qt)
QtAndroid::androidActivity().callMethod<void>("setLandscapeOrientation", "()V");

Скорее всего можно обойтись и без наследования, а звать метод setRequestedOrientation напрямую, надо просто подобрать сигнатуру вызова и понять как значение enum передать параметром.