package com.example.helloandroid;
import android.graphics.Color;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.widget.Button;
import android.widget.LinearLayout;
import androidx.appcompat.app.AppCompatActivity;
@SuppressWarnings("deprecation")
//java코드만을 이용해 액션바 구성하기
public class MainActivity extends AppCompatActivity{
LinearLayout baseLayout;
Button button1;
@Override
public boolean onCreateOptionsMenu(Menu menu) {
super.onCreateOptionsMenu(menu);
MenuInflater mInflater = getMenuInflater();
mInflater.inflate(R.menu.menu, menu);
//super, return: 상위 클래스의 생성자를 실행
//MenuInflater, mInflater: 메뉴 인플레이터 생성, 앞에서 작성한 메뉴xml파일을 등록
return true;
}
//메뉴를 클릭할 때 동작할 메소드 onOptionsItemSelected()를 코딩
//커서를 onCreate()밖에 두고, onOptionsItemSelcted를 자동완성 후 스위치문을 사용
@Override
public boolean onOptionsItemSelected(MenuItem item){
switch(item.getItemId()) {
case R.id.itemRed:
baseLayout.setBackgroundColor(Color.RED);
return true;
case R.id.itemGreen:
baseLayout.setBackgroundColor(Color.GREEN);
return true;
case R.id.itemBlue:
baseLayout.setBackgroundColor(Color.BLUE);
return true;
case R.id.subRotate:
button1.setRotation(45);
return true;
case R.id.subSize:
button1.setScaleX(2);
return true;
}
return false; //자동완성된 return문을 false로
}
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
setTitle("배경색 바꾸기");
baseLayout=(LinearLayout)findViewById(R.id.baseLayout);
button1=(Button)findViewById(R.id.button1);
//옵션 메뉴를 등록하는 메소드 onCreateOptionsMenu()를 부모 클래스인
//activity클래스로부터 오버라이딩한다.
//code메뉴의 android.app.activity 하위의 메소드를 선택
}
}
/////////////////////////////
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:id="@+id/baseLayout"
>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="오른쪽 위 메뉴 버튼을 누르세요"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/button1"
android:text="이건 버튼"/>
</LinearLayout>
<!--메뉴 폴더가 없다면, 생성해야 한다.
app-res에서 new-android Resource Directory를 선택
이 창에서 resource type으로 'menu'를 선택-->
////////////////////////////////
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/itemRed"
android:title="배경색(빨강)"></item>
<item
android:id="@+id/itemGreen"
android:title="배경색(초록)"></item>
<item
android:id="@+id/itemBlue"
android:title="배경색(파랑)"></item>
<item
android:title="버튼 변경 >> ">
<menu>
<item
android:id="@+id/subRotate"
android:title="버튼 45도 회전"/>
<item
android:id="@+id/subSize"
android:title="버튼 2배 확대"/>
</menu>
</item>
</menu>
//메뉴의 xml파일
///////////////////////////////
mainActivity.xml을 쓰지 않고, java만을 이용해 옵션 메뉴 구성하기
onCreateOptionsMenu() 메소드 안에서 xml파일에 접근하는 방법이 아닌,
직접 menu.add()메소드로 메뉴 항목을 추가하는 것
@Override
public boolean onCreateOptionsMenu(Menu menu) {
super.onCreateOptionsMenu(menu);
//두번째로 지정한 항목들은 onOptionsItemSelected()의 case문과 같으면된다. 즉, case 1, 2 등으로 연결됨
menu.add(0, 1, 0, "배경색(빨강)");
menu.add(0, 2, 0, "배경색(초록)");
menu.add(0, 3, 0, "배경색(파랑)");
//서브메뉴 클래스를 이용, 서브메뉴를 만들어 그 항목을 추가
SubMenu sMenu = menu.addSubMenu("버튼 변경 >>");
sMenu.add(0, 4, 0, "버튼 45도 회전");
sMenu.add(0, 5, 0, "버튼 2배 확대");
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
swtich(item.getItemId())
case 1:
baseLayout.setBackgroundColor(Color.RED):
return true;
///이하 같음
'애니리뷰' 카테고리의 다른 글
조합 dfs 형식으로 풀기 (4) | 2021.10.01 |
---|---|
맵 공부 (0) | 2021.02.01 |
에디트텍스트에 url입력시 해당 링크로 이동, 화면과 프로그램 로고와 아이콘 변경 (0) | 2020.08.13 |
액션바를 자바코드만으로 구현 (0) | 2020.08.13 |
직풀 6-3) (0) | 2020.08.13 |