환경: 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 [녹두장군 - 상상을 현실로]
'Android' 카테고리의 다른 글
안드로이드 마시멜로이상 권한 이슈 (0) | 2018.04.29 |
---|---|
구글맵 Marker Option 사용 방법 ( 출처 만 ) (0) | 2018.04.28 |
안드로이드 구글맵 검색 (0) | 2018.04.28 |
안드로이드 구글 맵 API 사용 (0) | 2018.04.27 |
URL 절대경로 가져오기 ( 갤러리에서 사용 ) (0) | 2018.04.25 |