课程2A

概述

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

交互

  • 为了在Java方法中与视图布局中的UI对象进行交互,最好在XML文件中定义该对象的id。这样,在Java代码中就可以直接通过访问这些UI对象,非常方便。

变量

  • 顾名思义,变量(variables)的作用是存储可变的"量",方便程序员实现开发的目标。作为编程语言中一个十分基本的概念,变量在编程中不可或缺。 与字面值(literals)相比,变量具有灵活的特点,而且很多时候只有变量才能满足正确实现程序逻辑的需要。
  • 变量 vs 字面值:当需要更改值的时候,所有相同的字面值都需更改;而对于变量来说,只需在变量赋值处更新该值。
  • 执行创建变量的代码后,内存中会开辟出一段空间(视变量的类型而定),用以存储变量中的值,程序员可以在需要的时候更改该值,用以实现正确的程序逻辑。
  • 变量的声明与定义。对于强类型的编程语言,声明变量的基本语法为:类型 变量名;声明的同时还可以初始化变量,这两个操作合起来即为变量的定义:
int numberOfCoffees = 2;

    注意运算符"="的左右都有空格的细节,这涉及到代码风格的问题。一个良好的代码风格应该具有合适的缩进、运算符左右的空格、适时的换行等,这样可以使得代码更加清晰,可读性更强。在平时编程中,应该注意养成良好的代码风格。清晰的代码对于减少BUGs,降低调试难度也有一定帮助。

练习

  • 选择视图:

        1. 列出自己打算使用的所有视图;

        2. 确定视图位置(比较关键的是确定使用哪种视图组作为根视图);

        3. 设置视图样式(textSize,FontFamily等属性);

  • 为按钮添加事件响应函数:对于单击事件,在XML的某个按钮标签中引入属性onClick,属性取值为Java代码中对应的方法的名字。这样,就可以把单击事件处理函数与该按钮绑定,实现交互。

  • 使用伪代码,使自己的思路可以更加清晰。 不至于迷失在代码实现的繁琐细节之中

  • 调试练习:

        1. DEBUG:指消除程序中的BUG的调试过程。

        2. Compile Time Error:编译时错误,包括常见的语法错误(代码不符合语言的语法规定,比如未匹配的括号、一条语句的最后缺少分号等等)、语义错误(比如操作符与操作数类型不匹配)等;还包括找不到所引用的文件(C++中的.h文件、lib静态库、dll动态库,Java中的Jar包)的错误。

        3. Runtime Time Error:运行时错误,包括由逻辑错误、数组访问越界、空指针等在运行时引起的错误。此类错误一般比编译时错误更难解决,特别是逻辑错误。所以,在写具有较复杂逻辑的代码前,程序员自身必须把整个程序执行的流程想清楚。否则,调试代码的时间会远远超过想清楚之前直接写代码"节省"下的时间。

        4. System Log: 系统日志,Android开发中常用logcat这个工具来分层次、分类型地显示不同等级的日志,方便程序员查找感兴趣的信息(错误信息或者更琐碎、更底层的信息)。

        5. Stacktrace: 调用栈的追踪,非常有用的一个特性,能够显示函数的调用关系(按照栈的数据结构,最后调用的函数显示在栈顶,即最上方)。 Stacktrace常常用来分析异常链,查找错误的源头,能够直接定位到代码中引起错误的行。

  • 全局变量 or 局部变量?:

        1. global variable:全局变量,在整个源文件中都有效。

        2. local variable:局部变量,在定义该变量的上下文范围内有效;在该范围之外,该变量的生命周期结束,不能够再被引用。

        3. variable scope:变量作用域,分为全局的与局部的,具体解释如上。

  • 注意:在Android Studio中,默认编辑器设置下,全局变量名会加粗显示,便于程序员区分。了解这一点之,可以减少了使用同名局部变量覆盖(override,hide)全局变量而引入BUG的可能。

2A课程笔记分享_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. 2B课程笔记分享_StudyJams_2017

    课程2B-创建交互式应用(下) 概述 课程2B的内容主要包括:使用变量来更新欲显示在屏幕上的内容,为按钮添加事件响应(联系XML属性与Java方法)逻辑等. 后续的课程会逐步深入地讲解使用Java开发 ...

  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. 深度学习课程笔记(四)Gradient Descent 梯度下降算法

    深度学习课程笔记(四)Gradient Descent 梯度下降算法 2017.10.06 材料来自:http://speech.ee.ntu.edu.tw/~tlkagk/courses_MLDS1 ...

随机推荐

  1. Centos6防火墙基本配置

    1. 允许x.x.x.x访问本机 iptables -I INPUT -p tcp -j DROP #若要添加多了ip,该条也是只执行一次 iptables -I INPUT -s x.x.x.x - ...

  2. BZOJ 1602 USACO 2008 Oct. 牧场行走

    [题解] 要求出树上两点间的距离,树上的边有边权,本来应该是个LCA. 看他数据小,Xjb水过去了...其实也算是LCA吧,一个O(n)的LCA... #include<cstdio> # ...

  3. 一个电商项目的Web服务化改造7:Dubbo服务的调用,4个项目

    使用dubbo服务的过程,很简单,和之前学习的WebService完全一样,和本地接口调用也基本一致. dubbo和WebService的区别:我认为dubbo就是封装了WebService,然后提供 ...

  4. 使用androidstudio 分析内存泄漏

    分析内存泄漏 http://www.jianshu.com/p/c49f778e7acf

  5. Django——1 环境搭建

    Django 什么是Django 使用前的准备工作 新建项目 开启服务器 新建APP 简单实战 什么是Django框架 http服务器:用来接受用户请求,并将请求转发给web应用框架进行处理.Web应 ...

  6. 【 Codeforces Global Round 1 B】Tape

    [链接] 我是链接,点我呀:) [题意] x轴上有m个连续的点,从1标号到m. 其中有n个点是特殊点. 让你用k段区间将这n个点覆盖. 要求区间的总长度最小. [题解] 一开始假设我们需要n个胶带(即 ...

  7. SCU Censor

    Censor frog is now a editor to censor so-called sensitive words (敏感词). She has a long text p . Her j ...

  8. mbr gpt

    超过2T硬盘的磁盘要用gpt格式,准确地说,应该是分区超过2T地硬盘要选用GPT模式. 做个小推广:程序员经常久坐,颈椎毛病比较多,特别推荐ventry颈椎保健枕

  9. 源代码:windows文件切割与合并

    #include <Windows.h> #include <vector> #include <string> using namespace std; //推断 ...

  10. IntelliJ IDEA 给表达式赋变量名称

    IntelliJ IDEA 给表达式赋变量名称 学习了:http://blog.csdn.net/tiny__wang/article/details/52988790 类似于Eclipse中的ctr ...