课程2B-创建交互式应用(下)

概述

  • 课程2B的内容主要包括:使用变量来更新欲显示在屏幕上的内容,为按钮添加事件响应(联系XML属性与Java方法)逻辑等。
  • 后续的课程会逐步深入地讲解使用Java开发基本Android程序需要掌握的语言知识、数据库知识、编程技巧以及面向对象编程思想等等,大家一起加油!

Polishment-修饰原有布局

  • 课程2B首先着眼于改进2A中"蜷缩"在屏幕左上部分的咖啡订购布局。

  • 从这种狭窄的垂直长条形布局"解脱"出来有两个好处

        1) 用户能够更快地速览(scan over)整个布局,而之前的长条形布局在纵向上的内容太多;

        2) 能够更多地利用水平方向上的空间,减少视觉上的突兀感,使得界面更加美观。

  • 按照之前讲过的界面设计"三部曲"(选择视图->放置视图->设置视图风格)的套路:

        1) 选择视图:保持原有的视图控件不变;

        2) 设置视图的位置:即Header、Button以及TextView之间的位置;

        3) 设置视图风格:除了设置各种Views控件的align属性,还需注意TextView与Button控件之间的间距(用padding或者margin实现,但最好用margin,因为过大的padding可能会增大按钮的宽高)等细节。

  • Nested ViewGroups-嵌套视图组的使用

        a) 一个ViewGroup中可以嵌套另外的ViewGroup,开发人员可以灵活使用嵌套视图组,以达到预期的视觉效果;

        b) 理论上,可以做无数层的ViewGroups嵌套,但是,最好不要滥用视图组的嵌套:仅在必要的时候使用视图组的嵌套。因为过多的嵌套层数对程序性能来说十分不利:Android会花费较长时间来(递归地)计算每个控件的精确位置。

  • 建议:为了正确地使用并不直观的XML代码中视图组嵌套的方法来达到期望的视觉效果,可以使用事先画出视图层级草图的办法来帮助理清视图组嵌套的层次关系。

    步骤:设计界面布局 ----> 画出界面的Views的树状图 ----> 搭建XML中视图组层次关系的"骨架"(skeleton)

String类型的变量

  • 在Java代码中使用String类型的变量,可以避免字符串硬编码(hard-coded)于XML源文件中。硬编码的字符串,一旦需要更改,则所有具有相同字面值的字符串都需要更改。

  • 声明String类型的变量

        a)变量取名:尽量做到“见名知意”;

        b)转义字符(escape sequence):如果想在字符串字面值中显示一些特殊的字符(换行、回车、制表符等),需要在字面值中使用转义字符,如图1所示。

![Fig1. 转义字符](http://images2015.cnblogs.com/blog/1161127/201705/1161127-20170528021359266-198222842.png)
**图1.** 转义字符

  • String Concatenation_字符串拼接:

        a)字符串与字符串之间的拼接,可以是String类型的变量,也可以是字符串字面值;

        b)字符串与其他类型变量的拼接:比如字符串与int类型的变量之间的拼接:
String str = "String Concatenation";
int num = 666;
System.out.println(str + " with an interger:\t" + num);

    以上代码会输出String Concatenation with an interger:    666并换行。在将以上Java代码编译成字节码(Byte Code)时,编译器对变量num进行了隐式自动类型转换:将其转换成了String类型的变量。

2B课程笔记分享_StudyJams_2017的更多相关文章

  1. 1C课程笔记分享_StudyJams_2017

    课程1C 概述 课程1C是创建一个生日贺卡应用的实践课程,所以本篇笔记分享主要记录个人的实践过程,此外分享一些比较零散的知识点. Drawable文件夹 Drawable文件夹是Android项目统一 ...

  2. 1A课程笔记分享_StudyJams_2017

    1A课程 概述 课程1A主要讲解了Android UI的三种基本控件:TextView.ImageView以及Button.笔记的主体内容主要根据课程内容的讲解顺序来组织,此外我对一些个人比较感兴趣的 ...

  3. 2C课程笔记分享_StudyJams_2017

    课程2C-实践:创建交互式应用 概述 课程2C的内容主要是练习巩固2A.2B中讲解的内容,并设计实现一款篮球比赛的计分板应用及其界面的美化. Warm-Up:准备活动 新建项目PracticeSet2 ...

  4. 2A课程笔记分享_StudyJams_2017

    课程2A 概述 课程2A.2B的内容主要是关于创建交互式应用的基础知识.之前的L1课程主要是Android UI的基础设计知识,基本上没涉及到编程. 2A的讲解主要包括:使用变量来更新欲显示在屏幕上的 ...

  5. 1B课程笔记分享_StudyJams_2017

    课程1B 概述 课程1B主要讲解了Android UI的ViewGroups(视图组).LinearLayout(线性布局).RelativeLayout(相对布局),Portrait Mode(竖屏 ...

  6. 3A课程笔记分享_StudyJams_2017

    课程3A-面向对象编程(上) 概述 面向对象的思想在当今的软件开发中占据着主导地位. Java是一门完全面向对象的语言,是一种天然的分布式互联网软件的开发语言,在当今企业级应用中占据绝对领先地位,也是 ...

  7. 3B课程笔记分享_StudyJams_2017

    昨晚才发现 Study Jams China的官方论坛也支持MarkDown,所以直接发在了那上面.http://www.studyjamscn.com/thread-21807-1-1.html

  8. L4课程_Firebase_笔记分享_StudyJams_2017

    最近才发现Study Jams China的官方论坛也支持MarkDown,所以就直接把笔记发在了那儿. http://www.studyjamscn.com/thread-21855-1-1.htm ...

  9. 深度学习课程笔记(一)CNN 卷积神经网络

    深度学习课程笔记(一)CNN 解析篇 相关资料来自:http://speech.ee.ntu.edu.tw/~tlkagk/courses_ML17_2.html 首先提到 Why CNN for I ...

随机推荐

  1. ORM 操作

    官方文档 一.操作 基本操作 # 增 models.Tb1.objects.create(c1='xx', c2='oo') # 增加一条数据,可以接受字典类型数据 **kwargs obj = mo ...

  2. Vue动态组件&异步组件

    在动态组件上使用keep-alive 我们之前曾经在一个多标签的界面中使用is特性来切换不同的组件: Vue.js的动态组件模板 <component v-bind:is="curre ...

  3. windows和linux下 Python2,Python3 的环境及安装

    目录 windows和linux下 Python2,Python3 的环境及安装 window下安装 一. 手动安装 二. pip安装 linux下 安装 更新Python 笔者有话 windows和 ...

  4. Git 基础教程 之 别名

     配置别名, 例如:       git config --global alias.st status                                      git config ...

  5. 微信小程序如何引用iconfont图标

    最近在研究微信小程序,自己写demo的时候想要引用巴里巴巴图标库的图标,于是: @font-face { font-family: 'iconfont'; src: url('iconfont.eot ...

  6. 对SHH的公钥和私钥的简单理解

    SSH是在应用层和传输层基础上的安全协议 SSH提供了两种级别的安全验证: 第一基于密码的安全验证:账号.密码,但可能有别的服务器冒充真正的服务器,无法避免被“中间人”攻击(man-in-the-mi ...

  7. BZOJ1191 超级英雄Hero (匈牙利算法)

    直接跑匈牙利,注意到“只有当选手正确回答一道题后,才能进入下一题,否则就被淘汰”,一旦无法满足就直接退出. #include <cstdio> #include <algorithm ...

  8. 【学QT】2 - QT/E环境的建立

    Arm-Linux嵌入式QT/E环境的建立(qt/e 3.x系列)          QT/E 3.x系列比QT/E 2.x系列有非常大的改进,大大提高了开发进度,不再使用tmake,安装也更简单.但 ...

  9. nyoj_448_寻求最大数_201402261424

    寻找最大数 时间限制:1000 ms  |           内存限制:65535 KB 难度:2   描述 请在整数 n 中删除m个数字, 使得余下的数字按原次序组成的新数最大, 比如当n=920 ...

  10. 查看TEMP 表空间usage

    SELECT S.sid || ','|| S.serial# sid_serial, S.username, S.osuser, P.spid, S.module, P.program, SUM ( ...