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 |