잡다한 프로젝트/안드로이드

<안드로이드 개발> 화면 잘리는 문제 1편: 해상도, dp, ppi, dpi개념

studying develop 2020. 10. 9. 01:29

음 s10E에서 좌측이 깨짐, 이런 경우 버튼 크기를 줄여야되나?

 

근본 문제는 맨 좌측 버튼들과 왼쪽 화면간의 레이아웃 관계가 지정되있지 않아서 그런거 같다.

 


안드로이드 기기별 대응이란 이름으로 검색하는데 해상도등 모르는 단어가 많이 나왔다. 일단 해상도를 알아보자.

 

[m.blog.naver.com/PostView.nhn?blogId=k_bc19941&logNo=220965101916&proxyReferer=https:%2F%2Fwww.google.com%2F]

 

해상도란 

https://m.blog.naver.com/PostView.nhn?blogId=k_bc19941&logNo=220965101916&proxyReferer=https:%2F%2Fwww.google.com%2F

즉 픽셀의 가로*세로 갯수를 표현한것이다. 모니터를 보면 qhd, uhd등 종류가 많은데 그게 해상도에 따른 것이였다.

 

근데 이제 여기서 추가 개념으로 ppi를 알아야 모니터의 화질을 표현할수 있다.

 

ppi는 pixel per inch로 1인치에 픽셀이 몇개 들어가는지 문제이다. 

 

1인치에 픽셀이 많이들어가면 당연히 화질이 좋을것이다. 즉 ppi가 높을 수록 화질이 좋다.

 


기기 마다 해상도 밀도가 다르다 [re-build.tistory.com/34]

 

화면안의 픽셀수 dpi(dots per inch), 위의 ppi랑 음 비슷해 보이긴 하는데;

 ldpi 저밀도(120dpi) 화면에 해당합니다.
 mdpi 중밀도(160dpi) 화면에 해당합니다.
 hdpi 고밀도(240dpi) 화면에 해당합니다.
 xhdpi 초고밀도(320dpi) 화면에 해당합니다.
 xxhdpi  초초고밀도(480dpi) 화면에 해당합니다.
 xxxhdpi 초초초고밀도(640dpi) 화면에 해당합니다.

 

기기별 dpi에 차이에 대한 대응은 여기서 볼수 있다. 다른 블로그들도 다 똑같이 대응하더라.

[onedaycodeing.tistory.com/60]

 

https://onedaycodeing.tistory.com/60

위 처럼 해상도에 따른 res 파일을 따로 만들어 관리한다. 

 

근데 일단 해상도 관련해서는 이런데, 내가 처음에 올린 문제는 다른 문제 같다.


[brunch.co.kr/@jihoonleeh9l6/10] 여기서 dp에 대한 개념을 잡자.

 

dp란 density independent pixel이다.

 

픽셀 밀도에 관계없는 UI를 위해 사용한다라....

 

https://junimnjw.github.io/%EA%B0%9C%EB%B0%9C/2019/10/01/DP-Android-Layout.html

 

음 이렇게 픽셀 단위로 하는건 기기마다. dpi가 변경되면 의미가 없다.

 

 

https://junimnjw.github.io/%EA%B0%9C%EB%B0%9C/2019/10/01/DP-Android-Layout.html

이렇게 px를 dpi에 상대적으로 계산한 값이 dp이다. 즉 dpi를 고려한 dp라 볼수있다.

 

이러면 위의 사진에서 dp가 10이면 좌측 사진은 픽셀이 우측보다 2배 많으니까 같은 절대적 길이를 나타낼것이다.ㅎㅎ

 

 


위의 사진의 내 문제는 [featherwing.tistory.com/22] 여기서 지적하는 문제 같다. 근데 이를 보기전에 개념을 더 잡아보자 일단.

 

맨 첫 사진에서 잘린 앱의 기기가 s10e였다. 

438ppi이고 2280x1440 해상도다. 이제 두 용어 의미는 알겠다.

 

ppi가 꽤 좋은거 보니 화질은 좋을거 같다. 대신 폰 가로 세로가 작을수도 있을듯. 2280/438이 가로 사이즈 일테니까? (dpi가 아닌 ppi라 좀 꺼림직하다.)


 

근데 ppi랑 dpi 차이는 뭐지...

 

[photographylife.com/dpi-vs-ppi] 을 정리해보자....

 

 

PPI is a term that describes the resolution of a digital image and determines its size when printed. To adjust the print dimensions for a digital image, modify its PPI (without resampling). Doing this does not affect the pixel count of the image. And remember, the PPI of an image does not influence how it will display on a device screen.

 

DPI is a function of a printer. It describes how tightly little dots of ink sprayed on the paper are placed to create a photograph. DPI is not used (at least it shouldn’t be used) to describe any aspect of a digital file.

 

ppi는 디지털에 표현하려는 용도고, dpi는 잉크로 종이에 표현될때라는데... 이게 맞는건가.;


음 [tadomstudio.tistory.com/4]를 보니 음 안드로이드에서는 dp와 dpi가 사용하는 의미가 좀 다른거 같다.

 

DIP (Device Independent Pixels) or DP
안드로이드에서 사용하는 독립적 단위 수치입니다. 어떠한 해상도에서도 같은 크기를 보여주는 것이 목적이라고 볼 수 있습니다.

DPI(Dots Per Inch)
1인치(2.54 센티미터)에 들어있는 픽셀의 수입니다. 안드로이드에서는 160을 기본으로 합니다.

 

음 내가 보기엔 ㅋㅋ; dpi를 ppi라 봐도 될거같다.

 

그래서 이걸 보면 s10e는 가로가 2280/438 = 5.2 인치고 세로가 1440/438 = 3.2 인치네.

 

142mm, 70mm가 몇인치인지 보자. 

 

음 각각 6인치, 2.7인치이다. 근데 픽셀은 디스플레이 화면만 치니까, 양옆 간격을 좀 빼고 오차를 고려하면 얼추 맞는 값같다.

 


 

결국 해결법은 2편에서 정리하겠다.

 

https://pinelover.tistory.com/258?category=362106