타블렛 응용 프로그램 개발에 초보자입니다. 나는 화면 해상도 (600 * 960 딥)로 Google Nexus7을 사용하고 있습니다. 따라서 mdip 카테고리에 속하는지 알고 싶습니까? 에 따르면 1px = 1dp (기준선). 그러나 내가 이것을 따라하면 태블릿에서 잘 안 보인다. Nexus7 -sw600dp
에 대한 별도의 레이아웃 폴더를 만들고 mdip에 따라 크기를 언급했지만 작동하지 않습니다. 내 이미지도 좋지 않습니다. Google 넥서스의 실제 전환율을 알고 싶습니다. 7. 도움이 필요합니다.Google Nexus 7의 px에서 dp 로의 변환
답변
공식 : pixels = dips * (density/160)
넥서스 7은 그것의 해상도 코드를 의미 213 픽셀 밀도와 800x1280이다가 (당신이 drawable-tvdpi
라는 폴더를 가질 수 있습니다 의미) tvdpi
이다.
당신과 함께, 마이너스 창 장식, 사용 가능한 화면 크기를 측정 할 수 있습니다 내 N7에
this.getResources().getConfiguration().screenWidthDp;
this.getResources().getConfiguration().screenHeightDp;
, 그것은 w 600 DP, 888 DP의 시간을 반환합니다. 위 공식에 따라 888 dp 높이는 1280px - 창 장식입니다.
도움을 주셔서 감사합니다. 50px로 레이아웃을 정의하고 싶다면 dp = dp = (50/213) * 160'이 될 것입니다. – nilkash
맞습니다. 도움이된다면 문제를 해결 된 것으로 표시하십시오. 감사! –
Nexus7은 다소 이상한 dpi 구조의 고유 한 장치입니다. Dianne Hackborn explains the unique resolution of the Nexus7
참고 : 응용이 폴더 경우에만 이미지를 소요 - 넥서스 7 여기
layout-large-hdpi
를 들어
은 (구글 안드로이드 엔지니어 다이앤 Hackborn에서) 아주 좋은 설명이다 높은 우선 순위 한정자를 제공하지 않았습니다. 예를 들어 layout-sw360dp와 같은 레이아웃 폴더를 지정했다면 앱은 위에서 말한 것과 같은 별도의 레이아웃을 제공하더라도이 폴더의 이미지 만 사용합니다. 안드로이드에는 레이아웃을 제공해야하는 우선 순위가 있기 때문에.
화면 밀도는 일반적으로 dpi (인치당 도트 수) 함. Android는 모든 실제 화면 밀도를 낮음 (120), 중간 (160), 높음 (240) 및 특별 높이 (320)의 네 가지 일반화 된 밀도로 그룹화합니다. Galaxy Nexus와 같은 장치는 화면 밀도가 특별히 높습니다 (특히 dpi 값은 320으로 설정 됨). Nexus 7은 "tvdpi"즉 213dpi를 사용합니다.
밀도 독립적 픽셀
일반적 DP라고 함. 이것은 콘텐츠를 표시 할 때 사용되는 가상 픽셀 단위입니다. 밀도 비 독립 픽셀은 160 dpi 화면에서 하나의 물리적 픽셀과 동일합니다.
px = dp * (dpi/160)
또는 동등 : 다음 공식 DP 사용을 계산하려면
dp = (px/dpi) * 160
넥서스 7과 비슷한 해상도에도 불구하고 갤럭시 넥서스보다 더 많은 내용을 표시 할 수있는 이유는 이것이다 : 넥서스 7의 dpi의 Galaxy Nexus보다 낮습니다.
(800/213) * 160 = 600 dp
이것은 앱 갤럭시 넥서스에 렌더링 될 때 것을 의미
갤럭시 넥서스 (720 픽셀 너비 320 dpi의)
(720/320) * 160 = 360 dp
넥서스 7 (213 dpi로, 800 개 픽셀 폭) 화면의 너비는 실제로 360 dp (720 픽셀을 사용하여 렌더링 됨)입니다. Nexus 7에서는 화면의 너비가 600dp (800 픽셀 사용)입니다.
아래 코드를 시도해보십시오. 아래 방법으로 픽셀 값을 지정하면 결과가 dp가됩니다.
public int convertSizeToDeviceDependent(int value) {
DisplayMetrics dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
return ((dm.densityDpi * value)/160);
}
사용이 도움이 될 것입니다 링크 : HTTP : //www.xcubelabs.com/dpi/index.html –