在其他的XML文件中,每当XML属性接受一个字符串值时,您可以引用一个字符串资源与语法@string / <string_name>
例子:
<TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="@string/hello_world"/>
二、支持不同的屏幕
Android设备屏幕使用两种普通的分类属性:大小和密度。你应该期待你的应用程序将被安装在设备与屏幕范围在两个大小和密度。因此,你应该包括一些可替代资源,为不同的屏幕大小和密度,优化你的应用的外观。
声明不同的布局和位图你要用不同的屏幕,还应注意,屏幕方向(风景或肖像)被认为是一个变化的屏幕大小,所以许多应用程序应该在每个方向上修改布局来优化用户体验。
2.1创建不同的布局
优化你的用户体验不同屏幕大小,为每一个你想要支持的屏幕大小,你应该创建一个独一无二的布局XML文件。每一个布局都保存在恰当的资源目录里,命名为带-<screen_size>的后缀。例如,大屏幕的独特布局应保存在res/layout-large/ 。
MyProject/
res/
layout/
main.xml
layout-large/
main.xml
文件名称必须是完全相同,但它们的内容是不同的,为相应的屏幕大小,提供一个优化的UI。
@Override
protectedvoid onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
当你的应用程序正在运行时,系统在基于设备的屏幕大小的前提下从适当的布局目录中加载布局文件。更多的信息关于Android如何选择适当的资源是可用的资源提供指导
如果你想要提供一个特殊的布局景观,包括在大屏幕上,那么您需要使用两个large和land限定符:
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
2.2创建不同的位图
你应该总是提供位图资源,正确地扩展到每个广义密度桶:低、中、高和超高密度。这有助于你在所有屏幕密度上实现良好的图形质量和性能。
产生这些图像,你应该开始以你的原始资源并生成图像的矢量格式为每个密度使用下面的尺度:
- xhdpi: 2.0
- hdpi: 1.5
- mdpi: 1.0 (baseline)
- ldpi: 0.75low (ldpi), medium (mdpi), high (hdpi), extra high (xhdpi)
这意味着如果你为超高精度设备生成一个200 x200的图片,则在高精度设备中你应该生成相同的资源为150 x150,而在中精度的设备中生成相同的资源为100 x100,那么在低精度的设备中生成相同资源为75 x75
MyProject/
res/
drawable-xhdpi/
awesomeimage.png
drawable-hdpi/
awesomeimage.png
drawable-mdpi/
awesomeimage.png
drawable-ldpi/
awesomeimage.png 任何时候你参考@drawable / awesomeimage,系统选择合适的位图基于屏幕的密度。
三、支持不同的平台版本
当最新版本的Android经常为您的应用程序提供极好的api时,你应该继续支持旧版本的Android直到更多的设备得到更新。
为了在几个Android版本提供最好的特性和功能,您应该在你的应用程序上使用Android支持图书馆的功能,它允许你在老版本上使用最近的一些平台api。
3.1指定最小值和目标API的级别
AndroidManifest.xml文件描述应用程序的细节和能识别哪些版本的Android支持。具体来说,minSdkVersion和targetSdkVersion属性的 <uses-sdk>元素确定最低级别的API,你的应用程序兼容和最高级别的API针对你已经设计和测试过的应用程序。
例如:
<manifestxmlns:android="http://schemas.android.com/apk/res/android" ... ><uses-sdkandroid:minSdkVersion="4"android:targetSdkVersion="15"/>
...
</manifest>3.2检查系统在运行时的版本 Android在构建常量类中对于每个平台版本提供了一个独特的代码。使用这些代码在应用程序中构建条件,确保代码取决于更高级别的API的执行,只有当这些API是系统上可用。
privatevoid setUpActionBar(){// Make sure we're running on Honeycomb or higher to use ActionBar APIsif(Build.VERSION.SDK_INT >=Build.VERSION_CODES.HONEYCOMB){ActionBar actionBar = getActionBar();
actionBar.setDisplayHomeAsUpEnabled(true);}}3.3使用平台风格和主题
Android提供了用户体验的主题,让应用程序的外观和感受底层操作系统。这些主题可以应用到你的应用程序中,当此主题在你的manifest文件中时。通过使用这些建立的风格和主题,你的应用程序将自然地跟随最新的外观和感受与每个新发布的Android。
让你的activity看起来更像一个会话框:
<activityandroid:theme="@android:style/Theme.Dialog">
让你的activity 拥有一个 透明的背景:
<activityandroid:theme="@android:style/Theme.Translucent">
申请你自己的自定义主题应该在 /res/values/styles.xml中定义:
<activityandroid:theme="@style/CustomTheme">
为你的应用程序申请一个主题, 添加 android:theme 属性到 <application>元素中:
<applicationandroid:theme="@style/CustomTheme">
更多关于创建和使用主题,请阅读 Styles and Themes指南.
原文地址
本文转自Work Hard Work Smart博客园博客,原文链接:http://www.cnblogs.com/linlf03/archive/2013/03/08/2949753.html,如需转载请自行联系原作者