Android

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

Machine_웅 2018. 4. 28. 19:11
728x90
반응형

 환경: Eclipse Mars, Android 4.2.2

 

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

 


 

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

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

 

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

1
2
3
4
5
6
ImageView img = (ImageView) findViewById(R.id.imgView);
LayoutParams params = (LayoutParams) img.getLayoutParams();
params.width = metrics.widthPixels;
params.height = metrics.heightPixels;
 
img.setLayoutParams(params);

 

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
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 위젯이 추가 되어 있습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<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>



출처: http://mainia.tistory.com/2586 [녹두장군 - 상상을 현실로]

출처: http://mainia.tistory.com/2586 [녹두장군 - 상상을 현실로]

출처: http://mainia.tistory.com/2586 [녹두장군 - 상상을 현실로]

728x90
반응형