메뉴버튼
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 |
댓글