상세 컨텐츠

본문 제목

[안드로이드]바로가기메뉴(ContextMenu) 바탕화면 변경해보기

안드로이드

by aries574 2021. 1. 9. 18:34

본문


2021/01/05 - [안드로이드] - [안드로이드] 다이얼로그(Dialog) 리스트(List)로 보여주는 방법

2021/01/06 - [안드로이드] - [안드로이드]다이얼로그(Dialog) 체크박스(CheckBox)로 보여주기

2021/01/07 - [안드로이드] - [안드로이드] 다이얼로그(Dialog) 사용자정의 (Custom) 화면으로 보여주기

2021/01/08 - [안드로이드] - [안드로이드]프래그먼트(Fragment) 간의 데이터 전달방법(Listener)


이번 시간에는 바로가기메뉴(ContextMenu)를 만들어 보겠습니다. 

빨강,파랑,녹색 메뉴를 만들어서 해당 메뉴를 누르면 바탕화면이 변경되는 간단한 예제입니다.

바로가기메뉴는 버튼을 꾹 눌러줘야 실행이 됩니다.


1-1 메뉴폴더 생성 res -> New -> Android Resource Directory




1-2 메뉴파일 생성 res -> menu -> New -> Menu Resource File

파일명은 context_menu로 하겠습니다.


context_menu.xml

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/menu_red"
android:title="빨간화면"
/>
<item
android:id="@+id/menu_blue"
android:title="파란화면"
/>
<item
android:id="@+id/menu_green"
android:title="녹색화면"
/>
</menu>


2. 메인화면 구현(activity_main.xml)

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/rootView"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">

<Button
android:id="@+id/btn_context"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:text="Context Menu" />

</RelativeLayout>


3. 메인코드 구현(MainActivity.java)


import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import android.graphics.Color;
import android.os.Bundle;
import android.view.ContextMenu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.RelativeLayout;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {

private Button btn_context;
private RelativeLayout rootLayout;

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

btn_context = findViewById(R.id.btn_context);

btn_context.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(getApplicationContext(), "꾸욱 눌러주세요", Toast.LENGTH_SHORT).show();
}
});

rootLayout = findViewById(R.id.rootView);

//컨텍스트메뉴 연결
registerForContextMenu(btn_context);
}

//컨텍스트메뉴 설정 메소드
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);

MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.context_menu, menu);
}

//컨텍스트 메뉴에서 메뉴를 선택했을때 실행되는 메소드
@Override
public boolean onContextItemSelected(@NonNull MenuItem item) {

switch(item.getItemId()){
case R.id.menu_red:
rootLayout.setBackgroundColor(Color.RED);
return true;

case R.id.menu_blue:
rootLayout.setBackgroundColor(Color.BLUE);
return true;
case R.id.menu_green:
rootLayout.setBackgroundColor(Color.GREEN);
return true;
default:
return super.onContextItemSelected(item);
}
}
}


4. 실행화면


2021/01/05 - [안드로이드] - [안드로이드] 다이얼로그(Dialog) 리스트(List)로 보여주는 방법

2021/01/06 - [안드로이드] - [안드로이드]다이얼로그(Dialog) 체크박스(CheckBox)로 보여주기

2021/01/07 - [안드로이드] - [안드로이드] 다이얼로그(Dialog) 사용자정의 (Custom) 화면으로 보여주기

2021/01/08 - [안드로이드] - [안드로이드]프래그먼트(Fragment) 간의 데이터 전달방법(Listener)

반응형

관련글 더보기

댓글 영역