Pages

Friday, August 29, 2014

Cara Menonaktifkan Layar Auto-Rotation di Android

Secara default, kebanyakan aplikasi Android akan mengikuti perubahan orientasi layar secara ototamis ketika pengguna memutar perangkat android mereka. Misal dari potrait ke landscape atau sebaliknya. Bagi kebanyakan aplikasi hal ini tidak terlalu mempengaruhi aplikasi tersebut, baik dari sisi kinerja maupun tampilan aplikasi. Tetapi bagaimana jika sebuah aplikasi diharuskan untuk terkunci pada salah satu orientasi layar tertentu ketika aplikasi tersebut dijalankan dan melepaskannya kembali ke pengaturan orientasi layar awal ketika pengguna keluar dari aplikasi tersebut?

Misalkan pada sebuah game yang mengharuskan layar terkunci pada orientasi landscape yang akan membuat pengguna lebih nyaman untuk memainkan game tersebut. Dan pertanyaannya sekarang, bagaimana cara menonaktifkan layar auto-rotation pada perangkat android dengan kode program?


Untuk mengunci layar pada orientasi tertentu secara dinamik, memilih antara potrait atau landscape pada saat runtime, anda dapat menggunakan method ini Activity#setRequestedOrientation().


Dibawah ini adalah contoh method yang berguna untuk mengunci orientasi layar ke mode potrait pada saat runtime.

protected void setOrientation() {
    int current = getRequestedOrientation();
    // only switch the orientation if not in portrait
    if ( current != ActivityInfo.SCREEN_ORIENTATION_PORTRAIT ) {
        setRequestedOrientation( ActivityInfo.SCREEN_ORIENTATION_PORTRAIT );
    }
}

Untuk mengunci orientasi layar ke mode potrait pada saat sebuah Activity sedang berjalan, panggil method setOrientation() melalui method onCreate() dari Activity tersebut.

Dibawah ini merupakan contoh program android sederhana yang mengimplementasikan method diatas.

MainActivity.java
package com.sample.disableautorotation;

//rizki-java.blogspot.com

import android.content.pm.ActivityInfo;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v7.app.ActionBarActivity;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;

public class MainActivity extends ActionBarActivity {

 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);

  // invoke setOrientation() method to make this Activity locked on
  // Potrait mode
  this.setOrientation();

  setContentView(R.layout.activity_main);

  if (savedInstanceState == null) {
   getSupportFragmentManager().beginTransaction()
     .add(R.id.container, new PlaceholderFragment()).commit();
  }
 }

 /** used to lock screen orientation to be Potrait */
 protected void setOrientation() {
  int current = getRequestedOrientation();

  // only switch the orientation if not in portrait
  if (current != ActivityInfo.SCREEN_ORIENTATION_PORTRAIT) {
   setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
  }
 }

 @Override
 public boolean onCreateOptionsMenu(Menu menu) {

  // Inflate the menu; this adds items to the action bar if it is present.
  getMenuInflater().inflate(R.menu.main, menu);
  return true;
 }

 @Override
 public boolean onOptionsItemSelected(MenuItem item) {
  // Handle action bar item clicks here. The action bar will
  // automatically handle clicks on the Home/Up button, so long
  // as you specify a parent activity in AndroidManifest.xml.
  int id = item.getItemId();
  if (id == R.id.action_settings) {
   return true;
  }
  return super.onOptionsItemSelected(item);
 }

 /**
  * A placeholder fragment containing a simple view.
  */
 public static class PlaceholderFragment extends Fragment {

  public PlaceholderFragment() {
  }

  @Override
  public View onCreateView(LayoutInflater inflater, ViewGroup container,
    Bundle savedInstanceState) {
   View rootView = inflater.inflate(R.layout.fragment_main, container,
     false);
   return rootView;
  }
 }

}

Download: DisableAutoRotation.zip (source code), atau lihat Dokumentasi lengkap.

Posting lainnya dari Java Zone:

No comments:

Post a Comment

Related Posts Plugin for WordPress, Blogger...