반응형
안드로이드에서 Matrix 클래스로 이미지를 회전시켜 보겠습니다. 샘플은 리소스에 이미지를 불러와서 Bitmap 클래스로 비트맵을 생성하는 것입니다. 비트맵 생성할 때 Matrix 객체를 인수로 넘기면 됩니다.
▼ ImageView 위젯에 이미지를 세팅하기 위해서는 불러온 리소스 이미지를 비트맵으로 변환해야 합니다. 비트맵으로 변환한 이미지는 setImageBitmap() 함수에 인수로 넘기면 됩니다. 이전에 이미지를 회전시켜야 겠죠. 새로 만든 rotateImage() 함수안에는 이미지 회전을 위해 Matrix 객체를 생성하는 부분이 있습니다. Matrix 객체를 생성할 때 각도를 셋팅하기 위해 postRotate() 함수를 이용합니다. 각도를 변경하기 위한 Matrix 객체가 생성되었다면 Bitmap 클래스의 createBitmap() 함수로 비트맵을 생성합니다.
mImaveView.setImageBitmap(rotateImage(
BitmapFactory.decodeResource(getResources(),R.drawable.diablo), mDegree));
// 이미지 회전 함수
public Bitmap rotateImage(Bitmap src, float degree) {
// Matrix 객체 생성
Matrix matrix = new Matrix();
// 회전 각도 셋팅
matrix.postRotate(degree);
// 이미지와 Matrix 를 셋팅해서 Bitmap 객체 생성
return Bitmap.createBitmap(src, 0, 0, src.getWidth(),src.getHeight(), matrix, true);
}
※ 아래는 참고하면 좋을 만한 글들의 링크를 모아둔 것입니다. ※ ▶ 안드로이드 스튜디오 중요 소스 위치에 북마크 이용하기 ▶ 안드로이드 스튜디오 Android Studio API 레벨 바꾸는 두 가지 ▶ 갤럭시 스마트폰 안드로이드 버전 확인 및 업데이트 하는 방법 ▶ 스마트폰 안드로이드 플레이 스토어 와이파이 에서만 업데이트 설정하기 ▶ 안드로이드(Android) 삼성 갤럭시 에뮬레이터 테스트 다운받아 이용하기 |
▼ 아래 소스는 불러온 리소스 이미지를 회전시키는 rotateImage() 함수가 들어간 전체 소스입니다. 샘플에서는 버튼을 클릭할 때마다 90도씩 시계 방향으로 회전하도록 되어 있습니다.
import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Matrix;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageView;
import com.example.sampleandroidinfo.R;
public class ImageRotateActivity extends Activity {
ImageView mImaveView;
int mDegree = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_image_rotate);
Button button = (Button) findViewById(R.id.btn_alert);
button.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
mDegree = mDegree + 90;
mImaveView = (ImageView) findViewById(R.id.imgRotate);
mImaveView.setImageBitmap(rotateImage(
BitmapFactory.decodeResource(getResources(),
R.drawable.diablo), mDegree));
}
});
}
// 이미지 회전 함수
public Bitmap rotateImage(Bitmap src, float degree) {
// Matrix 객체 생성
Matrix matrix = new Matrix();
// 회전 각도 셋팅
matrix.postRotate(degree);
// 이미지와 Matrix 를 셋팅해서 Bitmap 객체 생성
return Bitmap.createBitmap(src, 0, 0, src.getWidth(),
src.getHeight(), matrix, true);
}
}
▼ 아래 XML 소스는 메인 Activity 화면을 구성할 레이아웃 XML 입니다. 회전시킬 이미지가 위치할 ImageView 위젯과 버튼이 들어가 있습니다.
activity_image_rotate.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="#3F0099"
android:gravity="center"
android:paddingBottom="@dimen/abc_action_bar_icon_vertical_padding"
android:paddingTop="@dimen/abc_action_bar_icon_vertical_padding"
android:text="이미지 회전 시키는 방법"
android:textColor="#FFFFFF" />
<Button
android:id="@+id/btn_alert"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="이미지 회전시키기" />
<ImageView
android:id="@+id/imgRotate"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:src="@drawable/diablo" />
</LinearLayout>
※ 아래는 참고하면 좋을 만한 글들의 링크를 모아둔 것입니다. ※ ▶ 안드로이드 스튜디오 중요 소스 위치에 북마크 이용하기 ▶ 안드로이드 스튜디오 Android Studio API 레벨 바꾸는 두 가지 ▶ 갤럭시 스마트폰 안드로이드 버전 확인 및 업데이트 하는 방법 ▶ 스마트폰 안드로이드 플레이 스토어 와이파이 에서만 업데이트 설정하기 ▶ 안드로이드(Android) 삼성 갤럭시 에뮬레이터 테스트 다운받아 이용하기 |
반응형
'안드로이드 개발' 카테고리의 다른 글
안드로이드 개발 에뮬레이터 카메라 QR 스캔하기 (1) | 2022.11.15 |
---|---|
안드로이드(Android) 레이아웃(Layout) gravity, layout_gravity 차이점을 알아보자. (6) | 2022.11.14 |
안드로이드 개발 이미지 추가하고 화면에 출력하는 방법 (0) | 2022.10.23 |
안드로이드 android.os.NetworkOnMainThreadException 에러, Thread를 사용해야 되는 경우 (1) | 2022.08.02 |
안드로이드 개발 No cached version available for offline mode 에러 해결하기 (0) | 2022.07.19 |
안드로이드 개발 Fragment 생명 주기는 어떻게 되는가? (0) | 2022.06.20 |
[Android] 안드로이드 인터넷 이미지 다운로드 해서 ImageView 표현하기 (2) | 2020.07.12 |
안드로이드(Android) 라이브러리 프로젝트 참조 만들기 (0) | 2020.06.23 |