본문 바로가기

대학교 과제/모바일프로그래밍 [ 2 - 2 ]

[모바일 프로그래밍 과제] - 3주차 (연습문제 9, setRotation())

반응형

1.과제 안내문, 예시 출력화면


"회전하기" 버튼을 누르면 버튼을 한 번 누를 때마다 하단의 사진이 10도씩 시계방향으로 회전하도록 프로젝트를 구성하라. 하단의 사진은 자신의 셀카(selfie)를 찍어서 적당한 크기로 편집하여 사용한다.(아래 예에서는 300x186 크기의 그림 파일을 사용했다.)

 

예시 출력 화면


 자바과목을 들었을 때는 (같은교수님 이셨다.) 그날 배운 문법만으로 해결할 수 있는 과제를 내주셨는데, 이번 수업은 스스로 구글링을 해봐야 문제를 해결할 수 있다. ImageView를 화면 중앙에 맞추는 법이라던가, 회전시키는 방법들이 이에 해당한다. 전자는 깔끔하지 못하게 margin값을 주는 것으로 해결하였고 후자는 serRotation() 메소드를 활용하였다.

 

2. 코드 구성

 

 이번과제에서 위젯들을 구성하는 것은 그렇게 어렵지 않다. Button, ImageView가 전부이기 때문이다. 다음은 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:orientation="vertical"
    tools:context=".MainActivity">

  <Button
      android:layout_width="match_parent"
      android:layout_height="wrap_content"
      android:text="회전하기"
      android:id="@+id/btn1"
      />
    <ImageView
        android:layout_width="300dp"
        android:layout_height="186dp"
        android:id="@+id/Img"
        android:visibility="visible"
        android:src="@drawable/picture1"
        android:layout_margin="60dp"
        />
  
</LinearLayout>

 

 ImageView같은 경우 사용해야할 이미지를 res파일 하단에 있는 drawable 폴더에 저장해야 사용할 수 있다. 그렇게 사진을 저장한 후 src = "@drawable/(사진 이름)" 과 같은 형식으로 사용할 수 있다. 뒤에 확장자를 붙이는 사람도 있고 안 붙이는 사람도 있지만 이는 경우에 따라 다르기에 오류가 나지 않는 방법으로 사용하길 권장한다. 다음은 MainActivity 파일이다.

 

package com.cookandroid.assignmen_3;
import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;

public class MainActivity extends AppCompatActivity {

    Button btn;
    ImageView img;
    float degree = 10;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        setTitle("그림 회전 예제");

        btn = (Button)findViewById(R.id.btn1);
        img = (ImageView) findViewById(R.id.Img);
        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                degree = degree + 10;
                img.setRotation(degree);
            }
        });
    }
}

 

 여기서 중요한 점은 setRotation() 메소드이다. 이 메소드를 잠시 설명하자면, setRotation()안에 인수로 주는 값을 주면 그 값만큼 이미지가 회전된다. 인수는 float값이다. 예를들어 setRotation(90.0) 이라는 메소드를 실행시키면 사진은 90도 회전된다. 회전 값을 degree라는 변수로 계산한 이유는 이전 각도에서 10도씩 추가되어야하기 때문이다.

 

3. 결어

 

 Django라는 웹개발 언어를 공부해야하는 일이 생겼다. 다른 카테고리에 꾸준히 올렸으면 좋겠다.

반응형