관리 메뉴

드럼치는 프로그래머

[안드로이드] 제4강좌 - 메뉴 만들기 본문

★─Programing/☆─Android

[안드로이드] 제4강좌 - 메뉴 만들기

드럼치는한동이 2011. 5. 25. 14:37

@메뉴 만들기

- main.xml 파일이 setContentView(R.layout.main);에 의해서 불려짐.

- android:text="@string/hello" 스트링 폴더의 hello의 text를 출력하라.

 

@@@@  메 뉴  @@@

- 옵션메뉴 : F2를 눌렀을 때 아래서 올라오는 메뉴/서브 메뉴를 가질수 있다.

                 라디오 박스와 같이 체크박스 사용 불가. 아이콘 사용 가능

       최대 6개만 사용 가능. 6개 이상 작성시 5개만 표시되고 나머진 more로 표현됨.

       해당 어플리케이션이 처음 생성될때만 단 한번 생성됨.(어프리케이션 실행중에 변경불가능)

 # onCreateOptionMenu()를 이용하여 생성됨. 이미 생성되어 있는 것이기 때문에 @override로 불러서 사용함.

       옵션메뉴의 항목은 직접 코딩하거나 xml로 불러다가 사용가능.

- 컨텍스트 메뉴 : 위젯을 장시간 누르고 있을때 팝업되는 메뉴/서브 메뉴를 가질수 있다.

                       라디오 박스와 같이 체크박스 사용 가능, 아이콘 사용 불가.

                        해당 위젯에서 롱클릭 할때마다 생성 가능(어플리케이션 실행중에도 수시로 변경 가능)

- 서브메뉴 : 옵셥 메뉴를 눌렀을 때 팝업으로 뜨는 메뉴./서브메뉴의 서브 메뉴를 가질수 없다.

 

@메뉴를 만드는 방법

1. 직접코딩(클래스)

- onCreateOptionMenu(menu.add(   0.     MENU_NEW_GAME.    0,     'NEW GAME'))

 ★ add 메소드의       첫번째 인자:그룹id, 둘째:추가되는 메뉴 항목, 셋째:순서, 넷째:메뉴 항목 타이틀  ★

                                               add(그룹id, 추가되는 메뉴 항목, 순서, 메뉴 항목 타이틀)

- setIcon 매소드 : 아이콘 생성시 사용

- addSubmenu : 서브메뉴를 꾸며줄때 사용, 옵션메뉴 X

 

2. 불러오기(매소드)

★xml로 불러들일 때

- inflate() : xml문서를 해석해서 각각의 위치에 전개 시켜주는 것

                   xml문서마다 각자 다른 inflate가 존재하고 inflate를 실행하기 위해서 inflater가 존재함.

  ex) MenuInflater inflater = getMenuInflater();

        inflater.inflate(R.menu.option.menu);

 

코딩   <menu xmlns:     > //xml 선언부

              <item android:id="@+id/insert-note" //insert-note에 id이름 입력

                       android:title:"Insert note"/>

        </menu>

 

- onOptionsItemSelected 매소드 : 옵션메뉴의 항목(item)을 선택하였을 때 해당항목을 자동연결 시켜줌

- getItemId 메소드 : 선택된 아이템의 아이디를 구별하여 해당 항목 실행(아이드를 끌어옴)

- 아이디를 비교하기 위하여 if문,switch()문을 생성하여야 함       ()안에는 getItemId()를 입력.

 

============================================================================================================================================

과제 1 메뉴 만들기

 


@  src폴더의 andtest.java @

 

package and.test;

import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;

public class Andtest extends Activity { //public 공유가능
    /** Called when the activity is first created. */
 private static final int MENU_TEST=0; //private 개인적인것  final 마지막 상속자  static 변수를 상수로 정할 때
 private static final int MENU_QUIT=1; // 변수형이 앞에온다.
 private static final int MENU_ICON=2;
    @Override
    public boolean onCreateOptionsMenu(Menu menu){ //변경 불가능
     menu.add(0, MENU_TEST, 0, "Test Menu Button"); //그룹 id,메뉴항목 id,순서,메뉴항목 타이틀
     menu.add(0, MENU_QUIT, 0, "Test Quit Button"); //순서를 같게 놓으면 add 한 순서대로 나옴
     menu.add(0, MENU_ICON, 0, "Test Icon BUtton").setIcon(R.drawable.icon);  //아이콘 추가 문구
     return true;  //부울린 값으로 리턴해 줌
    }
   
  
    public boolean onOptionsItemSelected(MenuItem item){
     switch(item.getItemId()){
     case MENU_TEST:
      setContentView(R.layout.test);
      return true;
     case MENU_QUIT:
      setContentView(R.layout.quit);
      return true;
          }
     return false;
    }
   
   
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }
}

 

============================================================================================================================================☆ layout 폴더에 xml 추가 방법 ☆

###  layout->우클릭->NEW->android xml file->next->filename->layout->linearlayout->finish ###

 

@test.xml@

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent">
 
  <TextView android:layout_width="fill_parent"
     android:layout_height="fill_parent"
     android:text="TEST화면"
     android:background="#FF0000FF" />
</LinearLayout>

============================================================================================================================================

@quit.xml@

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent">
 
  <TextView android:layout_width="fill_parent"
     android:layout_height="fill_parent"
     android:text="QUIT화면"
     android:background="#FFFF0000" />
</LinearLayout>
============================================================================================================================================

@ 나타났다가 사라지는 메뉴 만들기 Toast 이용 @



 



package and.test;

import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.Toast;

public class Andtest extends Activity { //public 공유가능
    /** Called when the activity is first created. */
 private static final int MENU_TEST=0; //private 개인적인것  final 마지막 상속자  static 변수를 상수로 정할 때
 private static final int MENU_QUIT=1; // 변수형이 앞에온다.
 private static final int MENU_ICON=2;
    @Override
    public boolean onCreateOptionsMenu(Menu menu){ //변경 불가능
     menu.add(0, MENU_TEST, 0, "Test Menu Button");//그룹 id,메뉴항목 id,순서,메뉴항목 타이틀
     menu.add(0, MENU_QUIT, 0, "Test Quit Button");//순서를 같게 놓으면 add 한 순서대로 나옴
     menu.add(0, MENU_ICON, 0, "Test Icon BUtton").setIcon(R.drawable.icon);//아이콘 추가
     return true;  //부울린 값으로 리턴해 줌
    }
    
    public boolean onOptionsItemSelected(MenuItem item){
     switch(item.getItemId()){
     case MENU_TEST:
      setContentView(R.layout.test);
      Toast.makeText(this,"파란화면을 선택하셨습니다.",Toast.LENGTH_SHORT).show();
      //Toast.makeText(어디에,"보여줄 문장",보여주는 시간).show();

     //Toast를 사용하려면 java에서 import 선언을 해 주어야 한다.
      return true;
     case MENU_QUIT:
      setContentView(R.layout.quit);
      Toast.makeText(this,"빨간화면을 선택하셨습니다.",Toast.LENGTH_SHORT).show();
      return true;

    case MENU_ICON:
      setContentView(R.layout.quit);
      Toast.makeText(this,"아이콘이 사라집니다.",Toast.LENGTH_SHORT).show();
      return true;
          }
     return false;
    }
      
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }
}

============================================================================================================================================


Comments