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. [K/3Cloud]DBServiceHelper.ExecuteDataSet(this.Context, sql)) 返回数据问题

    例如下面代码: int sQty = 0; string sql = string.Format(@" Select FMATERIALID ,FBASEUNITID ,FAUXPROPID ...

  2. 玲珑杯 ACM Round #12

    A =w= B 占坑 C 题意:有长度为n的序列A和长度为n的序列W,以及一个G,对于Ui,1<=Ui<=Wi,求Σgcd(Ai,Ui)=G的方案数,n<=1e3,Ai<=1e ...

  3. 学PHP也要懂得HTML

    简单的HTML制做: html超文本标记语言 HTML文件主体结构: <!DOCTYPE html><html> <!--htlm开始标记 --><head& ...

  4. pg_dump: [archiver (db)] connection to database “dbase” failed: FATAL: Peer authentication failed for user “postgres”

    "Peer authentication" means that it's comparing your database username against your Linux ...

  5. ios7新增api实现扫描二维码

    本来用的ZBar开源库实现的扫描二维码,可是貌似不支持arm64了,也没有在更新. 如今不用适配ios7下面.而iOS新增系统API已支持扫码,參考老外的一篇博客做了个demo.须要的能够參考下 參考 ...

  6. js滚轮换切屏

    因为全项目不是自己写的,仅仅是帮别人写js滚轮代码,并且别人项目也还未上线.所以仅仅贴出自己写的那段部分代码, 效果:鼠标滚轮滚动时.网頁屏幕一屏一屏的上下切换 (下面代码在本地电脑的IE,chrom ...

  7. ViewPager中View的复用

    代码例如以下: public class MyViewPagerAdapter extends PagerAdapter { //显示的数据 private List<DataBean> ...

  8. 【RefactoringCode】The description of the refactoring book

    Last night the book named [Data Structure with Java Hubbed] was closed. When talked about the advant ...

  9. Dungeon Game -- latched

    The demons had captured the princess (P) and imprisoned her in the bottom-right corner of a dungeon. ...

  10. [NOIP2003普及组]麦森数(快速幂+高精度)

    [NOIP2003普及组]麦森数(快速幂+高精度) Description 形如2^P-1的素数称为麦森数,这时P一定也是个素数.但反过来不一定,即如果P是个素数,2^P-1不一定也是素数.到1998 ...