android在java代码中处理像素适配和国际化适配的问题
2016-04-14 19:12
387 查看
首先解释下文章标题:android在处理国际化适配或者机型适配时有自己的逻辑,利用res里面的文件夹处理这种变化,比如values中存放默认的资源(英文资源),values-zh-rCN中存放中文资源,values-es-rES中存放西班牙语资源,又或者是xml中存放默认的英文资源,xml-zh-rCN存放中文资源,xml-es-rES存放西班牙语资源,这样的机制在大部分情况下都可以处理各种问题,只需要在xml文件中引用资源id,android系统会自动处理。
但是本篇文章说的是上述android机制处理不了的情况,如果你的xml规定比较严格,或者不方便修改,或者代码耦合性太高,总之就是各种意外的情况导致你会想到如何在java代码中动态的控制这些View的属性,同时还需要满足适配的需求,这就是我要说的内容:
首先需要在value文件夹下的dimens.xml中的resources的子资源中添加如下代码:
然后你就可以在其他国际化资源中添加相同的内容了,只不过是对应的值不同。
比如在value-zh-rCN文件夹下的dimens.xml中的resources的子资源中添加:
但是本篇文章说的是上述android机制处理不了的情况,如果你的xml规定比较严格,或者不方便修改,或者代码耦合性太高,总之就是各种意外的情况导致你会想到如何在java代码中动态的控制这些View的属性,同时还需要满足适配的需求,这就是我要说的内容:
首先需要在value文件夹下的dimens.xml中的resources的子资源中添加如下代码:
<item name="container_left" format="float" type="dimen">474</item>
然后你就可以在其他国际化资源中添加相同的内容了,只不过是对应的值不同。
比如在value-zh-rCN文件夹下的dimens.xml中的resources的子资源中添加:
<item name="container_left" format="float" type="dimen">324</item> 其余类似。 然后就就是在java代码中编写相匹配的代码了:
ViewGroup container = getContainer();//container就是控件 ViewGroup.LayoutParams containerParams = container.getLayoutParams(); TypedValue outValue = new TypedValue(); mContext.getResources().getValue(R.dimen.container_left, outValue, true);//mContext是自己传的context对象 containerParams.width = (int) outValue.getFloat(); container.setLayoutParams(containerParams); 另外为了更容易理解,我把xml也贴上: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/tab_container" android:layout_width="216dp" android:layout_height="match_parent" android:orientation="vertical"> </LinearLayout> 就是说可以在java代码中动态的控制这个控件的宽度。
相关文章推荐
- Android滑动(二)——滑动方法之layout() 及相应封装API
- Android 最火的快速开发框架XUtils
- databinding 程序包 xxx.xxx.databinding.xxxBinding 不存在
- 讯飞语音包实现Android语音识别
- 通过JUnit进行Android单元测试
- ListView的使用(二)
- android MVP 开发模式
- ListView的使用(一)
- Android定时广播和定时服务两种实现方式
- Android - JUnit Test(单元测试)
- Error:Android Packager: [应用名] java.io.FileNotFoundException: G:\xxx\应用名.unaligned.apk (拒绝访问。)
- Android之system_server与zygote之作用
- Android之操作SD卡(一)
- 使用Android studio创建apk
- Android仿手机QQ空间动态评论,自动定位到输入框
- Android官方开发文档Training系列课程中文版:管理音频播放之管理音频焦点
- Android Gradle plugin 0.7.0: “duplicate files during packaging of APK”
- Android中全屏设置
- 如何获取Android唯一标识(唯一序列号)
- android相关技能