Android 学习笔记五:支持不同的设备
来源:互联网 发布:js object 遍历 值 编辑:程序博客网 时间:2024/04/25 10:28
这里所说的不同设备包括两种不同:操作系统语言,以及屏幕大小和像素密度。
国际化
适应不同的操作系统语言,即平时说的 i18n(internationalization),即国际化。我们这里只讨论最简单的一种情况,就是对不同的系统显示对应语言的文案,其实还有更多的包括对其方式、操作习惯等就不考虑了。
前面讲到过,不要在代码中写死文案,所有文案相关的字符串都应该写在 strings.xml
中。这样做国际化就简单很多,只需要再新建一个 values-xxx
文件,并在里面放上一个 strings.xml
文件即可。当安卓应用启动的时候会自动选择对应的语言,如果没有则会自动降级到 values
。比如 如果定义了一个 values-zh/strings.xml
,那么当操作系统为中文的时候就会自动加载这个文件中的值。而且 strings.xml
里面的写法完全一样。
现在创建一个 values-zh/strings.xml
文件,并且在里面写上如下代码:
<resources> <string name="app_name">测试应用</string> <string name="action_settings">设置</string> <string name="title">标题</string> <string name="button_login">登录</string> <string name="username_hint">输入账号</string> <string name="username_label">账号</string> <string name="password_hint">输入密码</string> <string name="password_label">密码</string> <string name="title_activity_profile">首页</string> <string name="hello_world">你好!</string> <string name="action_search">搜索</string></resources>
然后把 values/strings.xml
里面的字符串都改成英文:
<resources> <string name="app_name">HelloWorld</string> <string name="action_settings">Settings</string> <string name="title">title</string> <string name="button_login">login</string> <string name="username_hint">username</string> <string name="username_label">username</string> <string name="password_hint">password</string> <string name="password_label">password</string> <string name="title_activity_profile">ProfileActivity</string> <string name="hello_world">Hello world!</string> <string name="action_search">search</string></resources>
然后运行,在模拟器中设置不同的语言试试。
适应不同的屏幕大小和像素密度
屏幕大小是指屏幕的高度和宽度,而像素密度指的是多少个物理像素来显示一个逻辑像素。和上面的国际化几乎一样的,都是通过增加不同的资源文件来实现适应不同的屏幕。
如果你的应用支持横屏的话,横屏其实是被当做了另一种屏幕尺寸的。
下面我们来修改一下 MainActivity
,做一个简单的改动,让他在大屏幕上是水平排列的,而在小屏幕上是垂直排列的。
在 res
下面新建一个 layout-large/activity_main.xml
文件,把原来的 activity_main.xml
复制到这里来,需要对 layout-large/activity_main.xml
进行一些修改:
- android:orientation=“vertical” 改成 android:orientation=”horizontal”
- 把里面的几个组件全部改成 android:layout_width=“wrap_content”,不然宽度太宽之后会把后面的寄到屏幕外
修改之后的代码如下:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity" android:orientation="horizontal"> <TextView android:text="@string/title" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <EditText android:id="@+id/username" style="@style/EditTextStyle" android:layout_height="wrap_content" android:layout_width="wrap_content" android:drawableLeft="@drawable/ic_phone" android:drawableStart="@drawable/ic_phone" android:hint="@string/username_hint" android:imeActionId="@+id/username" android:imeOptions="actionUnspecified" android:inputType="text"/> <EditText android:id="@+id/password" style="@style/EditTextStyle" android:layout_height="wrap_content" android:layout_width="wrap_content" android:drawableLeft="@drawable/ic_lock" android:drawableStart="@drawable/ic_lock" android:hint="@string/password_hint" android:imeActionId="@+id/password" android:imeOptions="actionUnspecified" android:inputType="textPassword"/> <Button android:id="@+id/button_login" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/button_login" /></LinearLayout>
然后运行,在不同的模拟器上会看到有不同的布局。
对不同像素密度的设备也是同样的方式,只需要创建 drawable-h/
之类的文件夹,并且在里面放上对应的图片就行了。
- Android 学习笔记五:支持不同的设备
- android --支持不同的设备
- Android支持不同的设备
- Android学习路线(十七)支持不同设备——支持不同的语言
- Android学习路线(十八)支持不同设备——支持不同的屏幕
- Android Training - 支持不同的设备
- Android入门之支持不同的设备
- Android支持不同设备上的显示
- Android Training学习笔记之适配不同的设备
- 支持不同的设备
- 支持不同的设备
- 支持不同的设备
- Android学习路线(十九)支持不同设备——支持不同(Android)平台版本
- Android学习路线(十六)支持不同设备
- 跟Google学习Android开发-起始篇-支持不同的设备(1)
- 跟Google学习Android开发-起始篇-支持不同的设备(2)
- 跟Google学习Android开发-起始篇-支持不同的设备(3)
- 跟Google学习Android开发-起始篇-支持不同的设备
- Android 学习笔记四:创建工具栏按钮
- hdu4289Control 最大流
- zoj 1610 Count the Colors(线段树 区间更新)
- 项目5——后缀表达式
- github上的安卓开源库汇总
- Android 学习笔记五:支持不同的设备
- MySQL学习笔记20151007数据类型主键外键多对多设计思想
- hdu4768Flyer 二分
- java bind object-c by using bro-gen
- thinkphp-点击量的实现,执行sql用execute()
- request.getRequestURL()和request.getRequestURI()
- rcvd lcp termreq id=0x2 mppe required but not available
- 欢迎使用CSDN-markdown编辑器
- unity之Ray、RaycastHit 、Raycast