본문 바로가기

Android/메뉴(Menu)

안드로이드/Android 옵션메뉴(OptionMenu) 사용 예제 ~!


 < 개발 환경 >  
   작성일 : 2013.01.16
   OS 설치 버전 : Windows7 32bit  
   SDK 설치 버전 : 안드로이드 SDK 4.2 (젤리빈) / API LEVEL : 17  
   ADT 설치 버전 : 21   
   Java 설치 버전 : JDK 1.6.0_20 / JRE6 
   이클립스 설치 버전 : Indigo
   테스트단말 : 삼성 갤럭시 S2 4.0.4 (아이스크램 샌드위치)   

 < 프로젝트 적용 > 
   API LEVEL : 8  
   minSdkVersion : 8 
   targetSdkVersion : 8  
   Java Compiler Level : 1.6  
   Text file encoding : UTF-8





안드로이드/Android 옵션메뉴(OptionMenu) 사용 예제 ~!





옵션메뉴(OptionMenu) 사용 예제 입니다.



package arabiannight.tistory.com.optionmenuadd;

import android.net.Uri;
import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.Toast;

public class MainActivity extends Activity {

	final int ONE = 0;
	final int TWO = 1;
	final int THREE = 2;
	final int FOUR = 3;
	final int FIVE = 4;
	final int SIX = 5;
	final int SEVEN = 6;
	final int EIGHT = 7;
	final int NINE = 8;
	final int TEN = 9;
	
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		getMenuInflater().inflate(R.menu.activity_main, menu);
		
		// 아이콘 설정
		menu.add(0, ONE, Menu.NONE, "ONE").setIcon(android.R.drawable.ic_menu_rotate);
		menu.add(0, TWO, Menu.NONE, "TWO").setIcon(android.R.drawable.ic_menu_add);
		menu.add(0, THREE, Menu.NONE, "THREE").setIcon(android.R.drawable.ic_menu_agenda);
		menu.add(0, FOUR, Menu.NONE, "FOUR").setTitle("안녕하세요.!");
		// 알파벳 단축키 지정
		menu.add(0, FIVE, Menu.NONE, "FIVE").setAlphabeticShortcut('F');
		// 더보기 메뉴가 나올경우 setIcon메서드 적용인 안됨.
		menu.add(0, SIX, Menu.NONE, "SIX").setNumericShortcut('5');
		// Menu에서 startActivity(intent) 실행해 준다.
		menu.add(0, SEVEN, Menu.NONE, "SEVEN").setIntent(playVideo());
		// 숫자 단축키 지정
		menu.add(0, EIGHT, Menu.NONE, "EIGHT").setNumericShortcut('9');
		menu.add(0, NINE, Menu.NONE, "NINE");
		menu.add(0, TEN, Menu.NONE, "TEN");
		
		return true;
	}
	
	public Intent playVideo() {
		Intent i = new Intent(Intent.ACTION_VIEW);
        Uri uri = Uri.parse("http://www.youtube.com/embed/EyR9lx92x9A?rel=0");
        i.setDataAndType(uri, "video/*");
        return i;
	}
	
	@Override
	public boolean onOptionsItemSelected(MenuItem item) {
		
		switch (item.getItemId()) {
		case ONE:
			Toast.makeText(MainActivity.this, "ONE", Toast.LENGTH_SHORT).show();
			break;
			
		case TWO:
			Toast.makeText(MainActivity.this, "TWO", Toast.LENGTH_SHORT).show();
			break;
			
		case SIX:
			Toast.makeText(MainActivity.this, "SIX", Toast.LENGTH_SHORT).show();
			break;

		default:
			break;
		}
		
		return super.onOptionsItemSelected(item);
	}

}



Menu.add() 메서드의 매개변수에 대해 알아 보자면,

Menu.add(groupId, itemId, order, title)

groupId : Group ID 이며 Menu에서 제공하는 그룹 속성을 이용하기 위해 설정 한다.

itemId : Menu에서 관리하는 고유한 item ID.

order : item의 순서 (0 ~ 10) 10이 제일 먼저 표시 된다. (10이상 추가 가능)

title : item의 Title.


menu item 변경시 추가해주면 됨 

onPrepareOptionsMenu(Menu menu) 처럼 Menu 매개변수로 받는 곳에서 findItem 가능함.

// menu.findItem(R.id.menu_settings).setIcon(android.R.drawable.ic_delete);



또한 코드에서 Menu.add()로 추가하는 방법 말고도, 프로젝트 폴더에 res -> menu 폴더에 가셔서 아래와 같이 아이템을 추가해 주셔도 옵션메뉴를 추가하실 수 있습니다.





파일첨부 : 

TestOptionMenuAdd.zip



스크린샷 : 




위의 예제 코드를 보시면 옵션메뉴가 6개 이상으로 넘어갈 경우 [더보기] 옵션메뉴가 자동으로 추가 됩니다. [더보기] 옵션메뉴를 선택할 경우 나머지 옵션메뉴들을 확인 할 수 있는데, 만약 옵션메뉴(item)의 배경화면이나, 크기, 색상,  옵션메뉴의 표시 개수를 6개 이상 보여주고 싶다면 옵션메뉴 자체를 Custom해서 사용 하셔야 합니다.


유용하게 활용 하시기 바랍니다.^^


감사합니다.