본문 바로가기

Dev/안드로이드

안드로이드 프로그래밍 7장 실습 7-1

728x90
반응형
Android Studio를 활용한 안드로이드 프로그래밍
국내도서
저자 : 우재남,박길식
출판 : 한빛아카데미 2020.01.08
상세보기

한빛아카데미 IT COOKBOOK 276 Android Studio를 활용한 안드로이드 프로그래밍 5판 p.287

배경색 변경 앱 만들기

 

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/baseLayout"
    tools:context=".MainActivity">

    <TextView
        android:layout_width="wrap_content"
        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>

 

activity_main의 코딩은 이전보단 매우 간단합니다. 나타낼 속성들이 별로 없기 때문입니다.

 

activity_main.xml 동작 화면

 

 

menu1.xml

<?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>

 

버튼과 관련된 속성들은 메뉴 안에 다시 아이템 속성으로 선언해주었습니다.

 

그렇게 되면 아래와 같이 버튼 변경이라는 버튼이 만들어지고 다시 클릭하게 되면 안에 있는 회전과 확대 버튼이 보입니다.

 

menu1.xml 동작 화면

 

MainActivity.java

package com.cookandroid.project7_1;

import androidx.appcompat.app.AppCompatActivity;

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;

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.menu1, menu);
        return true;
    }

    @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;
    }

    @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와 onOptionsItemSelected 메소드를 맨 위의 Code 메뉴에서 오버라이드했고,

 

button1의 동작과 Layout의 색상을 변경하기 위해 onCreate 메소드에서 선언해주었습니다.

 

Android Studio AVD 실행화면

어플리케이션 build 결과

 

728x90
반응형

"); wcs_do();