Mendeteksi dan Mengontrol Orientasi Activity

Mendeteksi Orientasi Activity

Terkadang kita perlu mengetahui orientasi layar perangkat saat runtime. Untuk menentukannya, kita bisa menggunakan class ‘WindowManager’. Potongan kode berikut akan menunjukkan bagaimana kita bisa mendeteksi orientasi activity kita saat ini.
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

/*ambil info tampilan*/
WindowManager windowManager = getWindowManager();
Display display = windowManager.getDefaultDisplay();
Point size = new Point();
display.getSize(size);

if (size.x > size.y) {
/*landscape*/
Log.d("Orientasi", "Landscape");
} else {
/*portrait*/
Log.d("Orientasi", "Portrait");
}
}
Mengontrol Orientasi Activity

Terkadang, kita mungkin ingin memastikan bahwa app kita ditampilkan hanya dengan orientasi tertentu. Misalkan, kita mungkin akan menuliskan kode untuk game yang hanya dilihat dengan landscape. Dalm hal ini, kit abisa memaksakan orientasi dengan menggunakan method ‘setRequestOrientation()’ dari class Activity seperti berikut:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

/*mengubah ke landscape*/
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
}
Untuk mengubah ke portrait, kita bisa menggunakan konstanta: ‘ActivityInfo.SCREEN_ORIENTATION_PORTRAIT’.

Alternatifnya selain menggunakan method ‘setRequestOrientation()’, kita juga bisa menggunakan atribut ‘android:screenOrientation’ di elemen di dalam file ‘AndroidManifest.xml’ seperti berikut:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="id.co.blogspot.diansano.apppertama">

<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity"
android:screenOrientation="landscape">
<intent-filter>
<action android:name="android.intent.action.MAIN" />

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

</manifest>
Contoh di atas membatasi activity hanya berjalan pada orientasi tertentu saja (di dalam contoh tersebut adalah landscape) dan mencegah actvity untuk di-destroy; sehingga activity tidak akan di-destroy dan method ‘onCreate()’ tidak akan dipicu lagi ketika ada perubahan orientasi perangkat.

No comments: