1B课程笔记分享_StudyJams_2017
课程1B
概述
- 课程1B主要讲解了Android UI的ViewGroups(视图组)、LinearLayout(线性布局)、RelativeLayout(相对布局),Portrait Mode(竖屏模式)、Landscape Mode(横屏模式)以及layout_weight(布局权重)在UI布局中的用处。
- 此外,本次课程简要提到了xml命名空间,能够方便变量名的管理和使用以及避免变量名字冲突。
ViewGroups
- 视图组控件引出了parent view、child view以及sibling view的概念;它们分别指的是两个视图间的父、子、兄弟关系,是一个相对概念,至少有两个对象参与。
- 需要注意的是,也是在1B课程中反复强调过的,ViewGroups本身也是一种视图。
LinearLayout
- 应用线性布局,首先应当设置布局中元素的朝向(orientation):具体的取值有vertical、horizontal,分别指定布局中元素按列排列和按行排列:
android:orientation="vertical"
android:orientation="horizontal"
RelativeLayout
- 相对布局中的控件中的默认位置是屏幕的最左上方。
- 相对布局并不需要android:orientation属性。
- 相对布局能够以指定相对位置的方式来设置布局中各元素(控件)之间的相对位置,交给开发者自由定制的空间远比LinearLayout大,当然相应地也会拥有更多属性,变得更复杂一些。
- 需要强调,在应用相对布局进行Android UI设计前,要能够理解相对布局中的"相对"在不同的代码上下文中可能会具有不同的含义。
比如,
1. ”相对“指的是相对于父视图:
android:layout_alignParentTop=“true”
android:layout_alignParentLeft="true"
android:layout_alignParentRight="false"
android:layout_alignParentBottom="false"
android:layout_centerHorizontal="false"
android:layout_centerVertical="false"
属性android:layout_centerHorizontal、android:layout_centerVertical也是相对于父视图的,分别设置控件位于父视图的水平居中以及垂直居中的位置。
2. ”相对“指的是相对于锚视图(anchor view):锚视图是固定的,其它视图可以指定与锚视图的相对位置。
android:layout_toLeftOf=“@id/some_id1_prev_defined”
android:layout_toRightOf=“@id/some_id2_prev_defined”
- [提示1] RelativeLayout的其他参数还有很多,搜索android RelativeLayout layout Params等关键字能够获取到关于相对布局的详细文档或者API参考手册。
开发者应该在平时注意锻炼自己查找资料,解决问题的能力,课程中介绍到的Android Developers就是很好的Android开发的参考网站。
Margin&Padding
- 外边距(Margin)、内边距(Padding)的概念在UI设计中很早就出现了。
- Padding控制单个控件内部元素和该控件边界之间的距离。
- 比如说,TextView中的文本与四周边界的距离的控制:
android:padding="8dp"
或者控制文本与某一边界之间的距离:
android:paddingLeft="8dp"
android:paddingRight="8dp"
android:paddingTop="8dp"
android:paddingBottom="8dp"
- Margin属性的使用的前提是,必须位于一个视图组中,否则就没有“外”边距的存在了。即外边距是相对两个父子(parent-child)控件之间而言的。
- 用外边距控制两个控件之间的相对位置:
android:layout_margin="8dp"
android:layout_marginLeft="8dp"
android:layout_marginRight="8dp"
android:paddingTop="8dp"
android:paddingBottom="8dp"
第一个表达式与后四个的效果是等价,都是设置两个父子控件之间的**四周**的边距。
- Margin与Padding之间的对比
下面这张自己画的图应该能够比较清晰地示意二者的区别,蓝色方块是一个ViewGroups控件,也就是说它是绿色方块的父视图(Parent View),
这是外边距存在的前提。

**图1.Margin与Padding的对比**
1B课程笔记分享_StudyJams_2017的更多相关文章
- 1C课程笔记分享_StudyJams_2017
课程1C 概述 课程1C是创建一个生日贺卡应用的实践课程,所以本篇笔记分享主要记录个人的实践过程,此外分享一些比较零散的知识点. Drawable文件夹 Drawable文件夹是Android项目统一 ...
- 1A课程笔记分享_StudyJams_2017
1A课程 概述 课程1A主要讲解了Android UI的三种基本控件:TextView.ImageView以及Button.笔记的主体内容主要根据课程内容的讲解顺序来组织,此外我对一些个人比较感兴趣的 ...
- 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 ...
随机推荐
- free web rich code eidtor
free web rich code eidtor https://i.cnblogs.com/Preferences.aspx tiny code-editor https://apps.tiny. ...
- Codeforces Round #234 (Div. 2)
A. Inna and Choose Options time limit per test 1 second memory limit per test 256 megabytes input st ...
- node.js 利用流实现读写同步,边读边写
//10个数 10个字节,每次读4b,写1b let fs=require("fs"); function pipe(source,target) { //先创建可读流,再创建可写 ...
- POJ 1328 Radar Installation 贪心算法
Description Assume the coasting is an infinite straight line. Land is in one side of coasting, sea i ...
- 1010 过河卒 2002年NOIP全国联赛普及组codevs
1010 过河卒 2002年NOIP全国联赛普及组codevs 题目描述 Description 如图,A 点有一个过河卒,需要走到目标 B 点.卒行走规则:可以向下.或者向右.同时在棋盘上的任一点 ...
- 使用jconsole监控远程JVM
使用jconsole监控远程JVM 学习了:https://www.linuxidc.com/Linux/2015-02/113420.htm https://www.cnblogs.com/thin ...
- shell中获取时间,作为文件夹格式
近期写了一个小程序,须要用到时间.遍历作为文件夹的一部分 #!/bin/bash for i in {1..30} do date=`date +%Y/%m/%d -d " $i days ...
- oc84--单利
// Tools.h #import <Foundation/Foundation.h> @interface Tools : NSObject<NSCopying, NSMutab ...
- YTU 2732:3798-Abs Problem
2732: 3798-Abs Problem 时间限制: 1 Sec 内存限制: 128 MB Special Judge 提交: 167 解决: 60 题目描述 Alice and Bob i ...
- anaconda安装python三方包,以tensorflow为例
Anaconda概述 Anaconda是一个用于科学计算的Python发行版,支持 Linux, Mac, Windows系统,提供了包管理与环境管理的功能,可以很方便地解决多版本python并存.切 ...