2012-06-11 1 views
2

128x128 스마트 워치 화면에서 적절한 레이아웃을 얻는 데 문제가 있습니다.Sony Smartwatch의 XML 레이아웃

이것은 시계의 레이아웃이 실행중인 장치의 화면 밀도를 명확하게 상속 받기 때문에 흥미로운 문제입니다. 따라서 태블릿과 휴대 전화를 함께 사용하면 시계의 레이아웃 요소가 완전히 다른 크기가됩니다.

스마트 확장 SDK의 샘플 프로젝트 중 하나에서 내 레이아웃을 기반으로합니다. 이 XML을

:

Bitmap bitmap = Bitmap.createBitmap(128, 128, BITMAP_CONFIG); 

// Set default density to avoid scaling. 
bitmap.setDensity(DisplayMetrics.DENSITY_DEFAULT); 

Canvas canvas = new Canvas(bitmap); 
mLayout.draw(canvas); 

showBitmap(bitmap); 
:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="@dimen/smart_watch_control_width" 
    android:layout_height="@dimen/smart_watch_control_height" 
    android:id="@+id/rlayout" 
> 

    <Button 
     android:id="@+id/imageViewUp" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentTop="true" 
     android:layout_centerHorizontal="true" 
     android:tag="button" 
     android:background="@drawable/up_selector" /> 
    ...more Buttons 
</RelativeLayout> 

레이아웃 초기화는에서 SmartView는 createLayout가 결과 사용 mLayout 저장하고 그려진

private LinearLayout createLayout() { 
    mSmartView = new SmartView(mContext); 
    mSmartView.setLayoutParams(new LayoutParams(WIDTH, HEIGHT)); 

    LinearLayout sampleLayout = (LinearLayout) LinearLayout.inflate(
      mContext, R.layout.xbmc, mSmartView); 

    sampleLayout.measure(WIDTH, HEIGHT); 

    Log.i(TAG, "layout width: " + sampleLayout.getMeasuredWidth() 
      + " height: " + sampleLayout.getMeasuredHeight()); 

    sampleLayout.layout(0, 0, sampleLayout.getMeasuredWidth(), 
      sampleLayout.getMeasuredHeight()); 

    return sampleLayout; 
} 

단지 확장의 LinearLayout 인

위의 XML을 사용하면 핸드셋에서 다음과 같이 나타납니다. 012 태블릿에

그것은 다음과 같습니다 Tablet

을 또한, 나는 하드 코드 내 XML이 태블릿 버전처럼 보이는 이미지의 정확한 픽셀 값을 사용합니다. 화살표 이미지는 44 픽셀이며 가운데 하나가 약간 큽니다.

시계의 밀도에 맞추기 위해 프로그램 밀도를 설정하는 방법이 필요하다고 느낍니다. 시계에서 레이아웃이 올바르게 보이게하려면 어떻게해야합니까? 안드로이드에서 우리가하는 일이 아닌 방법으로 픽셀 값을 하드 코딩하는 것을 피할 수있는 솔루션을 선호합니다.

답변

4

드로어 블을 res/drawable-nodpi 폴더에 저장하면 안드로이드가 밀도를 적용하지 않아야합니다.

예 : 사용할 수있는 8 퍼즐 게임에서 완료 here.

+0

cha-ching! 그 폴더 접미사에 대한 지식이 지금까지 없었습니다. –