Please Enable JavaScript!
Gon[ Enable JavaScript ]

안드로이드(Android) ImageView 사이즈(size) 조절하는 방법

안드로이드 개발

안드로이드(Android) ImageView 사이즈(size) 조절하는 방법

 

 환경: Eclipse Mars, Android 4.2.2

 

이번에는 레이아웃 XML 에서 지정한 ImageView 사이즈를 소스에서 필요한 경우 조절하는 방법에 대해 알아 보겠습니다. 예제는 기기의 넓이와 높이 값을 가져온 후ImageView 의 크기를 맞출 것입니다. 기기 화면의 넓이와 높이 픽셀 값을 가져오는 방법과 ImageView 레이아웃 사이즈를 조절하는 방법을 알 수 있을 겁니다.

 


 

▼ 기기의 해상도 정보를 가져오기 위해 WindowManager 객체를 이용합니다. getMetrics() 함수에 DisplayMetrics 객체를 생성해서 넘깁니다. 그럼 화면 해상도와 밀도, 스케일링 정보가 있는 객체를 담아 줍니다. DisplayMetrics 에서 widthPixels, heightPixels 이 화면 픽셀 정보가 됩니다.

DisplayMetrics metrics = new DisplayMetrics();
WindowManager windowManager = (WindowManager) getApplicationContext()
		.getSystemService(Context.WINDOW_SERVICE);
windowManager.getDefaultDisplay().getMetrics(metrics);

 

▼ 리턴 받은 DisplayMetrics 정보로 ImageView 의 크기를 조절하시면 되겠죠. ImageView 의 가로 세로 값을 조절하기 위해서 LayoutParams 객체를 리턴 받습니다. 그리고 내부에 width, height 속성값을 DisplayMetrics 에 담겨 있는 픽셀 값으로 셋팅 하시면 크기를 변경할 수 있습니다.

ImageView img = (ImageView) findViewById(R.id.imgView);
LayoutParams params = (LayoutParams) img.getLayoutParams();
params.width = metrics.widthPixels;
params.height = metrics.heightPixels;

img.setLayoutParams(params);

 

▼ 아래 소스는 이미지 사이즈를 화면 크기만큼 변경하도록 구현한 것입니다. 전체 소스이며 버튼 클릭 시 사이즈가 변경됩니다.

import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.util.DisplayMetrics;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.LinearLayout.LayoutParams;

import com.example.sampleandroidinfo.R;

public class ImageResizeActivity extends Activity {

	Context mContext;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_image_resize);

		Button button = (Button) findViewById(R.id.btn_alert);
		button.setOnClickListener(new OnClickListener() {

			public void onClick(View v) {

				DisplayMetrics metrics = new DisplayMetrics();
				WindowManager windowManager = (WindowManager) getApplicationContext()
						.getSystemService(Context.WINDOW_SERVICE);
				windowManager.getDefaultDisplay().getMetrics(metrics);

				ImageView img = (ImageView) findViewById(R.id.imgView);
				LayoutParams params = (LayoutParams) img.getLayoutParams();
				params.width = metrics.widthPixels;
				params.height = metrics.heightPixels;

				img.setLayoutParams(params);
			}
		});
	}
}

 

▼ 아래는 메인 Activity 를 구성하는 화면 레이아웃 XML 입니다. 버튼과 이미지를 표현한 ImageView 위젯이 추가 되어 있습니다.

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/LinearLayout2"
    android:layout_width="match_parent"
    android:layout_height="match_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="ImageView 사이즈 조절하는 방법"
        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/imgView"
        android:layout_width="200dp"
        android:layout_height="200dp"
        android:layout_marginTop="10dp"
        android:background="#548745"
        android:src="@drawable/chrysant" />

</LinearLayout>
Posted by 녹두장군

댓글을 달아 주세요

  1. 개발자 2018.01.25 09:43  댓글주소  수정/삭제  댓글쓰기

    감사합니다~