본문 바로가기
Android

안드로이드 스튜디오 해상도별 화면 틀어짐 대응해보기(dimen)

by 일용직 코딩노동자 2020. 1. 17.
728x90
반응형

-------------------------------------------------------------------------------------

2023.04.26

ConstraintLayout를 사용하시면 대부분의 해상도 틀어짐은 잡을 수 있습니다.

혹시라도 ConstraintLayout의 기능을 모르시는 분들께서는 먼저 ConstraintLayout에 대해서

공부해보고 저의 게시글을 참고해보시기 바랍니다.

-------------------------------------------------------------------------------------

 

 

 

 

해상도별로 해상도가 다 달라서 네이티브 앱 프로젝트를 진행중이신분들이 많은 고충을 겪으실겁니다.

 

저도 하이브리드만 해보다가 이번에 네이티브 진행하면서 애를 많이 먹었는데요.

 

해상도별로 대응해보는 방법을 알아볼게요.

 

우선 빨간표시부분 클릭하셔서 Android 말고 Project보기로 해주세요.

 

이렇게 해주시면 됩니다.

 

그럼 이런화면이 나오는데 여기서 res폴더를 오른쪽 클릭해주세요.

 

그럼 사진처럼 진행하셔서 Android Resource Directory를 클릭해주세요.

 

여기에다가 빨간 밑줄친 부분에 이름을 적어주면되는데요.

 

같은 방법으로 아래이름으로 5개를 만들어주세요.

 

values-hdpi

values-mdpi

values-xhdpi

values-xxhdpi

values-xxxhdpi

 

 

그러면 이렇게 폴더가 생성이 됩니다.

 

이렇게 사진처럼 폴더 오른쪽을 클릭하셔서 Values resource file를 클릭해주세요.

 

저는 이렇게 dimens로 이름을 지었습니다. (다른분은 dimen이라고 짓는분도 계신거같은데 크게 상관없는거같습니다)

 

이 방법으로 

 

values-hdpi

values-mdpi

values-xhdpi

values-xxhdpi

values-xxxhdpi

 

이 폴더들에 전부다 dimens파일을 생성해주세요.

 

그럼 이제 다시 Project보기로 했던걸 다시 Android보기로 변경해주세요.

 

그럼 res-values폴더안에 이렇게 dimens폴더가있는데 펼쳐보시면 저희가 방금 만들어놓은 해상도별 

hdpi / mdpi / xhdpi / xxhdpi / xxxhdpi 이렇게 5개가 존재합니다.

 

하나 들어가볼게요. 예제로

 

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <dimen name="auto_left">40dp</dimen>
    <dimen name="pw_left">14dp</dimen>
    <dimen name="id_left">34dp</dimen>
    <dimen name="login_top">110dp</dimen>
    <dimen name="member_left">16dp</dimen>

</resources>

이런식으로 정의를 해봤습니다.

 

이제 dp를 지정했으니 이걸 xml(레이아웃)에 가서 써먹어볼게요.

 

<TextView
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:layout_marginLeft="@dimen/member_left"
  android:layout_marginTop="60dp"
  android:text="아이디"
  android:textSize="14sp"
  android:textColor="#ffffff">
</TextView>

이렇게 marginLeft에 보시면 @dimen/member_left 라고 제가 위에서 정의해놓은걸 불러왔어요.

 

이걸 이제 해상도별로 dp를 다 다르게 적용하셔서 해상도에 대응해보았습니다.

 

xxhdpi에는 10dp

xxxhdpi에는 20dp

이런식으로 다르게 적용하는 방법입니다.

 

그럼 안드로이드가 해상도를 인식하여 그에맞는 dimen을 인식해서 불러옵니다.

 

ㄱ ㅏ   ㄱ  푸시

ㅗ o    ㅗ  푸시 :D

 

궁금하신 사항은 댓글 남겨주세요. 

728x90
반응형

댓글