반응형
공감 및 댓글은 포스팅 하는데 아주아주 큰 힘이 됩니다!! 포스팅 내용이 찾아주신 분들께 도움이 되길 바라며 더 깔끔하고 좋은 포스팅을 만들어 나가겠습니다^^
|
이번 포스팅에서는 LinearLayout, FrameLayout, RelativeLayout에
동적으로 width, height, margin 등의 크기를 설정하는 방법에 대해 알아보겠습니다.
FrameLayout을 예로 하겠습니다.
예) 다이얼로그를 만들건데요. mdpi, hdpi, xhdpi, xxhdpi, xxxhdpi 에 같은 크기로 보이게 하고 싶다면?
어떻게 해야할까요?
동적으로 pixel 값을 다르게 지정해주어서 디바이스에서는 같은 크기로 보이게 하면 되겠죠?
저는 함수를 만들어봤습니다.
public FrameLayout.LayoutParams setFrameMargins(FrameLayout linearLayout, Activity context) {
FrameLayout.LayoutParams params = (FrameLayout.LayoutParams) linearLayout.getLayoutParams();
int width = 0;
int height = 0;
DisplayMetrics metrics = new DisplayMetrics();
context.getWindowManager().getDefaultDisplay().getMetrics(metrics);
Log.d("device dpi", "=>" + metrics.densityDpi);
if (metrics.densityDpi<=160) { // mdpi
width = 260;
height = 156;
} else if (metrics.densityDpi<=240) { // hdpi
width = 420;
height = 234;
} else if (metrics.densityDpi<=320) { // xhdpi
width = 560;
height = 312;
} else if (metrics.densityDpi<=480) { // xxhdpi
width = 840;
height = 468;
} else if (metrics.densityDpi<=640) { // xxxhdpi
width = 1080;
height = 624;
}
params.width = width;
params.height = height;
return params;
}
사용 법은 아래와 같습니다.
FrameLayout dialogLL = findViewById(R.id.dialogLL);
dialogLL.setLayoutParams(setFrameMargins(dialogLL, activity));
별로 어렵지 않죠?
동적 크기 설정은 같은 크기의 margin을 적용해야 할 경우에도 유용하게 사용할 수 있습니다.
margin의 경우는
public FrameLayout.LayoutParams setFrameMargins(FrameLayout frameLayout, Activity context) {
FrameLayout.LayoutParams params = (FrameLayout.LayoutParams) frameLayout.getLayoutParams();
int margin = 0;
DisplayMetrics metrics = new DisplayMetrics();
context.getWindowManager().getDefaultDisplay().getMetrics(metrics);
Log.d("device dpi", "=>" + metrics.densityDpi);
if (metrics.densityDpi<=160) { // mdpi
margin = 12;
} else if (metrics.densityDpi<=240) { // hdpi
margin = 18;
} else if (metrics.densityDpi<=320) { // xhdpi
margin = 24;
} else if (metrics.densityDpi<=480) { // xxhdpi
margin = 36;
} else if (metrics.densityDpi<=640) { // xxxhdpi
margin = 48;
}
params.setMargins(margin, margin, margin, margin);
return params;
}
FrameLayout dialogLL = findViewById(R.id.dialogLL);
dialogLL.setLayoutParams(setFrameMargins(dialogLL, activity));
요로코롬 사용하시면 됩니다 똑같이 ㅋㅋㅋ
이상입니다.
반응형
'안드로이드' 카테고리의 다른 글
안드로이드 strings.xml 에서 underline, bold, text 색상 변경하는 방법 (0) | 2017.10.10 |
---|---|
안드로이드 주변 wifi 목록 검색하기 (2) | 2017.09.21 |
안드로이드 MediaPlayer 로 mp3 파일 재생하기 음악 재생하기 (0) | 2017.09.19 |
안드로이드 bitmap convert to String, String convert to bitmap 비트맵을 문자열로 변환하는 방법 (1) | 2017.09.15 |
안드로이드 RecyclerView 가로 스크롤, landscape scroll 로 만드는 방법 (0) | 2017.09.15 |