time 
设为首页】【收藏本站
当前位置: 主页 > 电脑网络 > 操作系统 > 嵌入式 > Android > Android官方提供的让你的应用程序支持各种不同屏幕大小的全部方法

Android官方提供的让你的应用程序支持各种不同屏幕大小的全部方法

时间:2014-06-18 11:10 点击:1606次 字体:[ ]




本文将告诉你如何让你的应用程序支持各种不同屏幕大小,主要通过以下几种办法:

 

  • 让你的布局能充分的自适应屏幕
  • 根据屏幕的配置来加载合适的UI布局
  • 确保正确的布局应用在正确的设备屏幕上
  • 提供可以根据屏幕大小自动伸缩的图片

使用 "wrap_content" 和 "match_parent"

 为了确保你的布局能够自适应各种不同屏幕大小,你应该在布局的视图中使用"wrap_content""match_parent"来确定它的宽和高。如果你使用了"wrap_content",相应视图的宽和高就会被设定成刚好能够包含视图中内容的最小值。而如果你使用了"match_parent"(在Android API 8之前叫作"fill_parent"),就会让视图的宽和高延伸至充满整个父布局。

通过使用"wrap_content""match_parent"来替代硬编码的方式定义视图大小,你的视图要么仅仅使用了需要的那边一点空间,要么就会充满所有可用的空间。例如:

  1. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
  2.     android:orientation="vertical" 
  3.     android:layout_width="match_parent" 
  4.     android:layout_height="match_parent"> 
  5.     <LinearLayout android:layout_width="match_parent"   
  6.                   android:id="@+id/linearLayout1"    
  7.                   android:gravity="center" 
  8.                   android:layout_height="50dp"> 
  9.         <ImageView android:id="@+id/imageView1"   
  10.                    android:layout_height="wrap_content" 
  11.                    android:layout_width="wrap_content" 
  12.                    android:src="@drawable/logo" 
  13.                    android:paddingRight="30dp" 
  14.                    android:layout_gravity="left" 
  15.                    android:layout_weight="0" /> 
  16.         <View android:layout_height="wrap_content"   
  17.               android:id="@+id/view1" 
  18.               android:layout_width="wrap_content" 
  19.               android:layout_weight="1" /> 
  20.         <Button android:id="@+id/categorybutton" 
  21.                 android:background="@drawable/button_bg" 
  22.                 android:layout_height="match_parent" 
  23.                 android:layout_weight="0" 
  24.                 android:layout_width="120dp" 
  25.                 style="@style/CategoryButtonStyle"/> 
  26.     </LinearLayout> 
  27.  
  28.     <fragment android:id="@+id/headlines"   
  29.               android:layout_height="fill_parent" 
  30.               android:name="com.example.android.newsreader.HeadlinesFragment" 
  31.               android:layout_width="match_parent" /> 
  32. </LinearLayout> 

注意上面的例子中是如何使用"wrap_content""match_parent"来给控件定义宽高的,这让整个布局可以正确地适应不同屏幕的大小,甚至是横屏。

 

下图是这个布局分别在竖屏和横屏时显示的结果,注意控件的宽和高是根据屏幕自适应的。

Android官方提供的让你的应用程序支持各种不同屏幕大小的全部方法_www.fengfly.com
 

 

使用RelativeLayout

 

通过多层嵌套LinearLayout和组合使用"wrap_content""match_parent"已经可以构建出足够复杂的布局。但是LinearLayout无法允许你准确地控制子视图之前的位置关系,所有LinearLayout中的子视图只能简单的一个挨着一个地排列。如果你需要让子视图能够有更多的排列方式,而不是简单地排成一行或一列,使用RelativeLayout将会是更好的解决方案。RelativeLayout允许布局的子控件之间使用相对定位的方式控制控件的位置,比如你可以让一个子视图居屏幕左侧对齐,让另一个子视图居屏幕右侧对齐。

例如:

  1. <?xml version="1.0" encoding="utf-8"?> 
  2. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
  3.     android:layout_width="match_parent" 
  4.     android:layout_height="match_parent"> 
  5.     <TextView 
  6.         android:id="@+id/label" 
  7.         android:layout_width="match_parent" 
  8.         android:layout_height="wrap_content" 
  9.         android:text="Type here:"/> 
  10.     <EditText 
  11.         android:id="@+id/entry" 
  12.         android:layout_width="match_parent" 
  13.         android:layout_height="wrap_content" 
  14.         android:layout_below="@id/label"/> 
  15.     <Button 
  16.         android:id="@+id/ok" 
  17.         android:layout_width="wrap_content" 
  18.         android:layout_height="wrap_content" 
  19.         android:layout_below="@id/entry" 
  20.         android:layout_alignParentRight="true" 
  21.         android:layout_marginLeft="10dp" 
  22.         android:text="OK" /> 
  23.     <Button 
  24.         android:layout_width="wrap_content" 
  25.         android:layout_height="wrap_content" 
  26.         android:layout_toLeftOf="@id/ok" 
  27.         android:layout_alignTop="@id/ok" 
  28.         android:text="Cancel" /> 
  29. </RelativeLayout> 

下图展示了这个布局在QVGA屏幕上显示的结果。

 

Android官方提供的让你的应用程序支持各种不同屏幕大小的全部方法_www.fengfly.com
 

下图展示了这个布局在一个更大的屏幕上显示的结果。

Android官方提供的让你的应用程序支持各种不同屏幕大小的全部方法_www.fengfly.com
 

可以注意到,即使屏幕的大小改变,视图之前的相对位置都没有改变。



本文地址 : http://www.fengfly.com/plus/view-215087-1.html
标签: Android
------分隔线----------------------------
最新评论 查看所有评论
发表评论 查看所有评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
验证码: