poniedziałek, 10 lutego 2014

Wyłączenie obracania ekranu w aplikacji


Podczas obracania ekranu następuje automatyczne wywołanie metod onPause, onSaveInstance, onStop a następnie onRestoreInstance i onResume. Zasadniczo zawartość pól takich jak komponenty klasy EditText nie „czyszczą” się, wszystko wraca do pierwotnej postaci po obrocie ekraniu. Nie dotyczy to pól takich klas jak TextView ani zdeklarowanych przez nas zmiennych. Wszystko jest zerowane do takiej postaci jak przy uruchomieniu aplikacji. Oczywiście możemy zaimplementować metody onSaveInstance i onRestoreInstance, a następnie przekazywać dane które mają zostać odtworzone przez obiekt klasy Bundle, jednak przy większej ilości zmiennych może to być czasochłonne. Innym wyjściem jest zablokowanie możliwości obracania ekranu. Zachowanie jak przy resetowaniu aplikacji w ogóle nie będzie miało wtedy miejsca. Niektóre aplikacje wymagają jakiejś określonej pozycji ekranu bez jej obracania. Np. dziwnie by się oglądało film wyświetlany na pionowo ustawionym ekranie. Całość sprowadza się do dodania wpisu

android:screenOrientation="portrait"



W elementcie Application w pliku manifestu. Powyższe ustawnienie (portrait) blokuje ekran w pozycji pionowej, można też ustawić na landscape – czyli poziome. Podgląd na element aplpication, czyli jak to jest zmontowane całe:



<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.example.gpsinfo.MainActivity"
android:label="@string/app_name"
android:screenOrientation="portrait"
>
<intent-filter>
<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>



4 komentarze:

  1. android:screenOrientation="portrait" dodaje się w elemencie activity, a nie tak jak napisałeś "W elemencie Application" (chyba, że coś nie tak zrozumiałem :) ).
    Natomiast przykład jest dobry ;D.

    OdpowiedzUsuń
    Odpowiedzi
    1. activity jest elementem Application więc to tak jakby android:screenOrientation="portrait" dodawało się w elemencie Application ;)

      Usuń
  2. Dzięki. Tego szukałem.

    OdpowiedzUsuń
  3. U mnie blokada działa ale ekran aplikacji mam do góry nogami.

    OdpowiedzUsuń