为什么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. ChipScope Pro内核插入器
  2. sublime_text3代码自动提示补全
  3. c语言测验答案,C语言测验题答案.doc
  4. 我对架构设计的5点思考:网关、业务逻辑、数据访问
  5. linux下有四个作业优先级,第一次作业:对Linux系统分析
  6. jQuery学习(三)—jQuery使用步骤以及注意事项
  7. 9.进程间通信的方式有哪些?各自的优缺点及应用选择?
  8. 马云卸任演讲全文:青山不改 绿水长流 后会有期
  9. 电脑chm文件打不开解决方法
  10. java 调用felix_寻找在动态加载Jar文件中使用Apache Felix并在Java中在运行时实例化类的基本示例...
  11. 将word转换html格式的文件,word 保存成 html格式文件
  12. 一篇解析论文MapReduce
  13. python使用百度OCR接口识别图片文字
  14. 基于Python+django的 医院排队叫号系统-计算机毕业设计
  15. potplayer直播源合集
  16. HTTPS 证书手机浏览有风险怎么办
  17. Win11设备管理器在哪里打开?
  18. 日常刷题_cf_6.26
  19. Win系统 - 浅谈笔记本散热系统
  20. market.Benchmarking: (models.W042) Auto-created primary key used when not defining a primary key typ

热门文章

  1. 人工智能(5)---一文解读人工智能创业的5大坑
  2. 大脑活动与认知: 热力学与信息论的联系
  3. 70页论文,图灵奖得主Yoshua Bengio一作:「生成流网络」拓展深度学习领域
  4. 人工智能vs人类智能小传
  5. 【综述专栏】图神经网络综述
  6. 5G产业发展最新进展深度解析(144页PPT)
  7. 最新数据:一图看清全球393家独角兽公司
  8. 一文看懂全球半导体格局
  9. 今日头条告今日油条赔 200 万,各大公司表示不服
  10. 腾讯云产业生态战略再升级,“4个100”与合作伙伴助力中小企业转型升级