1A课程笔记分享_StudyJams_2017
1A课程
概述
课程1A主要讲解了Android UI的三种基本控件:TextView、ImageView以及Button。笔记的主体内容主要根据课程内容的讲解顺序来组织,此外我对一些个人比较感兴趣的内容作了一些扩展的说明。希望我的分享能对大家有所帮助。
TextView
- 设置TextView中的字体大小,推荐使用dp(Density-Independent,(像素)密度无关)作为像素单位,这样能够使字体大小与屏幕像素密度无关。即显示字体时会根据当前屏幕的像素密度来调整字体实际占据的像素数,像素密度越大的,占据的像素数相应也越大。这样做的最大的好处在于能够保证不同设备(具有不同像素密度的平板、手机、电脑等)上的字体的实际大不会改变,使得开发人员不必为了不同的设备编写不同的代码。
- sp(Scale-Independent,缩放无关)与dp的唯一区别在于:使用sp作为单位指定的字体大小,会使用户的字体尺寸大小("大"、"中"、"小")设置无效。如果你不想让字体大小受到用户设置的影响的话,那么就可以用sp作为像素的单位。
- 设置width、height属性,一般情况下都用wrap_content作为width、height的属性值,使得TextView自适应文本的宽度和高度,免去了手动指定宽高度的麻烦。
- [提示1] 关于字体选取,使用1-3种比较美观的字体即可,如果UI使用的字体太多,很有可能的后果就是用户招架不住,视觉上感到很疲劳。
- [提示2] 考虑TextAppearance属性的使用。为了在不同设备间保持界面外观的一致性,可以使用Android预定义好的TextAppearance属性的值。
- 代码示例
android:textAppearance="?android:textAppearanceLarge"
android:textAppearance="?android:textAppearanceMedium"
android:textAppearance="?android:textAppearanceSmall"
- 代码示例
XML
- 课程1A中只是简单提到了几个XML的语法,包括标签(tag)、自封闭(self-closing)标签、属性(attribute)等等。只要跟随课程进度走,勤加练习,掌握XML的基本语法应该是水到渠成的。
以下是我想分享的、关于XML的更多内容
[定义] 可扩展标记语言,它被设计用来传输和存储数据,其焦点是数据的内容。
[比较] XML与HTML(超文本标记语言)的对比:
| 语言 | 设计思路 | 角色定位 |
| :-----| :-----------------------| :------------------------- |
| HTML| 用来显示数据,关注的是数据的**外观** | 对于XML,具有不可替代性 |
| XML | 用来传输和存储数据,关注的是是数据的**内容**| 对HTML的补充 |
XML与HTML都是标准通用标记语言的子集。
[XML的应用&个人理解]
- XML的应用非常广泛,可以用来描述Android UI的(我认为,实际上就是符合Android规范的、与用户界面相关的结构化数据);可以用来描述软件项目的结构。比如:JavaEE项目中的web.xml、Visual Studio C/C++项目的*.vcxproj(虽然文件扩展名不是xml,但这里的扩展名只是一件"外衣"罢了,用任何一个文本编辑器打开该文件,从内容上来,用到的语言就是XML)等等都是项目配置文件。
- 如果足够熟悉的话,你可以通过直接编辑这些xml文件来更改项目属性来达到同样的效果,避免在可视化界面中进行一系列繁琐的操作。进一步地,你可以把一个与具体IDE(集成开发环境,课程1A有简单的介绍,可以对照 Android for All术语表 来了解)相关的Preferences(首选项、用户偏好)项目配置文件迁移到一个新建的项目,省去重新设置用户偏好的麻烦。这个办法在Eclipse中特别方便实用。
- 我个人认为,之所以XML广泛用于UI布局文件、项目配置文件的编写,很大程度上是因为XML本身就是被设计来存储和传输结构化数据的;而前述的这些文件恰恰就是需要维护一些UI相关或项目相关的结构化信息的。
ImageView
- 属性src指定图像来源(绝对路径、相对路径均可),layout_width、layout_height指定了该控件的宽高。
- 属性scaleType通常的取值可以有center和centerCrop。 centerCrop可以达到full-bleed显示的效果,大多数情况下都比较美观,所以裁剪(crop-off)是可以接受的。
![Fig1. centerCrop_cake的显示效果](http://images2015.cnblogs.com/blog/1161127/201705/1161127-20170507070509054-121512628.png)
**图1.** centerCrop_cake的显示效果
![Fig2. center_cake的显示效果](http://images2015.cnblogs.com/blog/1161127/201705/1161127-20170507070352601-989666601.png)
**图2.** center_cake的显示效果
可以看到centerCrop在这里是更合适的属性取值。
实用的学习实践资料
- Google Material Design 提供了对字体以及颜色选取等方面的参考,此外还有很多UI设计相关的材料。
- Android for All术语表 对Android术语图文并茂的解释。
1A课程笔记分享_StudyJams_2017的更多相关文章
- 1C课程笔记分享_StudyJams_2017
课程1C 概述 课程1C是创建一个生日贺卡应用的实践课程,所以本篇笔记分享主要记录个人的实践过程,此外分享一些比较零散的知识点. Drawable文件夹 Drawable文件夹是Android项目统一 ...
- 1B课程笔记分享_StudyJams_2017
课程1B 概述 课程1B主要讲解了Android UI的ViewGroups(视图组).LinearLayout(线性布局).RelativeLayout(相对布局),Portrait Mode(竖屏 ...
- 3A课程笔记分享_StudyJams_2017
课程3A-面向对象编程(上) 概述 面向对象的思想在当今的软件开发中占据着主导地位. Java是一门完全面向对象的语言,是一种天然的分布式互联网软件的开发语言,在当今企业级应用中占据绝对领先地位,也是 ...
- 2C课程笔记分享_StudyJams_2017
课程2C-实践:创建交互式应用 概述 课程2C的内容主要是练习巩固2A.2B中讲解的内容,并设计实现一款篮球比赛的计分板应用及其界面的美化. Warm-Up:准备活动 新建项目PracticeSet2 ...
- 2B课程笔记分享_StudyJams_2017
课程2B-创建交互式应用(下) 概述 课程2B的内容主要包括:使用变量来更新欲显示在屏幕上的内容,为按钮添加事件响应(联系XML属性与Java方法)逻辑等. 后续的课程会逐步深入地讲解使用Java开发 ...
- 2A课程笔记分享_StudyJams_2017
课程2A 概述 课程2A.2B的内容主要是关于创建交互式应用的基础知识.之前的L1课程主要是Android UI的基础设计知识,基本上没涉及到编程. 2A的讲解主要包括:使用变量来更新欲显示在屏幕上的 ...
- 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 ...
随机推荐
- 1874 Bellman-ford算法 队列优化过的 用于稀疏图,有负权的图
#include<stdio.h> #include<algorithm> #include<iostream> #include<queue> usi ...
- Sliding Window(滑动窗口)
Time Limit: 12000MS Memory Limit: 65536K Total Submissions: 58002 Accepted: 16616 Case Time Limi ...
- Oracle中的 row_number() over (partition by order by ) 用法
oracle 里面经常这样用 select col1,col2..., row_number() over (partition by colx order by coly) from table_n ...
- 条款50: 提高对C++的认识
class Base { public: virtual void f(int x); }; class Derived: public Base { public: virtual void f(d ...
- ZOJ 3675 Trim the Nails(bfs)
Trim the Nails Time Limit: 2 Seconds Memory Limit: 65536 KB Robert is clipping his fingernails. ...
- jq 地区(省市县区)联动菜单
<pre name="code" class="html"><pre name="code" class="ph ...
- java编程思想——java IO系统
一.什么是IO io在本质上是单个字节的移动.而流能够说是字节移动的载体和方式,它不停的向目标处移动数据.我们要做的就是依据流的方向从流中读取数据或者向流中写入数据. 二.java中支持IO操作的库类 ...
- Chrome浏览器扩展开发系列之十四:本地消息机制Native messagin
Chrome浏览器扩展开发系列之十四:本地消息机制Native messaging 2016-11-24 09:36 114人阅读 评论(0) 收藏 举报 分类: PPAPI(27) 通过将浏览器 ...
- OpenCV2马拉松第25圈——直线拟合与RANSAC算法
计算机视觉讨论群162501053 转载请注明:http://blog.csdn.net/abcd1992719g/article/details/28118095 收入囊中 最小二乘法(least ...
- git 入门级使用
git-book 全局配置:(配置完之后,进行一次密码设置之后,无需再使用密码进行分支管理) git config --global user.name "zhxj" git co ...