출처 :http://kes3583.blog.me/90149111151
모바일 웹 코딩시 아래와 같은 기기에 대응하기로 함. 충분한 사전지식이 필요할거 같아 3일에 걸쳐서 지인, 구글 검색, 등을 함... 결론은..픽셀보다는 퍼센트의 의존도로 가려고 함.
http://en.wikipedia.org/wiki/List_of_displays_by_pixel_density
안드로이드 디바이스의 경우 크게 3가지의 해상도 범주를 가지고 있는데, LDPI(저해상도), MDPI(중해상도), HDPI(고해상도)입니다. Density값은 LDPI가 120, MDPI가 160, HDPI가 240입니다. (각각 인치당 픽셀수를 이야기합니다.) 아래 표 (Table.1)를 참고하시면 결국 현재 디자인 하신 그림 파일의 기준은 HDPI를 기준으로 되어있는 것이고, LDPI를 위해서는 당연히 120/240 = 1/2, MDPI를 위해서는 당연히 160/240 = 3/4로 길이당 픽셀수가 감소하는 셈입니다. 모든 해상도를 지원하시려면 하나의 그림 파일을 HDPI, MDPI, LDPI에 맞춰서 3개로 만들어서 개발자에게 넘기시면 됩니다.
레이아웃용 xml 파일에 기술되어야 할 dip값은 다음과 같이 계산해서 넣으시면 됩니다. dip = px * (160/density) density값은 HDPI, MDPI, LDPI의 값들입니다. 결국 MDPI일때는 dip값은 px값과 같다는 것이지요. http://www.androidpub.com/1895935 안드로이드 해상도 http://www.androidpub.com/1895935 http://blog.naver.com/PostView.nhn?blogId=cheonsu0&logNo=70100898919 이미지 해상도 결정 http://hslifestory.tistory.com/734 해상도 계산 http://blog.naver.com/handyson/120391295 Samsung
미디어쿼리는 배경이미지에만 사용할수 있습니다.. http://mydeute.com/txp/article/631 모바일 터치이벤트 http://webstorykim.tistory.com/169 dp를 평소에 즐겨사용했지만, 확실히 무슨 개념인지를 몰라 조사하던중에 잘 정리되어있는 블로그를 발견 ! 수정(101130) 단순히 px을 dp로 변환하고자 한다면 dp = px * 0.66625로 계산한다.(해상도480*800 기준) 480*800 px => 320*533 dp이다. 출처 : http://blog.naver.com/dythmall?Redirect=Log&logNo=30096162077 dp (dip, density independent pixel) 은 안드로이드에서 여러 화면 크기를 서포트 해주기 위해서 만든 유닛이다. 만약 많은 화면에서 내가 만든 레이아웃이 제대로 보이길 원한다면 dp를 써서 화면을 만드는 것이 좋다. 우선 주의할 것은 안드로이드는 160dpi를 기본으로 생각한다. 이것은 (320 x 480) 스크린의 density를 나다내는 것이다. 그러므로 480 x 800 (240dpi)의 스크린을 dp로 나타낸다면 320 x 533 (480 / 1.5, 800 / 1.5) 이 된다. dp를 이용해서 레이아웃을 잡을때 이 수치를 꼭 기억하고 잡자! dp로 레이아웃을 잡을때 버튼을 4개 만들고 LinearLayout (horizontal)에 넣은뒤 width를 80dp (80*4 = 320)로 잡으면 4개가 같은 넓이의 버튼이 된다. 하지만 480을 생각하고 120dp 라고 넓이를 잡으면 오른쪽 1개 버튼은 화면을 지나서 보이는걸 볼것 이다. 그렇다면 코드상에서 dp를 pixel로 바꾸려면 어떻게 해야할까? 식은 pixel = dp * (density / 160) dp는 원하는 값이고 density 는 DisplayMetrics outMetrics = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(outMetrics); outMetrics.densityDpi 로 가지고 올 수 있다. 여기서 outMetrics.density 라는 변수가 있는데 이것은 (density / 160) 의 결과 값이 들어 있다. 그러므로 식은 pixel = dp * outMetrics.density 가 된다. 여기서 코드상에 dp를 pixel로 변한하는 식이 필요한 이유는, 안드로이드 레이아웃을 코드상에서 고치면 dp를 쓸 수 없기 때문이다. 모든 setWidth나 setHeight 등등은 인자를 pixel로 받는다. 320×480 갤럭시 s 480×800 , 240 DPI 갤럭시 s2 480×800 , 240dpi 갤럭시 s3 720×1280, 320 DPI Galaxy Nexus 720×1280 Galaxy Tab 600×1024 Galaxy Tab 7.7 800×1280 갤럭시 노트 800×1280 픽셀변홖공식pixels = dips * (density / 160)
[갤럭시 넥서스] - RESOLUTION : 720px(360dp), 1280px(640dp) - DENSITY: 2.0 [hTC evo 4g] - RESOLUTION : 540px(360dp), 960px(640dp) - DENSITY: 1.5 |