Android Studio를 활용한 안드로이드 프로그래밍 P301 직접 풀어보기 7-2


ContextMenu를 이용해 아래의 앱을 만드는데, 컨텍스트 메뉴XML파일 없이 JAVA코드로만 완성하시오.




XML코드

<?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:gravity="center_horizontal"
android:id="@+id/baseLayout">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/button1"
android:text="배경색 변경"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/button2"
android:text="버튼변경"/>



</LinearLayout>


MainActivity 코드

위젯별로 컨텍스트 메뉴가 나타나야 하므로, 메뉴파일 등록클래스(onCreateContextMenu)내부에

위젯별 컨텍스트 메뉴를 if문으로 등록합니다.

package com.example.a7_2test;

import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;

import android.graphics.Color;
import android.os.Bundle;
import android.view.ContextMenu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.LinearLayout;

public class MainActivity extends AppCompatActivity {
Button button1,button2;
LinearLayout baseLayout;
@Override
protected 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);
registerForContextMenu(button1);
button2=(Button)findViewById(R.id.button2);
registerForContextMenu(button2);
}

@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
if(v==button1){
menu.add(0,1,0,"배경색(빨강)");
menu.add(0,2,0,"배경색(초록)");
menu.add(0,3,0,"배경색(파랑)");}
if(v==button2){
menu.add(0,4,0,"버튼45도회전");
menu.add(0,5,0,"버튼 2배확대");}
}

@Override
public boolean onContextItemSelected(@NonNull MenuItem item) {
switch(item.getItemId())
{
case 1:
baseLayout.setBackgroundColor(Color.RED);
break;
case 2:
baseLayout.setBackgroundColor(Color.GREEN);
break;
case 3:
baseLayout.setBackgroundColor(Color.BLUE);
break;
case 4:
button1.setRotation(45);
break;
case 5:
button1.setScaleX(2);
break;
}
return true;
}
}



'Android Studio를 활용한 안드로이드 프로그래밍' 카테고리의 다른 글

직접 풀어보기 8-1  (0) 2020.05.20
직접 풀어보기 7-3  (0) 2020.05.19
직접 풀어보기 7-1  (0) 2020.05.18
직접 풀어보기 6-3  (5) 2020.05.11
직접 풀어보기 6-2  (2) 2020.05.04

+ Recent posts