앱 만들기/안드로이드

옵션 메뉴 만들기

나도 처음이야 2022. 7. 12.

상태표시줄에 옵션 메뉴를 만들어 보겠습니다.

옵션메뉴를 선택하면, 화면이 옵션메뉴에 따라 색상이 변경됩니다.

옵션 메뉴

1. 옵션메뉴를 XML로 구성하기 위해서, res-menu 폴더를 만듭니다.

res 폴더에서 마우스 오른쪽 버튼을 누르고 New->Android Resource Directory 를 선택 후, Resource type 를 menu 로 선택하고 폴더를 만듭니다. 폴더는 res 디렉토리 밑에 menu 라고 생깁니다.

2. menu 폴더에 들어갈 menu.xml 파일 작성하기.

메뉴 폴더에서 마우스 오른쪽 버튼을 선택->New->Menu Resour File 을 선택합니다.

이름을 정하고 OK 버튼을 누릅니다. 해당 xml 파일이 menu 폴더 밑에 생깁니다.

하기 처럼 메뉴를 구성합니다.

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">

    <item
        android:id="@+id/blue"
        android:icon="@drawable/blue"
        android:title="파랑색"
        app:showAsAction="always" />
    <item
        android:id="@+id/green"
        android:icon="@drawable/green"
        android:title="녹색"
        app:showAsAction="always" />
    <item
        android:id="@+id/red"
        android:icon="@drawable/red"
        android:title="레드"
        app:showAsAction="always" />
    <item
        android:id="@+id/orange"
        android:icon="@drawable/orange"
        android:title="오렌지"
        app:showAsAction="never" />
</menu>

4개의 옵션메뉴를 구성했습니다.

app:showAsAction="never" 라고 주면, 화면에 나타나지 않고 더보기 메뉴(:')를 선택시 텍스트 메뉴로 보여집니다.

옵션메뉴 화면 구성은 완료되었습니다.

이제는 옵션메뉴가 코드상에서 동작 하도록 만들어 볼 차례입니다.

 

3. 옵션메뉴 구동 코드 작성하기

옵션메뉴는 Activity 에서 두개의 함수를 오버라이딩 해야합니다.

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    super.onCreateOptionsMenu(menu);
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.menu,menu);
    return true;
}

onCreateOptionsMenu 는 옵션메뉴를 생성하는 함수 입니다.

getMenuInflater()를 통해 메뉴화면을 인플레이트 시켜줍니다. XML 화면을 메모리상에 객체화 하여 올리는 작업을 뜻합니다. 

 

두번째, onCreateOptionsMenu 는 옵션메뉴의 이벤트 액션을 처리해 주는 함수입니다.

@Override
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
    switch(item.getItemId()) {
        case R.id.blue:
            linearLayout.setBackgroundColor(Color.BLUE);
            break;
        case R.id.green:
            linearLayout.setBackgroundColor(Color.GREEN);
            break;
        case R.id.red:
            linearLayout.setBackgroundColor(Color.RED);
            break;
        case R.id.orange:
            linearLayout.setBackgroundColor(Color.parseColor("#ffa500"));
            break;
        default:
            break;
    }
    return super.onOptionsItemSelected(item);
}

옵션 메뉴에 따라 구현 기능을 넣어주면 됩니다.

위에서는 메인화면의 색상을 변경토록 했습니다.

orange 색상의 경우 Color.parseColor() 함수의 인자값으로 #RGB 색상코드 값을 넣었습니다.

해당 내용은 하기 안드로이드 개발자 사이트를 참고드립니다.

public class MainActivity extends AppCompatActivity {

    LinearLayout linearLayout;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        linearLayout = findViewById(R.id.LinearLayout);
    }

옵션메뉴는 하나의 액티비티의 하부에서 동작하는 메뉴입니다.

다음은, 각각의 View 에서 동작을 하는 Context 메뉴를 만들어 보겠습니다.

감사합니다.

반응형

댓글