Programming Language/Android Programming

메뉴버튼

D4tai1 2018. 10. 9.

1. 메뉴버튼

1) 메뉴 리소스의 디렉토리 생성

- [res]디렉토리 우클릭 후 [New - Directory] 를 클릭한다.

- 이 과정은 리소스 중 메뉴리소스를 저장할 디렉토리를 생성하는 것이다.

 

2) 메뉴 디렉토리 이름 지정

- 메뉴디렉토리를 생성하려고 하는데 먼저 만들어서 이미 있는이름이라고 나온다.

 

3) 메뉴 리소스 생성방법

- [res - menu] 디렉토리를 우클릭하여 [New - Menu resource file]을 클릭한다.

 

4) 메뉴 리소스 파일 생성

- .xml파일로 만든다.

 

5) 메뉴목록 디자인

- [Menu] 레이아웃 내에 [Menu Item] 3개와 서브 [Menu] 레이아웃 1개가 있고 그 안에 [Menu Item] 2개가 있다. 

- [Menu Item] 3개의 id는 [item(색상)] 으로 적고, title은 [바탕색(색상)]으로 적는다.

- 서브 [Menu] 레이아웃의 title은 [버튼변경]으로 적는다.

- 서브 [Menu] 레이아웃 내의 [Menu Item] 1개의 id는 [itemRotate]로 적고 title은 [버튼 45도 회전]으로 적는다.

- 서브 [Menu] 레이아웃 내의 [Menu Item] 1개의 id는 [itemSize]로 적고 title은 [버튼 크기 변경]으로 적는다.

 

6) 메인 화면

- LinearLayout의 id를 [linearLayout1]로 적는다.

- orientation의 속성은 [vertical]로 적는다. 

 

- 중앙정렬을 위해 gravity 속성을 center로 부여한다.

 

7) 각 메뉴목록에 대한 기능구현

- MainActivity.java 소스에서 메소드 밖에서 [우클릭 - Generate]을 클릭한다.

 

- Override Methods 를 누른다.

 

- onCreateOptionsMenu() 를 검색한다.

 

- onOptionsItemSelected() 를 검색한다.

 

※ 여기까지 2개의 메소드를 불러왔다.

 - onCreateOptionMenu() 메소드는 Menu.xml과 MainActivity.java를 연동하기 위해 사용한다.

 - onOptionsItemSelected() 메소드는 클릭한 메뉴목록을 받아 메뉴목록에 따른 동작을 서술한다.

 

8) 서브메뉴 레이아웃에 2개 기능추가 

- 위와 같은 방식으로 [Menu Item] 2개를 만들고 위와 같이 id와 title을 부여한다.

 

9) MainActivity.java의 소스

package com.example.d4tai1.pro20181008a_1;

import android.graphics.Color;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.widget.Button;
import android.widget.LinearLayout;

public class MainActivity extends AppCompatActivity {

    LinearLayout linearLayout;
    Button button;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        linearLayout= (LinearLayout)findViewById(R.id.linearLayout1);
        button = (Button)findViewById(R.id.button1);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        MenuInflater mInflater = getMenuInflater();
        mInflater.inflate(R.menu.menu1,menu);
        //menu와 MainActivity.java와 연동
        return super.onCreateOptionsMenu(menu);
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        //(MenuItem item) 을 넘겨받아
        switch(item.getItemId()) {
            case R.id.itemRed:
                linearLayout.setBackgroundColor(Color.RED);
                return true;    //정상적으로 실행되었음을 반환
            case R.id.itemGreen:
                linearLayout.setBackgroundColor(Color.GREEN);
                return true;    //정상적으로 실행되었음을 반환
            case R.id.itemBlue:
                linearLayout.setBackgroundColor(Color.BLUE);
                return true;    //정상적으로 실행되었음을 반환
            case R.id.itemRotate45:
                button.setRotation(45); //45도 방향 전환
                return true;
            case R.id.itemRotate0:
                button.setRotation(0);  //방향 원래대로 전환
                return true;
            case R.id.itemSize1:
                button.setScaleX(2);    //버튼의 크기 변경 2배
                return true;
            case R.id.itemSize2:
                button.setScaleX(1);    //버튼의 크기 변경 원래대로
                return true;

        }
        return super.onOptionsItemSelected(item);
    }
}

 

 

10) 실행

- 색상 중 한 가지를 클릭하여 변경이 가능하다.

 

- 버튼회전과 크기증가가 모두 가능하다.

- 변경 후 복원할 수 있다.

'Programming Language > Android Programming' 카테고리의 다른 글

다중메뉴  (0) 2018.10.09
메뉴 라디오버튼  (3) 2018.10.09
계산기, 예약  (0) 2018.09.18
레이아웃  (0) 2018.09.14
체크박스, 스위치, 토글, 라디오  (0) 2018.09.04

댓글