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