안녕하세요..
지금까지 개발할때 dp를 써서 레이아웃을 맞춰본적이 한번도 없거든요..
늘 px로만 레이아웃을 맞춰오고 있습니다..
근데 안드로이드는 px보다 dp를 쓰기를 권장을 하잖아요.
저도 알곤있지만 계산도어렵고 굳이 dp를 쓰는 이유를 이해를 못해서 px로 계속 써오고있거든요..
px보다 dp가 나은점이 뭐가 있는지 궁금합니다..
예를들어서.. 갤럭시 시리즈만본다고하면
갤1(800x480) 갤탭7(1024x600) 갤3(1280x720) 갤노트1(1280x800)크게 4종류로 나눌수있고
dpi로 분류하면 갤1(hdpi) 탭7(mdpi) 갤3(xhdpi) 갤노트1(xhdpi) 탭10.1(mdpi)등으로 나눌수 있잖아요.
저같은 경우는 위에 해상도별로 이미지를 다 받고있어요. 이미지를 해상도별로 4종류를 받으면 각 레이아웃에 맞게 픽셀로 조정하면 정확하게 옮길수가 있고, dpi가 달라도 해상도가 똑같기때문에 픽셀로 조정하면 같은 해상도 다른dpi라도 다 똑같은 위치에 적용이 되잖아요.
레이아웃 4개를 만들어서 픽셀위치만 살짝 조정해주면 전기종의 위치가 다 들어맞는데 dp로 쓰면 각 dpi마다 각 해상도마다 다 다르게 계산해줘야 하는거 아닌가요?
mdpi hdpi xhdpi가 해상도마다 다 다르니 모든 해상도 dpi마다 다 계산해줘서 dp값을 넣어주면 장난아닐거같은데, 어떤면에서 픽셀보다 유리한건지 궁금합니다..
간단하게 요약하자면
픽셀로 계산하면 800x480 이미지가 있으면 left margin 100px, top margin 100px 을 주었다면
mdpi, hdpi, xhdpi 가 모두 똑같은 위치에 적용되는데 반해
dp로 계산하면 mdpi에선 left margin 100dp, top margin 100dp,
hdpi 에선 le margin 150dp, top margin 150dp
xhdpi에선 leftmargin 200dp, top margin 200dp 등과같이 3번을 계산해줘야 원하는 위치에 들어서는게 아닌가요?
예를들어 똑같은 1280x800이라도 dpi가 다른경우(갤탭10.1은 mdpi, 갤노트1은 xhdpi)라고하면
dp로 계산한다면 두기종 따로 계산을 해서 넣어줘야되지만 pixel로 하면 두기종 모두 같은 해상도(1280x800)이기 때문에 픽셀로 넣어주면 똑같은 위치에 놓이게 되잖아요..
같은 해상도라도 dpi가 다른경우가 한둘이 아닌데 이런면에서 dpi로 계산하면 몇번을 중복 계산해야되는건지 모르겠는데..
픽셀같은경우는 픽셀만큼만 계산하면 dpi무시하고 다 들어맞는데 dp(dip)로 계산하면 해상도 및 dpi까지 고려해가면서 계산해야 하는거같은데.. 그러면서도 dp를 쓰는게 픽셀을 쓰는것보다 큰 장점이 있는건지 궁금합니다..
아직 1년정도밖에 안된 초짜라 모르는게 많아서 여쭤봅니다ㅡ;
자
4인치 기기, 800*480 에서 3cm * 3cm 짜리 레이아웃의 디자인이 나왔다고 합시다
근데 새로운 기기가 나왔어요
4인치 기기, 1280*720 이 나왔는데 마찬가지로 3 cm * 3cm 디자인으로 화면이 나와야 해요
3cm 가 100px 정도 된다고 가정을 합니다.
4인치 480p 에 100px 넣었는데
4인치 720p 에 대응하려면 150px 을 넣어야 할것입니다.
근데 dp 로 계산하면
66.67dp 로 동일하게 넣으면 되죠.
아직 px to dp 계산이 서툴러서 그럴 수 있다는거 이해하는데요
qHD 같은 변태 해상도가 아닌 SD/HD/FHD 해상도든 같은 인치수의 스크린이라면 동일한 위치에 동일한 크기에
적용을 하려면 dp 로 계산하는것이 훨~~~~씬 더 리소스가 적게 소모됩니다.
이걸로 하면 HD 해상도의 이미지 1벌만으로도 xhdpi / hdpi / mdpi 모두 커버가 가능하집니다.
1이미지 1레이아웃으로 갤1/갤2/갤3/갤탭10.1/7.7/8.9/넥7 모두 동일한 위치/크기 에 정확하게 레이아웃 적용해서 사용하고 있습니다.
아. 나인패치 이미지만 1이미지이되 dpi 별 대응으로 하네요.
360p -> 112.5px = 480p -> 150px = 720p -> 225px
360p-mdpi -> 112.5px = 100dp (옵티머스 원등등 국내 1세대 안드로이드 일부 폰)
480p-hdpi -> 150 px = 100dp (갤s, s2 등 6개월이전 2년 이내 출시폰)
720p-xhdpi -> 225px = 100dp (갤s3, 노트 등 출시 1년 이내 폰)
적어도 폰에서는 dp 개념 하나면 1개 이미지 1개 리소스로 모든 해상도, 모든 dp 에 대응 가능합니다.
태블릿에서도 폰 UI 를 그대로 적용 가능하고요
제 생각은 dp 를 사용함으로 인해
결국 고해상도, 저해상도 구별 없이 크기에 대한 관념이 자유로워 지는것 같습니다.
타겟 디바이스를 정해놓지 않는 상태에서 초고해상도와 초저해상도 에 만약 같은 px 개념이라면,
버튼 크기(예를들어) 가 들쭉날쭉일 것입니다.
하지만, dp 개념이라면 해상도와 상관없이 유사한 크기를 갖기 때문에 사용자에게
사용성을 좀더 제공해 주죠.
추가로, 대부분의 디자이너 께서는 픽셀로 작업을 해주십니다. 물론 개발자는 그 틀에 맞에 작업을 하면,
수월합니다. 그렇지만, 사용자를 생각하신다면 버튼 하나도 정렬 배치, 비교 배치, dp 사용을 권장합니다.
또는 구글 디자인 가이드를 참고하시길..
만드시는 앱이 어떻게 UI 설계가 되고 있는지 궁금하네요;;