支持不同的屏幕

     Android使用两种一般性质分类设备屏幕:大小和密度你应该希望你的应用程序将被安装在设备屏幕大小和密度范围。因此,你应该包括一些可替代资源,优化你的应用程序的外观不同的屏幕尺寸和密度。有四种广义大小:小,正常的,大,超大和四个广义密度:低(ldpi),中等(mdpi),高(hdpi)、额外的高(xhdpi)声明不同的布局和位图你想使用不同的屏幕,你必须将这些可替代资源在不同的目录,类似于如何为不同语言的字符串。也请注意,屏幕方向(风景或肖像)被认为是屏幕大小的一种变体,所以许多应用程序应该修改布局优化用户体验在每个方向。 

    创建不同的布局:

优化用户体验在不同的屏幕尺寸,您应该创建一个独特的布局XML文件为每个屏幕尺寸你想要支持的。每个布局应该保存到相应的资源目录,命名——< screen_size >后缀。例如,独特的布局大屏幕应该在res / layout-large得救。

MyProject/
    res/
        layout/
            main.xml
        layout-large/
            main.xml
     文件名必须完全相同,但是他们的内容是不同的,以提供一个优化的用户界面对应的屏幕大小。
     只是参考应用程序像往常一样的布局文件:

@Override
 protected void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);
     setContentView(R.layout.main);
}
     系统加载适当的布局的布局文件目录根据屏幕大小的设备应用程序正在运行。 安卓如何选择合适的资源的更多信息可以在提供资源指南。
    另外一个例子,这里有一个项目与横向的另一个布局:

    

MyProject/
    res/
        layout/
            main.xml
        layout-land/
            main.xml

    默认情况下, layout/main.xml文件是用来描绘取向。

    如果你想提供一个特殊的景观布局,包括在大屏幕上,那么您需要使用大型和土地限定符:

MyProject/
    res/
        layout/              # default (portrait)
            main.xml
        layout-land/         # landscape
            main.xml
        layout-large/        # large (portrait)
            main.xml
        layout-large-land/   # large landscape
            main.xml
      注意:安卓3.2及以上支持定义屏幕尺寸的一种先进方法,允许您指定资源基于最小宽度和高度的屏幕尺寸的密度独立像素。 这节课不包括这个新技术。更多的信息,阅读设计多个屏幕。

 

 创建不同的位图

     你应该提供正确的位图资源扩展到每个广义密度桶:低、中、高、特高的密度。这有助于你实现良好的图形质量和性能在所有屏幕密度。
        生成这些图片,你应该开始你的原始资源为每个密度矢量格式和生成图像使用以下尺寸范围:

      

  • xhdpi: 2.0
  • hdpi: 1.5
  • mdpi: 1.0 (baseline)
  • ldpi: 0.75

这意味着如果你生成一个200 x200型图像xhdpi设备,你应该在150 x150 hdpi生成相同的资源,为mdpi 100 x100,75 x75 ldpi设备。
然后,将文件放置到适当的可拉的资源目录:

MyProject/
    res/
        drawable-xhdpi/
            awesomeimage.png
        drawable-hdpi/
            awesomeimage.png
        drawable-mdpi/
            awesomeimage.png
        drawable-ldpi/
            awesomeimage.png
      

支持不同平台的版本

  尽管最新版本的Android经常为应用程序提供伟大的api,你应该继续支持旧版本的Android直到更多的设备得到更新。 这节课向你展示了如何利用最新的api,同时继续支持旧版本。

平台版本的仪表板是定期更新显示活跃的分布运行每个版本的Android设备,根据设备的数量,访问谷歌商店。 一般来说,它是一个很好的实践支持大约90%的活跃的设备,同时针对应用程序到最新版本。
提示:为了提供最好的特性和功能跨多个Android版本中,你应该在你的应用中使用Android支持库,它允许您使用几个平台api在旧版本。

     1:指定最小和目标API级别

      AndroidManifest。xml文件描述应用程序的详细信息和识别它支持哪个版本的Android。具体来说,minSdkVersion和targetSdkVersion属性的< uses-sdk元素识别应用程序兼容的API级别最低和最高的API级别,你设计和测试应用程序。

      

<manifest xmlns:android="http://schemas.android.com/apk/res/android" ... 
1549
>
    <uses-sdk android:minSdkVersion="4" android:targetSdkVersion="15" />
    ...
</manifest>

       随着新版本的Android被释放,一些风格和行为可能会改变。允许应用程序利用这些变化,并确保你的应用适合的风格每个用户的设备,你应该设置thetargetSdkVersion值以匹配最新的Android版本。

       2:在运行时检查系统版本

      Android提供了一个独特的代码构建常量类为每个平台版本。使用这些代码在您的应用程序来构建条件,确保API的代码依赖于高水平只有当这些API执行系统上可用。

private void setUpActionBar() {
    // Make sure we're running on Honeycomb or higher to use ActionBar APIs
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
        ActionBar actionBar = getActionBar();
        actionBar.setDisplayHomeAsUpEnabled(true);
    }
}

       注意:当解析XML资源,Android忽略XML属性不支持当前的设备。所以你可以安全地使用XML属性仅支持的新版本,而不用担心打破时,旧版本的代码。例如,如果您设置targetSdkVersion =“十一”,你的应用包括ActionBar默认情况下在Android 3.0和更高版本。然后将菜单项添加到操作栏,您需要设置android:showAsAction =“ifRoom”在你的菜单资源的XML。这样做是安全的在cross-version XML文件,因为旧版本的Android只是忽略showAsAction属性(即你notneed单独的版本在res / menu-v11 /)。

      3:  使用平台的风格和主题

Android提供了用户体验主题,让应用程序的外观和感觉底层操作系统。这些主题可以应用到你的应用程序清单文件中。通过使用这些建于风格和主题,应用自然会追随最新的外观和感觉与每个新版本的Android。
让你的活动看起来像一个对话框:

    

<activity android:theme="@android:style/Theme.Dialog">

让你的活动有一个透明的背景:

<activity android:theme="@android:style/Theme.Translucent">

应用中定义您自己的自定义主题/ res /价值/ styles.xml:
<
<activity android:theme="@style/CustomTheme">

一个主题应用于整个应用程序(所有活动),加入android:主题<应用>元素属性:
<application android:theme="@style/CustomTheme">



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值