如何处理屏幕分辨率和屏幕尺寸,一个应用程序

时间:2013-02-21 09:06:46

标签: android nexus-10

我一直试图解决这个问题,但我真的不明白.. 如果我想创建一个应用程序,其中一个布局应该适合所有Android设备(通过缩放)..我怎么能实现这个?..例如..我可能有一个300dp的editText,这对我的三星看起来很棒Galaxy S2 ..但是如果我在我的nexus 10上运行相同的应用程序,它看起来会非常小,然后我会像editText那样在宽度和高度上扩展以适应我的nexus 10 ..有什么简单的方法可以这个吗?

我注意到有一种称为重量的东西......但是如果我创建了三个editTexts,其中第一个重量为10,那么2:重量为20,然后是3:重量为80,最后一个从来没有露面......

无论如何......你如何通过最佳实践处理这些东西?

4 个答案:

答案 0 :(得分:0)

通常可以通过添加

来处理这种情况
<supports-screens android:normalScreens="true"
    android:smallScreens="true" android:largeScreens="true"
    android:anyDensity="true" android:resizeable="true" />
在androidmanifest.xml中

答案 1 :(得分:0)

使用xhdpi资源并尝试使用布局参数在运行时设置所有布局 根据设备。

或者让android决定什么是最适合设备创建以下文件夹

  1. 布局大
  2. 布局小
  3. 布局-SW600
  4. 布局sw720
  5. 以及更好地整理布局的类似文件夹

答案 2 :(得分:0)

这份文件将是很好的帮助

http://developer.android.com/guide/practices/screens_support.html

如果你的手机和平板电脑的布局都很好看,你需要有单独的布局文件,一个布局文件,另一个布局文件 - xlarge(10英寸平板电脑),编辑文本的大小不同。

另一种方法是保留单个布局文件,但将所有与大小相关的值提取到单独的xml文件中。将它们分别放在值和值-xlarge文件夹中。

答案 3 :(得分:0)

我是这样做的,

创建一个可以调用的函数,该函数返回与设备宽度相关的大小。 “32”是任意的,它为您提供与屏幕成比例的相对字体大小。

textView.setTextSize(getFontSize(activity));


public static int getFontSize (Activity activity) { 

    DisplayMetrics dMetrics = new DisplayMetrics();
    activity.getWindowManager().getDefaultDisplay().getMetrics(dMetrics);

    // lets try to get them back a font size realtive to the pixel width of the screen
    final float WIDE = activity.getResources().getDisplayMetrics().widthPixels;
    int valueWide = (int)(WIDE / 32.0f / (dMetrics.scaledDensity));
    return valueWide;
}