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在这里是更合适的属性取值。

实用的学习实践资料

1A课程笔记分享_StudyJams_2017的更多相关文章

  1. 1C课程笔记分享_StudyJams_2017

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

  2. 1B课程笔记分享_StudyJams_2017

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

  3. 3A课程笔记分享_StudyJams_2017

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

  4. 2C课程笔记分享_StudyJams_2017

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

  5. 2B课程笔记分享_StudyJams_2017

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

  6. 2A课程笔记分享_StudyJams_2017

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

  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. noip模拟赛 寻宝之后

    题目背景 还记得NOIP2011的寻宝吗?6年之后,小明带着他的妹子小芳,再次走上了寻宝的道路. 然而这次他们寻宝回来之后,小明被困在了一个迷宫中. 题目描述 迷宫是一个n*m的字符矩阵. 小明在这个 ...

  2. windows开启3306端口并用可视化工具访问远程mysql(授权访问)

    开启 MySQL 的远程登陆帐号有两大步: 1.确定服务器上的防火墙没有阻止 3306 端口. MySQL 默认的端口是 3306 ,需要确定防火墙没有阻止 3306 端口,否则远程是无法通过 330 ...

  3. 作DJANGO ORM时的一些最佳实践

    还是国外的正规,都在作DJANGO ORM的解藕化工作了. 外键不用,多对多,一对多,不用. 参考URL: http://scottlobdell.me/2015/01/sql-database-be ...

  4. nyoj_68_三点顺序_201404152013

    三点顺序 时间限制:1000 ms  |  内存限制:65535 KB 难度:3   描述 现在给你不共线的三个点A,B,C的坐标,它们一定能组成一个三角形,现在让你判断A,B,C是顺时针给出的还是逆 ...

  5. [poj2368]Buttons_博弈论

    Buttons poj-2368 题目大意:给定n个按钮,每次可以按动[1,t]个.求最小的t使得先手必败. 注释:$1\le n\le 10^8$. 想法:经典巴什博弈. 求n的最小非1约数-1即可 ...

  6. 1. MaxCounters 计数器 Calculate the values of counters after applying all alternating operations: increase counter by 1; set value of all counters to current maximum.

    package com.code; import java.util.Arrays; public class Test04_4 { public static int[] solution(int ...

  7. 新手学測试----Unit Test(单元測试)

    在程序猿做项目的过程中,每当完毕一个功能,首先自己须要对完毕的功能进行測试.我如今正在做的项目用的工具是VS2012.那么接下来,就说一说在VS2012中是怎样创建单元測试的. 怎样创建单元測试? 在 ...

  8. 为DataGrid 写一个 DropDownListColumn

    Net下有一个类DataGridColumn 作为 DataGrid 控件的不同列类型的基类. 有关此类型全部成员的列表.请參阅 DataGridColumn 成员. System.Object  S ...

  9. VFL演示样例

    上篇文章向大家介绍了VFL的基本的语法点,假设对下面演示样例不熟的童鞋,能够前去參考.废话不多说.我们直接来看演示样例. 演示样例一 将五个大小同样.颜色不同的view排成一行,view间的间隔为15 ...

  10. webrtc 视频 demo

    webrtc 视频 demo webrtc网上封装的很多,demo很多都是一个页面里实现的,今天实现了个完整的 , A 发视频给 B A webrtc.html作为offer <!DOCTYPE ...