为什么80%的码农都做不了架构师?>>>   

在Android应用开发过程中,屏幕上控件的布局代码和程序的逻辑代码通常是分开的。界面的布局代码是放在一个独立的xml文件中的,这个文件里面是树型组织的,控制着页面的布局。通常,在这个页面中会用到很多控件,控件会用到很多的资源。Android系统本身有很多的资源,包括各种各样的字符串、图片、动画、样式和布局等等,这些都可以在应用程序中直接使用。这样做的好处很多,既可以减少内存的使用,又可以减少部分工作量,也可以缩减程序安装包的大小。

下面从几个方面来介绍如何利用系统资源。

1)利用系统定义的id

比如我们有一个定义ListView的xml文件,一般的,我们会写类似下面的代码片段。

<ListView

android:id="@+id/mylist"

android:layout_width="fill_parent"

android:layout_height="fill_parent"/>

这里我们定义了一个ListView,定义它的id是"@+id/mylist"。实际上,如果没有特别的需求,就可以利用系统定义的id,类似下面的样子。

<ListView

android:id="@android :id/list"

android:layout_width="fill_parent"

android:layout_height="fill_parent"/>

在xml文件中引用系统的id,只需要加上“@android :”前缀即可。如果是在Java代码中使用系统资源,和使用自己的资源基本上是一样的。不同的是,需要使用android.R类来使用系统的资源,而不是使用应用程序指定的R类。这里如果要获取ListView可以使用android.R.id.list来获取。

2)利用系统的图片资源

假设我们在应用程序中定义了一个menu,xml文件如下。

<?xml version="1.0" encoding="utf-8"?>

<menu xmlns:android="http://schemas.android.com/apk/res/android">

<item

android:id="@+id/menu_attachment"

android:title="附件"

android:icon="@android :drawable/ic_menu_attachment" />

</menu>

其中代码片段android:icon="@android :drawable/ic_menu_attachment"本来是想引用系统中已有的Menu里的“附件”的图标。但是在Build工程以后,发现出现了错误。提示信息如下:

error: Error: Resource is not public. (at 'icon' with value '@android :drawable/ic_menu_attachment').

从错误的提示信息大概可以看出,由于该资源没有被公开,所以无法在我们的应用中直接引用。既然这样的话,我们就可以在Android SDK中找到相应的图片资源,直接拷贝到我们的工程目录中,然后使用类似android:icon="@drawable/ic_menu_attachment"的代码片段进行引用。

这样做的好处,一个是美工不需要重复的做一份已有的图片了,可以节约不少工时;另一个是能保证我们的应用程序的风格与系统一致。

经验分享:

Android中没有公开的资源,在xml中直接引用会报错。除了去找到对应资源并拷贝到我们自己的应用目录下使用以外,我们还可以将引用“@android”改成“@*android”解决。比如上面引用的附件图标,可以修改成下面的代码。

android:icon="@*android:drawable/ic_menu_attachment"

修改后,再次Build工程,就不会报错了。

3)利用系统的字符串资源

假设我们要实现一个Dialog,Dialog上面有“确定”和“取消”按钮。就可以使用下面的代码直接使用Android系统自带的字符串。

<LinearLayout

android:orientation="horizontal"

android:layout_width="fill_parent"

android:layout_height="wrap_content">

<Button

android:id="@+id/yes"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:layout_weight="1.0"

android:text="@android :string/yes"/>

<Button

android:id="@+id/no"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:layout_weight="1.0"

android:text="@android :string/no"/>

</LinearLayout>

如果使用系统的字符串,默认就已经支持多语言环境了。如上述代码,直接使用了@android :string/yes和@android :string/no,在简体中文环境下会显示“确定”和“取消”,在英文环境下会显示“OK”和“Cancel”。

4)利用系统的Style

假设布局文件中有一个TextView,用来显示窗口的标题,使用中等大小字体。可以使用下面的代码片段来定义TextView的Style。

<TextView

android:id="@+id/title"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:textAppearance="?android:attr/textAppearanceMedium" />

其中android:textAppearance="?android:attr/textAppearanceMedium"就是使用系统的style。需要注意的是,使用系统的style,需要在想要使用的资源前面加“?android:”作为前缀,而不是“@android :”。

5)利用系统的颜色定义

除了上述的各种系统资源以外,还可以使用系统定义好的颜色。在项目中最常用的,就是透明色的使用。代码片段如下。

android:background ="@android :color/transparent"

经验分享:

Android系统本身有很多资源在应用中都可以直接使用,具体的,可以进入android-sdk的相应文件夹中去查看。例如:可以进入$android-sdk$\platforms\android-8\data\res,里面的系统资源就一览无余了。

开发者需要花一些时间去熟悉这些资源,特别是图片资源和各种Style资源,这样在开发过程中,能够想到有相关资源并且直接拿来使用。

转载于:https://my.oschina.net/luqin/blog/106615

Android开发优化之——对界面UI的优化(经验分享)相关推荐

  1. [Android] Android开发优化之——对界面UI的优化(2)

    在Android应用开发过程中,屏幕上控件的布局代码和程序的逻辑代码通常是分开的.界面的布局代码是放在一个独立的xml文件中的,这个文件里面是树型组织的,控制着页面的布局.通常,在这个页面中会用到很多 ...

  2. Android开发社招面试解答之性能优化,鬼知道我经历了啥

    写在前面 1月初失业,找了近2个多月的工作了,还没找到心仪的工作,感觉心好慌,不知道该怎么办了?找不到工作的时候压力很大,有人说自信会很受打击,还有人说会很绝望,是人生的低谷--尽管很多时候我们自己知 ...

  3. 全数据驱动产品优化,美国互联网公司A/B测试经验分享

     全数据驱动产品优化,美国互联网公司A/B测试经验分享 width="22" height="16" src="http://hits.sinaj ...

  4. android平台短视频技术之 视频编辑的经验分享

    android平台短视频技术之 视频编辑的经验分享. 提示一: 各位看官,这里分享的是视频编辑,即剪切/拼接/分离/合并/涂鸦/标记/叠加/滤镜等对视频的编辑操作.不是流媒体网络播放等功能,请注意. ...

  5. android如何用代码实现界面ui

    如何用代码实现界面ui demo: 1.AndroidManifest.xml <?xml version="1.0" encoding="utf-8"? ...

  6. 【Android开发基础】应用界面主题Theme使用方法

    主题Theme就是用来设置界面UI风格,可以设置整个应用或者某个活动Activity的界面风格.在Android SDK中内置了下面的Theme,可以按标题栏Title Bar和状态栏Status B ...

  7. Android开发-WebView的缓存处理和性能优化 实现H5页面秒开【四】

    前言 老早之前就想总结下Webview相关的知识点了,因为互联网大潮中,很多APP都会使用到Webview,像那些不计其数的电商APP,无一例外的使用Webview:或者一些非电商APP中的像广告页面 ...

  8. eclipse Android 开发基础 Activity 窗体 界面

    eclipse Android 开发基础 新建工程 新建布局layout,new Android Activity就相当于窗体Form. 新建Activity自动生成src下同名的java代码. pu ...

  9. 安卓嵌入式开发教程!Android开发热门前沿知识,2年以上经验必看

    前言 近几年,Android 开发的套路日趋成熟,越来越多的 Android 工程师获得了「高级」的称号,也有不少人在参与公司的 App 从无到有再到火爆的整个开发过程中,顺理成章地拿到了 Leade ...

最新文章

  1. Python会消亡吗?
  2. python中的object是什么意思_Python object类中的特殊方法代码讲解
  3. Scala变量和常量
  4. 正经科普:12306能扛得住明星并发出轨级的流量吗?
  5. 解决 Angular 官网下载的库 Schematics 在 windows 环境不支持 .. 的临时解决方案
  6. ajax能运用到app吗,Jquery之Ajax运用 学习运用篇
  7. visual studio code更新
  8. ubuntu环境变量相关文件/etc/profile,/etc/bash.bashrc,~/.profile,~/.bashrc区别
  9. 【读书笔记】摘自Google开源项目风格指南-C++风格指南
  10. 零基础入门深度学习(2) - 线性单元和梯度下降
  11. c++ List、Vector、Stack、Queue使用
  12. python标准化输出到txt_3大利器推荐,帮你写出规范漂亮的python代码
  13. tcping要安装什么工具linux,Linux下的TCP测试工具——TCPING安装简明教程
  14. zzulioj题库题解(持续更新中.......)
  15. 虚拟机C盘上建HTML文件怎,电脑如何通过VMware虚拟机映射本地磁盘实现文件共享...
  16. java爬小说_java爬虫实战开发小说网站
  17. python是一种蟒蛇使用的语言_python树莓派系列教程一:初识大蟒蛇 python(python语言环境搭建篇)...
  18. 百度鹰眼轨迹后台的移植
  19. 用支付宝小程序,做一笔价值百亿的洗衣生意
  20. Java基于springboot+vue的眼镜销售购物商城系统 element 前后端分离

热门文章

  1. 人类将可能操控AI?神经网络语言处理工作原理被破解
  2. 谷歌机器智能大牛:AI模型要真正理解人类语言,关键是「序列学习」
  3. 高文院士:中国在AI领域有哪些长板和短板
  4. 我们生活在一个虚拟世界的概率有多大?
  5. 信息科学部鼓励科学家更多瞄准“原创”研究
  6. 从城市治理到城市“智”理,AI 不仅是城市管理的“眼睛”
  7. 科技巨头纷纷从刷脸转向“刷手”,指纹如何扛起生物识别大旗?
  8. 由4G向5G进发的物联网:NB-IoT与LTE-M
  9. 中国科学家将绘制最精细人脑三维“地图”
  10. 谷歌母公司投资成绩:4大机构各有侧重,投资2个马斯克项目