개발/책

[안드로이드 프로그래밍] 7장 직접 풀어보기 7-1

Hyunsun 2021. 10. 30. 20:51
728x90
한빛아카데미 Android Studio를 활용한 안드로이드 프로그래밍 6판

 

p.295 직접 풀어보기 7-1

 

[실습 7-1]을 다음과 같이 수정하라.

  • 레이아웃은 RelativeLayout을 사용하고 텍스트뷰, 에디트텍스트, 이미지뷰를 적절히 배치한다.
  • 에디트텍스트에 각도를 입력하고 옵션 메뉴의 [그림 회전]을 선택하면 해당 각도만큼 이미지뷰가 회전한다.
  • 한라산, 추자도, 범섬 옵션 메뉴는 라디오버튼과 같이 3개 중 하나만 체크되고, 메뉴를 선택하면 이미지뷰가 해당 이미지로 바뀐다(이미지나 이미지 이름이 달라도 된다.

 

코드

activity_main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/baseLayout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">
    <ImageView
        android:id="@+id/imageView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:src="@drawable/jeju02"/>
    <EditText
        android:id="@+id/edtAngle"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_toRightOf="@+id/textView1"
        android:text="0" >
    </EditText>

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBottom="@+id/edtAngle"
        android:layout_alignParentLeft="true"
        android:text="각도 입력"
        android:textSize="20dp"/>

</RelativeLayout>

 

menu.xml

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:id="@+id/itemRotate"
        android:title="그림 회전">
    </item>

    <group android:checkableBehavior="single" >
        <item
            android:id="@+id/item1"
            android:checked="true"
            android:title="한라산">
        </item>
        <item
            android:id="@+id/item2"
            android:title="추자도">
        </item>
        <item
            android:id="@+id/item3"
            android:title="범섬">
        </item>
    </group>
</menu>

 

MainActivity.java

package com.cookandroid.test;

import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.widget.EditText;
import android.widget.ImageView;

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

public class MainActivity extends AppCompatActivity {
    EditText edtAngle;
    ImageView imageView1;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        setTitle("제주도 풍경");

        edtAngle=(EditText)findViewById(R.id.edtAngle);
        imageView1=(ImageView) findViewById(R.id.imageView1);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        super.onCreateOptionsMenu(menu);

        MenuInflater mInflater = getMenuInflater();
        mInflater.inflate(R.menu.menu, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(@NonNull MenuItem item) {
        switch (item.getItemId()){
            case R.id.itemRotate:
                imageView1.setRotation(Float.parseFloat((edtAngle.getText().toString())));
                return true;
            case R.id.item1:
                imageView1.setImageResource(R.drawable.jeju02);
                return true;
            case R.id.item2:
                imageView1.setImageResource(R.drawable.jeju14);
                return true;
            case R.id.item3:
                imageView1.setImageResource(R.drawable.jeju6);
                return true;
        }
        return false;
    }

}

 

 

결과

728x90