2010-03-31 2 views
0

홈 화면 위젯을 디자인하고 있습니다. 위젯 레이아웃 파일은 아래와 같습니다. 정상 화면과 대상 화면의 홈 화면 위젯 크기에 대해 혼동이 있음

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/widget" 
android:layout_width="240dip" android:layout_height="200dip" 
    android:background="@drawable/base_all" 
/> 

난 MDPI와 320 픽셀 * 480 픽셀의 화면을 갖는 HTC 영웅 장치에이 위젯을 실행. 그것은 HTC 영웅에 완벽하게 달렸습니다. 위젯은 3 셀 * 2 셀 공간, 즉 240 픽셀 * 200 픽셀을 사용합니다.

그런 다음이 위젯을 Nexus One 기기에서 실행했습니다.이 장치는 480 픽셀 * 800 픽셀, mdpi의 화면이 있습니다. Nexus One도 mdpi이므로 240dip은 Nexus One의 240 픽셀과 같고 200dip은 Nexus One의 200 픽셀과 같으므로 Nexus One 기기에서 3 셀 * 2 셀 공간을 차지하지 않습니다. 놀랍게도 Nexus One 기기에서 실행되는 위젯은 Nexus One 기기에서 정확한 3 셀 * 2 셀 (약 360 픽셀 * 300 픽셀)을 사용합니다.

혼란 스럽습니다. 위 레이아웃 xml은 위젯의 너비는 240dip이고 높이는 200dpi이지만, Nexus One 기기에서 360 픽셀 * 300 픽셀을 차지하는 이유는 무엇입니까? 내가 뭘 놓치고 있니?

감사합니다. 응답에서


가의 mbaird 의견 :

은 아직도 혼란 스러워요. 위젯에서 아래와 같이 90dip * 100dip으로 Image1, picture1을 지정했다고 가정합니다. Nexus One 기기의 이미지 뷰는 기기 픽셀의 크기에 어떤 영향을 줍니까?

내가 understant으로
public void draw(Canvas canvas) { 
    ShapeDrawable drawable = new ShapeDrawable(new RectShape()); 
    drawable.getPaint().setColor(Color.WHITE); 
    drawable.setBounds(m_leftTopX, m_leftTopY, m_leftTopX + m_width, 
      m_leftTopY + m_height); 

    drawable.draw(canvas); 
} 

, drawable.setBounds()는 매개 변수의 실제 픽셀을 사용하고 있습니다 : 내 프로그램에서 나는 이미지 뷰에 그릴 수 있기 때문에

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/widget" 
android:layout_width="240dip" android:layout_height="200dip" 
    android:background="@drawable/base_all" 
> 
<ImageView android:id="@+id/picture1" 
    android:layout_width="90dip" 
    android:layout_height="110dip" 
    /> 
</RelativeLayout> 

나는 이것을 알아야합니다. 나는 물리적 픽셀의 차원에서 ImageView의 크기를 알아야합니다.

감사합니다.

답변

0

장치 픽셀과 하드웨어 장치 픽셀을 혼합합니다. 나는 그것이 너무 잘 풀릴 것이라고 생각하지 않는다.

영웅에게 3x2를 사용하는 위젯은 Nexus One에서 3x2를 차지합니다. 이것은 당신의 이전 질문에 대한 대답에서 건너려고 시도한 것입니다 : Home screen widget size for large screen or hdpi?

관련 문제