首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > Android >

自适应分辨率解决思路

2013-03-19 
自适应分辨率有这样一个问题,要做一个程序自适应所有分辨率。为了美观我在布局里设置了背景RelativeLayout

自适应分辨率
有这样一个问题,要做一个程序自适应所有分辨率。为了美观我在布局里设置了背景


<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这个单位来设置控件位置的,但是如果分辨率改变的话,控件就跑到别的地方去了,而不是我规划到的位置了。
不知道大家在设置背景,控件布局适应不通分辨率方面是怎么解决的。
[解决办法]
dip与分辨率无关,和屏幕密度density有关.
可以用与密度无关的单位:dp  试试。

[解决办法]
<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中
[解决办法]
楼上说的对呵呵
[解决办法]
自适应分辨率布局最好是用FrameLayout + LinearLayout配置做。
[解决办法]
如果你需要两个效果完全相同,但他们的分辨率又不一样,就要value-xhdpi-1280*768
value-xhdpi-1024*768
各建一个文件夹,这样子适配。
如果不需要那么精确就只要一个value-xhdpi文件件,这样子大致是相似的
[解决办法]
其实很多布局都可以控制控件位置,比如剧中、靠上等。但是考虑到不同分辨率图片大小不同,还是建议用多个布局。
[解决办法]
引用:
分辨率不通的机型好多好多,而且还设置了背景图片,如果不精确的话,控件摆放的位置就不知道飞哪去了,有什么方法可以设置百分比的么,比如在java程序里取回当前的分辨率,然后计算,按照百分比设置

百分比也很难适应每个屏幕吧
建议使用2楼的方法
[解决办法]
引用:
<Button
        android:id="@+id/search_barcode_html_btn"
        android:layout_width="80dip"
        android:layout_height="40dip"
        android:layout_marginLeft="460dip"
        android:la……

对,可能跟你的图片放置位置有关系
[解决办法]
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分之一的屏幕高度。自己根据需求调试到最佳就行了。

热点排行