2B课程笔记分享_StudyJams_2017
课程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所示。

**图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的更多相关文章
- 1C课程笔记分享_StudyJams_2017
课程1C 概述 课程1C是创建一个生日贺卡应用的实践课程,所以本篇笔记分享主要记录个人的实践过程,此外分享一些比较零散的知识点. Drawable文件夹 Drawable文件夹是Android项目统一 ...
- 1A课程笔记分享_StudyJams_2017
1A课程 概述 课程1A主要讲解了Android UI的三种基本控件:TextView.ImageView以及Button.笔记的主体内容主要根据课程内容的讲解顺序来组织,此外我对一些个人比较感兴趣的 ...
- 2C课程笔记分享_StudyJams_2017
课程2C-实践:创建交互式应用 概述 课程2C的内容主要是练习巩固2A.2B中讲解的内容,并设计实现一款篮球比赛的计分板应用及其界面的美化. Warm-Up:准备活动 新建项目PracticeSet2 ...
- 2A课程笔记分享_StudyJams_2017
课程2A 概述 课程2A.2B的内容主要是关于创建交互式应用的基础知识.之前的L1课程主要是Android UI的基础设计知识,基本上没涉及到编程. 2A的讲解主要包括:使用变量来更新欲显示在屏幕上的 ...
- 1B课程笔记分享_StudyJams_2017
课程1B 概述 课程1B主要讲解了Android UI的ViewGroups(视图组).LinearLayout(线性布局).RelativeLayout(相对布局),Portrait Mode(竖屏 ...
- 3A课程笔记分享_StudyJams_2017
课程3A-面向对象编程(上) 概述 面向对象的思想在当今的软件开发中占据着主导地位. Java是一门完全面向对象的语言,是一种天然的分布式互联网软件的开发语言,在当今企业级应用中占据绝对领先地位,也是 ...
- 3B课程笔记分享_StudyJams_2017
昨晚才发现 Study Jams China的官方论坛也支持MarkDown,所以直接发在了那上面.http://www.studyjamscn.com/thread-21807-1-1.html
- L4课程_Firebase_笔记分享_StudyJams_2017
最近才发现Study Jams China的官方论坛也支持MarkDown,所以就直接把笔记发在了那儿. http://www.studyjamscn.com/thread-21855-1-1.htm ...
- 深度学习课程笔记(一)CNN 卷积神经网络
深度学习课程笔记(一)CNN 解析篇 相关资料来自:http://speech.ee.ntu.edu.tw/~tlkagk/courses_ML17_2.html 首先提到 Why CNN for I ...
随机推荐
- PAT 1103 Integer Factorization
The K-P factorization of a positive integer N is to write N as the sum of the P-th power of K positi ...
- JVM内存监控(五)
频繁fullgc排查 jvm配置 -Xms200m -Xmx200m -Xmn50m -XX:PermSize=30m -XX:+HeapDumpBeforeFullGC -XX:+HeapDumpA ...
- JavaScript中的call()和apply()方法,借此实现继承
1.方法定义 call方法: 语法:call([thisObj[,arg1[, arg2[, [,.argN]]]]]) 定义:调用一个对象的一个方法,以另一个对象替换当前对象. 说明: call ...
- float在内存中的存放
一个float型实数在内存中占4个字节,即32个二进制bit,从低位到高位依次叫第0位到第31位.这32位可以分为3个部分:符号位(第31位),阶码(第30位到第23位共8位),尾数(最低23位). ...
- HTML5:判断浏览器是否支持date类型
在某些情况下,我们需要判断当前浏览器是否支持date类型,如果支持的话,可以让用户用原生的datepicker来选取日期.如果不支持,则我们需要用自己实现的datepicker类库,来提供给用户. 在 ...
- HDU 5016 Mart Master II (树上点分治)
题目地址:pid=5016">HDU 5016 先两遍DFS预处理出每一个点距近期的基站的距离与基站的编号. 然后找重心.求出每一个点距重心的距离.然后依据dis[x]+dis[y] ...
- HDU2899 Strange fuction 【二分】
Strange fuction Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ...
- HDU1698 Just a Hook 【线段树】+【成段更新】+【lazy标记】
Just a Hook Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Tota ...
- grails一对多双向关联
前面分享了一些学习grails的心得,可是grails的知识还远不止这些,这次整理了一点有关grails一对多双向关联关系的知识.我认为这样的关联用的地方太多了,这次准备的样例是城市和区域的相关样例. ...
- android 5.0新特性学习总结之下拉刷新(一)
android 5.0 后google最终在 support v4 包下 添加了下拉刷新的控件 项目地址: https://github.com/stormzhang/SwipeRefreshLayo ...