有这样一个问题,要做一个程序自适应所有分辨率。为了美观我在布局里设置了背景<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@drawable/beijing"
    android:baselineAligned="false"
    android:orientation="vertical" >在背景里我规划了大致的控件布局位置,然后我就通过设置控件位置的方式将控件放置在背景预先规划好的位置上<Button
        android:id="@+id/search_barcode_html_btn"
        android:layout_width="80dip"
        android:layout_height="40dip"
        android:layout_marginLeft="460dip"
        android:layout_marginTop="320dip"
        android:text="查  询" >
    </Button>这样问题就来了,尽管我是用dip这个单位来设置控件位置的,但是如果分辨率改变的话,控件就跑到别的地方去了,而不是我规划到的位置了。
不知道大家在设置背景,控件布局适应不通分辨率方面是怎么解决的。

解决方案 »

  1.   

    dip与分辨率无关,和屏幕密度density有关.
    可以用与密度无关的单位:dp  试试。
      

  2.   

    <Button
            android:id="@+id/search_barcode_html_btn"
            android:layout_width="80dip"
            android:layout_height="40dip"
            android:layout_marginLeft="460dip"
            android:layout_marginTop="320dip"
            android:text="查  询" >
        </Button>把上面用到的这些值在dimen.xml文件中定义, 然后放在不同分辨率对应的value文件夹中(不同的文件夹中的dimen值可能不同), 比如value-hdpi, value-xhdpi中
      

  3.   

    自适应分辨率布局最好是用FrameLayout + LinearLayout配置做。
      

  4.   

    我们做的这个软件是要运行在客户的pad上面的,客户随便拿来2个pad,分辨率分别是1280*768  1024*768
    不可能每个分辨率都做一个吧,如果客户再拿来第3个第4个型号的怎么办呢
      

  5.   

    如果你需要两个效果完全相同,但他们的分辨率又不一样,就要value-xhdpi-1280*768
    value-xhdpi-1024*768
    各建一个文件夹,这样子适配。
    如果不需要那么精确就只要一个value-xhdpi文件件,这样子大致是相似的
      

  6.   

    分辨率不通的机型好多好多,而且还设置了背景图片,如果不精确的话,控件摆放的位置就不知道飞哪去了,有什么方法可以设置百分比的么,比如在java程序里取回当前的分辨率,然后计算,按照百分比设置
      

  7.   

    android有获取当前设备的分辨率的方法:
        DisplayMetrics dm = new DisplayMetrics();
        getWindowManager().getDefaultDisplay().getMetrics(dm);    dm.heightPixels 和 dm.widthPixels可以获得当前的摄像头的分辨率(宽和高)
    在用到该控件的java文件中调用这个方法,获取好宽和高,然后定义控件,在java文件中根据获取的宽和高设置控件的位置。
        Button btn1;
        btn1=(Button) findViewById(R.id.search_barcode_html_btn);
        btn1.setPadding(left, top, right, bottom);这里你可以根据自己的需求设置left和top的值,让他们根据dm.heightPixels 和 dm.widthPixels取值。如btn1.setPadding(dm.widthPixels/5,dm.heightPixels/4,0,0).如此设置即可将该控件设为距左5分之一的屏幕宽度,距上4分之一的屏幕高度。自己根据需求调试到最佳就行了。
      

  8.   

    如果你需要两个效果完全相同,但他们的分辨率又不一样,就要layout-xhdpi-1280*768
     layout-xhdpi-1024*768
      

  9.   

    我们可以在 res 目录下创建不同的 layout 文件夹,比如 layout-640x360 、layout-800x480 ,所有的 layout 文件在编译之后都会写入 R.java 里,而系统将根据屏幕的大小自己选择合适的 layout 进行使用。多分辨率支持支持多分辨率有 mdpi、ldpi、hdpi 3个文件。
    •hdpi 里面存放高分辨率的图片,如 WVGA (480x800),FWVGA (480x854) ; 
    •mdpi 里面存放中等分辨率的图片,如 HVGA (320x480) ; 
    •ldpi 里面存放低分辨率的图片,如 QVGA (240x320) 。 
      

  10.   

    layout_weight
     
        目前最为推荐的Android多屏幕自适应解决方案。
     
        该属性的作用是决定控件在其父布局中的显示权重,一般用于线性布局中。其值越小,则对应的layout_width或layout_height的优先级就越高,一般横向布局中,决定的是layout_width的优先级;纵向布局中,决定的是layout_height的优先级。
     
        传统的layout_weight使用方法是将当前控件的layout_width和layout_height都设置成fill_parent,这样就可以把控件的显示比例完全交给layout_weight;这样使用的话,就出现了layout_weight越小,显示比例越大的情况。不过对于2个控件还好,如果控件过多,且显示比例也不相同的时候,控制起来就比较麻烦了,毕竟反比不是那么好确定的。