Android Studio를 활용한 안드로이드 프로그래밍 P295 직접 풀어보기 7-1
RelativeLayout과 텍스트뷰, 에디트텍스트뷰, 이미지뷰, 옵션메뉴를 적절히 배치하여 아래와 같은 앱을 작성하시오.
순서: 각도입력-> 사진선택-> 그림 회전
* 각 동물이름 메뉴 선택 시 라디오버튼 처럼 한개의 메뉴만 선택할 수 있어야하고, 체크가 되어야됨
activity_main XML코드
렐러티브 레이아웃을 사용해야하므로 텍스트뷰, 에디트텍스트, 이미지뷰의 위치를 잘 구성해야합니다.
회전된 화면이 에디트텍스트란을 덮지 않게 이미지뷰의 위치를 중앙에 배치합니다.
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="각도 입력"
android:id="@+id/textView1"/>
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="입력하세요."
android:layout_toRightOf="@+id/textView1"
android:layout_alignBaseline="@+id/textView1"
android:id="@+id/Edit1"/>
<ImageView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/imgView"
android:visibility="invisible"
android:scaleType="fitXY"
android:layout_centerInParent="true"/>
</RelativeLayout>
menu XML코드
메뉴의 목록에서 동물이름끼리 모아서 각각을 라디오 버튼처럼 생성하려면 group을 이용해야합니다.
checkableBehavier="single" 코드를 통해 하나만 체크할 수 있습니다.
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:title="그림 회전"
android:id="@+id/rotate"/>
<group
android:checkableBehavior="single">
<item
android:id="@+id/lion"
android:title="사자" />
<item
android:id="@+id/dog"
android:title="개" />
<item
android:id="@+id/cat"
android:title="토끼" />
</group>
</menu>
MainActivity
onCreateOptionsMenu메소드를 통해 메뉴의 내용을 XML파일로부터 읽어오고,
onOptionsItemSelected 메소드는 메뉴를 선택했을 때 어떤 동작을 할 것인지를 코딩합니다.
회전을 선택하면 에디트텍스트에 입력된 각도만큼 회전하며,
각 동물이름 선택 시 라디오버튼 처럼 체크하기 item.setChecked(true)코드를 작성합니다. (*이 코드 미작성 시 체크안됨)
package com.example.practice7_1;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import android.media.Image;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.widget.EditText;
import android.widget.ImageView;
import java.security.acl.Group;
import java.util.zip.Inflater;
public class MainActivity extends AppCompatActivity {
EditText edit1;
ImageView img;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
edit1=(EditText)findViewById(R.id.Edit1);
img=(ImageView)findViewById(R.id.imgView);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
super.onCreateOptionsMenu(menu);
MenuInflater inflater=getMenuInflater();
inflater.inflate(R.menu.menu1,menu);
return true;
}
@Override
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
switch(item.getItemId())
{
case R.id.rotate:
img.setRotation(Integer.parseInt(edit1.getText().toString()));
break;
case R.id.lion:
item.setChecked(true);
img.setImageResource(R.drawable.lion);
img.setVisibility(View.VISIBLE);
break;
case R.id.dog:
item.setChecked(true);
img.setImageResource(R.drawable.dog);
img.setVisibility(View.VISIBLE);
break;
case R.id.cat:
item.setChecked(true);
img.setImageResource(R.drawable.rab);
img.setVisibility(View.VISIBLE);
break;
}
return true;
}
'Android Studio를 활용한 안드로이드 프로그래밍' 카테고리의 다른 글
직접 풀어보기 7-3 (0) | 2020.05.19 |
---|---|
직접 풀어보기 7-2 (4) | 2020.05.19 |
직접 풀어보기 6-3 (5) | 2020.05.11 |
직접 풀어보기 6-2 (2) | 2020.05.04 |
직접 풀어보기 6-1 (1) | 2020.05.03 |