Please Enable JavaScript!
Gon[ Enable JavaScript ]

반응형

 

안드로이드에서 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) 삼성 갤럭시 에뮬레이터 테스트 다운받아 이용하기
반응형
Posted by 녹두장군1
,