Galaxy Nexus是小型,普通型,大型还是X大型设备?

时间:2012-07-24 15:45:40

标签: android android-layout

我正在开发一个多屏幕Android 2.2.2应用程序。

使用 eclipse (Juno发布)图形布局测试不同的屏幕尺寸。这就是我所拥有的。

main_layout.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/no_conectado" >

    <TextView
        android:id="@+id/labelSelGateName"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="@dimen/labelSelGateName_marginTop"
        android:gravity="center_horizontal"
        android:textSize="@dimen/labelSelGateName_textsize" />


    <TextView
        android:id="@+id/labelSelOpened"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_below="@+id/labelSelGateName"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="@dimen/labelSelOpened_marginTop"
        android:gravity="center_horizontal"
        android:textSize="@dimen/labelSelOpened_textsize" />

    <ProgressBar
        android:id="@+id/indicatorActivityView"
        android:layout_width="@dimen/indicatorActivityView_height"
        android:layout_height="@dimen/indicatorActivityView_width"
        android:layout_below="@+id/labelSelOpened"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="@dimen/indicatorActivityView_marginTop" />

    <ImageButton
        android:id="@+id/btnMyGates"
        android:layout_width="@dimen/btnMyGates_width"
        android:layout_height="@dimen/btnMyGates_height"
        android:layout_alignParentLeft="true"
        android:layout_below="@+id/indicatorActivityView"
        android:layout_marginLeft="@dimen/btnMyGates_marginLeft"
        android:layout_marginTop="@dimen/btnMyGates_marginTop"
        android:background="@null"
        android:contentDescription="@string/layout_empty"
        android:onClick="onGateClick" />

    <ImageButton
        android:id="@+id/btnOpen"
        android:layout_width="@dimen/btnOpen_width"
        android:layout_height="@dimen/btnOpen_height"
        android:layout_alignTop="@+id/btnMyGates"
        android:layout_centerHorizontal="true"
        android:background="@null"
        android:contentDescription="@string/layout_empty"
        android:onClick="onOpenDoorClick" />


    <ImageButton
        android:id="@+id/btnClose"
        android:layout_width="@dimen/btnClose_width"
        android:layout_height="@dimen/btnClose_height"
        android:layout_alignBottom="@+id/btnMyGates"
        android:layout_alignLeft="@+id/btnOpen"
        android:layout_marginBottom="@dimen/btnClose_marginBottom"
        android:background="@null"
        android:contentDescription="@string/layout_empty"
        android:onClick="onCloseDoorClick" />

    <ImageButton
        android:id="@+id/btnOptions"
        android:layout_width="@dimen/btnOptions_width"
        android:layout_height="@dimen/btnOptions_height"
        android:layout_alignParentRight="true"
        android:layout_alignTop="@+id/btnMyGates"
        android:layout_marginRight="@dimen/btnOptions_marginRight"
        android:background="@null"
        android:contentDescription="@string/layout_empty"
        android:onClick="onOptionClick" />

    <ImageButton
        android:id="@+id/btnFaqs"
        android:layout_width="@dimen/btnFaqs_width"
        android:layout_height="@dimen/btnFaqs_height"
        android:layout_marginTop="@dimen/btnFaqs_marginTop"
        android:layout_toLeftOf="@+id/btnOptions"
        android:layout_below="@+id/btnClose"
        android:background="@null"
        android:contentDescription="@string/layout_empty"
        android:onClick="onFAQClick" />

    <ImageButton
        android:id="@+id/btnInfo"
        android:layout_width="@dimen/btnInfo_width"
        android:layout_height="@dimen/btnInfo_height"
        android:layout_alignLeft="@+id/btnOptions"
        android:layout_alignParentBottom="true"
        android:layout_marginLeft="@dimen/btnInfo_marginLeft"
        android:background="@null"
        android:contentDescription="@string/layout_empty"
        android:onClick="onInfoClick" />

</RelativeLayout>

dimens.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <dimen name="labelSelGateName_marginTop">40dp</dimen>
    <dimen name="labelSelGateName_textsize">14sp</dimen>

    <dimen name="labelSelOpened_marginTop">0dp</dimen>
    <dimen name="labelSelOpened_textsize">14sp</dimen>

    <dimen name="indicatorActivityView_width">20dp</dimen>
    <dimen name="indicatorActivityView_height">20dp</dimen>
    <dimen name="indicatorActivityView_marginTop">28dp</dimen>

    <dimen name="btnMyGates_width">70dp</dimen>
    <dimen name="btnMyGates_height">110dp</dimen>
    <dimen name="btnMyGates_marginLeft">29dp</dimen>
    <dimen name="btnMyGates_marginTop">60dp</dimen>

    <dimen name="btnOpen_width">90dp</dimen>
    <dimen name="btnOpen_height">55dp</dimen>

    <dimen name="btnClose_width">90dp</dimen>
    <dimen name="btnClose_height">50dp</dimen>
    <dimen name="btnClose_marginBottom">0dp</dimen>

    <dimen name="btnOptions_width">70dp</dimen>
    <dimen name="btnOptions_height">110dp</dimen>
    <dimen name="btnOptions_marginRight">30dp</dimen>

    <dimen name="btnFaqs_width">110dp</dimen>
    <dimen name="btnFaqs_height">70dp</dimen>
    <dimen name="btnFaqs_marginTop">10dp</dimen>

    <dimen name="btnInfo_width">110dp</dimen>
    <dimen name="btnInfo_height">60dp</dimen>
    <dimen name="btnInfo_marginLeft">14dp</dimen>
</resources>

我在这些文件夹中有四个dimens.xmlvalues-smallvalues-normalvalues-largevalues-xlarge

使用这些文件,它在Nexus One7in WSVGA Tablet10.1in WXGA Tablet中看起来很不错。但是,它在Galaxy Nexus5.4 FWVGA5.1 WVGA4.7in WXGA中看起来并不好看。

当我说它看起来并不好看时,我的意思是每个TextViewImageButton等已经移动,而且它们并没有在正确的位置。

我需要更多文件吗?

3 个答案:

答案 0 :(得分:1)

我认为这是Android初始设计的限制 - 它的XML布局不允许指定类似于HTML表格的基于百分比或类似表格的布局,即没有精确尺寸的布局。

“weight”属性不是一个选项,因为当我尝试指定任意布局时,Eclipse告诉我“嵌套权重对性能不利”

限定符也不是一个好的架构师解决方案,因为两个不同的设备可以在相同的“屏幕密度”对下合格,例如HTC One S / HTC One X.这就是为什么Google重新设计它引入swdp限定符的原因3.X。

对于Android 2.3,您可以创建针对480x800优化的“默认”UI,并在屏幕中心进行布局。它在540x960和更高的屏幕上看起来会更小,但仍然没有损坏。

答案 1 :(得分:0)

Galaxy Nexus屏幕normal(分辨率为1280 x 720)且密度为xhdpi

答案 2 :(得分:0)

galaxy nexus(和galaxy s3,以及htc one x)具有正常的屏幕尺寸,具有xhdpi密度。

参考:

http://www.youtube.com/watch?feature=player_detailpage&v=PwC1OlJo5VM#t=3047s