资源描述
单击此处编辑母版标题样式,编辑母版文本样式,第二级,第三级,第四级,第五级,2022/1/12,#,单击此处编辑母版标题样式,编辑母版文本样式,第二级,第三级,第四级,第五级,DATE yyyy/M/d|2022/1/12,#,单击此处编辑母版标题样式,编辑母版文本样式,第二级,第三级,第四级,第五级,DATE yyyy/M/d|2022/1/12,#,单击此处编辑母版标题样式,编辑母版文本样式,第二级,第三级,第四级,第五级,DATE yyyy/M/d|2022/1/12,#,单击此处编辑母版标题样式,编辑母版文本样式,第二级,第三级,第四级,第五级,DATE yyyy/M/d|2022/1/12,#,单击此处编辑母版标题样式,编辑母版文本样式,第二级,第三级,第四级,第五级,DATE yyyy/M/d|2022/1/12,#,单击此处编辑母版标题样式,编辑母版文本样式,第二级,第三级,第四级,第五级,DATE yyyy/M/d|2022/1/12,#,单击此处编辑母版标题样式,编辑母版文本样式,第二级,第三级,第四级,第五级,DATE yyyy/M/d|2022/1/12,#,单击此处编辑母版标题样式,编辑母版文本样式,第二级,第三级,第四级,第五级,DATE yyyy/M/d|2022/1/12,#,单击此处编辑母版标题样式,编辑母版文本样式,第二级,第三级,第四级,第五级,DATE yyyy/M/d|2022/1/12,#,单击此处编辑母版标题样式,编辑母版文本样式,第二级,第三级,第四级,第五级,DATE yyyy/M/d|2022/1/12,#,单击此处编辑母版标题样式,编辑母版文本样式,第二级,第三级,第四级,第五级,DATE yyyy/M/d|2022/1/12,#,单击此处编辑母版标题样式,编辑母版文本样式,第二级,第三级,第四级,第五级,DATE yyyy/M/d|2022/1/12,#,单击此处编辑母版标题样式,编辑母版文本样式,第二级,第三级,第四级,第五级,DATE yyyy/M/d|2022/1/12,#,单击此处编辑母版标题样式,编辑母版文本样式,第二级,第三级,第四级,第五级,DATE yyyy/M/d|2022/1/12,#,Android,移动应用基础教程,(第,2,版),第,1,章,Android,基础入门,Android,开发环境搭建,Android,程序结构,程序调试,Android,体系结构,开发第一个程序,资源的管理与使用,重点,了解,掌握,3,通信技术,Android,体系结构,1,Android,开发环境搭建,HelloWorld,程序的编写,2,Android,程序结构,Android,资源的管理和使用,程序调试,学习目标,1.4,Android,程序结构,1.1,Android,简介,1.2,Android,开发环境搭建,1.3,开发第一个,Android,程序,主讲内容,Speech content,主讲内容,1.5,资源的管理与使用,1.6,程序调试,Android,本意指“机器人”,,Google,公司将,Android,的标识设计为一个绿色机器人,,表示,Android,系统符合环保概念,是一个轻薄短小,功能强大的移动系统,是第一个真正为手机打造的开放性系统。,什么是,Android,什么是,Android,Android,和,iOS,主要区别,对比项目,Android,iOS,开发语言,Java,Objective-c,,,Swift,系统开放性,Android,源代码开放,开放性更好,封闭操作系统,开放性较差,系统安全性,源代码开放,安全性较差,封闭操作系统,安全性更高,2015,年,9,月,2018,年,11,月,移动平台市场占有率,4.5K-6K,0.7%,30K-50K,18.2%,6K-8K,2.8%,8K-10K,5.7%,20K-30K,29.8%,15K-20K,19.6%,10K-15K,22.3%,¥,18610,取自,12554,份样本可供参考,截止至,2018,年,12,月,数据来源:职友集,北京,Android,工程师平均薪资,第一代通信技术(,1G,):,是指最初的模拟、仅限语音的蜂窝电话标准。,第二代通信技术(,2G,):,是指第,2,代移动通信技术,代表为,GSM,,以数字语音传输技术为核心。传输速度,9.6k/s,。,第三代通信技术(,3G,):,是指将无线通信与国际互联网等多媒体通信结合的新一代移动通信系统。,3G,通信网在室内、室外和行车的环境中能够分别支持至少,2M/s,、,384K/s,以及,144K/s,的传输速度,第四代通信技术(,4G,):,又称,IMT-Advanced,技术,它包括了,TD-LTE,和,FDD-LTE,。,4G,通信网最高甚至可以达到,100M/s,的传输速度。,第五代通信技术(,4G,):,目前尚未正式商用。传输速度据说可达,10Gbps,。,1.1.1,通信技术,通信技术,Android,操作系统最初是由,安迪鲁宾,(,Andy Rubin,)开发出的,后来被,Google,收购,并于,2007,年,11,月,5,日正式向外界展示了这款系统。,随后,Google,以,Apache,开源许可证的授权方式,发布了,Android,操作系统的源代码。,1.1.2 Android,起源,Android,起,源,2008,年,9,月发布,Android,第,1,个,版本,Android1.1,。,2009,年,4,月,30,日,,,Android1.5,Cupcake,(纸杯蛋糕)正式发布。,2009,年,9,月,5,日,,Android1.6,Donut,(甜甜圈)版本发布。,.,Android9.0,Android pie,(,派,),Android1.5 Cupcake,(纸杯蛋糕),Android,发展历史,1.1.2 Android,发展历史,闹钟,通知管理器,多媒体框架,音频驱动,1.1.3 Android,体系结构,Dalvik,是,Google,公司自己设计用于,Android,平台的虚拟机,它主要是完成对象生命周期管理,堆栈管理,线程管理,安全和异常管理,以及垃圾回收等等重要功能。,1.1.4 Dalvik,虚拟机,Dalvik,虚拟机,Dalvik虚拟机编译文件过程,1.4,Android,程序结构,1.1,Android,简介,1.2,Android,开发环境搭建,1.3,开发第一个,Android,程序,主讲内容,Speech content,主讲内容,1.5,资源的管理与使用,1.6,程序调试,JDK,版本最低为,1.7,系统空闲内存至少为,2GB,配置环境,下载,Android Studio,安装完成,www.android-studio.org/,1.2.1 Android Studio,安装,Android Studio,配置,完成创建,创建模拟设备,选择合适的,SDK,版本,2,3,4,选择设备类型及尺寸,1,1.2.2,模拟器创建,单击,ADV Manager,标签,5,SDK,:(,software development kit,)软件开发工具包。,SDK,用于为特定的软件包、软件框架、硬件平台、操作系统等建立应用软件的开发工具的集合。,1.2.3,下载,SDK,SDK,下载,1.2.3,下载,SDK,下载,Tools,工具,2,3,下载,SDK,版本,1,单击 图标,1.4,Android,程序结构,1.1,Android,简介,1.2,Android,开发环境搭建,1.3,开发第一个,Android,程序,主讲内容,Speech content,主讲内容,1.5,资源的管理与使用,1.6,程序调试,学习,Android,可以开发出精美的,APP,。,开发第一个,Android,程序,本,小节就教大家如何编写一个,HelloWorld,程序。,1.3,开发第一个,Android,程序,功能描述:,技术要点:,在,Android Studio,的,Welcome to Android Studio,窗口中选择【Start a new Android Studio project】选项创建项目,点击工具栏中【AVD Manager】标签启动模拟器,点击工具栏中的运行按钮运行程序,实现步骤:,展示,HelloWorld,界,面,。,使用,AndroidStudio,创建,程序,,使用模拟器运行程序,。,2,3,1,1.3,开发第一个,Android,程序,1.4,Android,程序结构,1.1,Android,简介,1.2,Android,开发环境搭建,1.3,开发第一个,Android,程序,主讲内容,Speech content,主讲内容,1.5,资源的管理与使用,1.6,程序调试,存放程序的代码和资源等文件,程序的,gradle,构建脚本,指定项目中所使用的,SDK,路径,1.4 Android,程序结构,配置在,Android,中使用的子项目,(Moudle),1.4,Android,程序结构,1.1,Android,简介,1.2,Android,开发环境搭建,1.3,开发第一个,Android,程序,主讲内容,Speech content,主讲内容,1.5,资源的管理与使用,1.6,程序调试,图片资源:扩展名为,.png,、,.jpg,、,.gif,、,.9.png,等的文件。,图片资源分类,应用图标资源:存放在,mipmap,文件夹中,界面中使用的图片资源:存放在,drawable,文件夹中,屏幕密度匹配规则,图片资源,1.5.1,图片资源,密度范围值,mipmap,文件夹,drawable,文件夹,120160dpi,mipmap_mdpi,mipmap_mdpi,160240dpi,mipmap_hdpi,drawable_hdpi,240320dpi,mipmap_xdpi,drawable_xdpi,320480dpi,mipmap_xxdpi,drawable_xxdpi,480640dpi,mipmap_xxxdpi,drawable_xxxdpi,调用图片资源的方法,通过,Java,代码调用图片资源,/,调用,mipmap,文件夹中资源文件,getResources().getDrawable(R.mipmap.ic_launcher);,/,调用以,drawable,开头的文件夹中的资源文件,getResources().getDrawable(R.drawable.icon);,在,XML,布局文件中调用图片资源,mipmap/ic_launcher /,调用,mipmap,文件夹中的资源文件,drawable/icon /,调用以,drawable,开头的文件夹中的资源文件,图片资源,1.5.1,图片资源,主题是包含一种或多种的格式化属性集合,在程序中调用主题资源可改变窗体的样式,对整个应用或某个,Activity,存在全局性影响。,定义位置:,res/values目录下的styles.xml,文件中,标签,:定义主题,:设置主题的样式,主题资源,1.5.2,主题和样式资源,1.5.2,主题和样式资源,主题资源,主题资源,color/colorPrimary,color/colorPrimaryDark,color/colorAccent,用于定义主题,用于指定主题名称,用于指定继承的父主题,用于设置主题的样式,调用方式,XML,文件中:,android:theme=style/AppTheme,Java,代码中:,setTheme(R.style.AppTheme);,样式:设置,View,的具体样式。,定义位置:,res/values目录下的styles.xml,文件中,标签,在,XML,文件中调用方法,样式资源,1.5.2,主题和样式资源,:定义样式,:设置控件的样式,style=style/textViewSytle,布局资源通常用于搭建程序中的各个界面。,定义位置:,res/layout,文件夹中,调用方式,通过,Java,代码调用布局资源文件,在,XML,布局文件中调用布局资源文件,布局资源,1.5.3,布局资源,/,在,Activity,的,onCreate(),方法中调用,activity_main.xml,布局资源,setContentView(R.layout.activity_main);,/,在,XML,布局文件中调用,activity_main.xml,布局资源,定义位置:,res/values/,文件夹的,strings.xml,文件中,编写字符串资源内容,字符串资源,1.5.4,字符串资源,字符串,应用名称,调用方式,通过,Java,代码调用字符串资源,在,XML,布局文件中调用字符串资源,字符串资源,1.5.4,字符串资源,在,Activity,的,onCreate(),方法中调用,名为,app_name,的字符串资源,getResources().getString(R.string.app_name);,在,XML,布局文件中调用名为,app_name,字符串资源,string/app_name,定义位置:,res/values/,文件夹的,colors.xml,文件中,colors.xml,文件中的颜色资源,颜色资源,1.5.5,颜色资源,#3F51B5,#303F9F,#FF4081,用于定义颜色资源的标签,用于指定颜色资源的名称,颜色值,调用方式,通过,Java,代码调用颜色资源,在,XML,布局文件中调用颜色资源,颜色资源,1.5.5,颜色资源,在,Activity,的,onCreate(),方法中调用,名为,colorPrimary,的颜色资源,getResources().getColor(R.color.colorPrimary);,在,XML,布局文件中调用名为,colorPrimary,的颜色,资源,color/colorPrimary,调用颜色资源的方法,调用颜色资源的属性,多学一招:定义颜色值,1.5.5,颜色资源,在,Android,中,颜色值是由,RGB,(红、绿、蓝)三原色和一个透明度(,Alpha,)表示,颜色值必须以“,#”,开头,“,#”,后面显示,Alpha-Red-Green-Blue,形式的内容。其中,,Alpha,值可以省略,如果省略,表示颜色默认是完全不透明的。,定义颜色的形式,#RGB,#ARGB,#RRGGBB,#AARRGGBB,尺寸资源:例如:,View,的宽高值,定义位置:,res/values/,文件夹的,dimens.xml,文件中,创建,dimens.xml,文件:,右键单击,values,文件夹,选中【New】,【XML】,【Values XML File】,在弹出框中输入,dimens,。,编写尺寸资源,尺寸资源,1.5.6,尺寸资源,16dp,16dp,用于定义尺寸资源的标签,调用方式,通过,Java,代码调用尺寸资源,在,XML,布局文件中调用尺寸资源,尺寸资源,1.5.6,尺寸资源,在,Activity,的,onCreate(),方法中调用名为,activity_horizontal_margin,的颜色资源,getResources().getDimension(R.dimen.activity_horizontal_margin);,在,XML,布局文件中调用名为,activity_horizontal_margin,的尺寸资源,dimen/activity_horizontal_margin,多学一招:,Android,支持的尺寸单位,1.5.6,尺寸资源,尺寸单位,px,(,pixels,,像素,),:每个,px,对应屏幕上的一个点。,dp,(,Density-independent Pixels,,设备独立像素):是一种与屏幕密度无关的尺寸单位。,sp,(,scaled pixels,,比例像素):主要处理字体的大小,可以根据用户字体大小首选项进行缩放。,in,(,inches,,英寸):标准长度单位。,pt,(,points,,磅):屏幕物理长度单位,,1,磅为,1/72,英寸。,mm,(,Millimeters,,毫米):屏幕物理长度单位。,1.4,Android,程序结构,1.1,Android,简介,1.2,Android,开发环境搭建,1.3,开发第一个,Android,程序,主讲内容,Speech content,主讲内容,1.5,资源的管理与使用,1.6,程序调试,单元测试,单元测试是指在应用程序开发过程中对最小的功能模块进行测试,可以在完成某个功能之后对该功能进行单独测试。,单元测试分类:,Android,单元测试:连接,Android,设备、速度比较慢、适合需要调用,Android API,的单元测试。,Junit,单元测试:不依赖,Android,设备,(,在本地即可运行,),、速度快、适合只对,java,代码功能进行的单元测试。,1.6.1,单元测试,单元测试,Android Studio 3.2,版本在创建项目时,会默认在,app/src/androidTest,和,app/src/test,文件夹中创建,Android,单元测试类,ExampleInstrumentedTest,和,Junit,单元测试类,ExampleUnitTest,。,Android,单元测试类,ExampleInstrumentedTest,使用,RunWith(AndroidJUnit4.class),注解,ExampleInstrumentedTest,类,Test,注解类中的方法,Junit,单元测试类,ExampleUnitTest,Test,注解类中的方法,1.6.1,单元测试,Android,单元测试,ExampleInstrumentedTest.java,类中的代码,package cn.itcast.helloworld;,RunWith(AndroidJUnit4.class),public class ExampleInstrumentedTest,Test,public void useAppContext(),/Context of the app under test.,Context appContext=InstrumentationRegistry.getTargetContext();,assertEquals(cn.itcast.helloworld,appContext.getPackageName();,断言,期望两个参数值相等,注解类,1.6.1,单元测试,注解方法,测试结果正常,测试结果错误,1.6.1,单元测试,Junit,单元测试,ExampleInstrumentedTest.java,类中的代码,package cn.itcast.helloworld;,public class ExampleUnitTest,Test,public void addition_isCorrect(),assertEquals(4,2+2);,断言,期望两个参数值相等,1.6.1,单元测试,注解方法,测试结果正常,测试结果错误,1.6.1,单元测试,注意,Android Studio 3.2,版本在创建项目时,会自动在,build.gradle,文件中添加单元测试的支持库,如果在进行单元测试时,程序中的,build.gradle,文件中没有添加单元测试的支持库,则需要手动进行添加。,dependencies,.,testImplementation junit:junit:4.12,androidTestImplementation com.android.support.test:runner:1.0.2,androidTestImplementation,com.android.support.test.espresso:espresso-core:3.0.2,1.6.1,单元测试,LogCat,的使用,LogCat,是,Android,中的命令行工具,用于获取程序从启动到关闭的日志信息。,Log,类所输出的日志内容分为,六,个级别。,1.6.2 LogCat,的使用,级别,Log,类中,的静态方法,Verbose,Log.v(),Debug,Log.d(),Info,Log.i(),Warning,Log.w(),Error,Log.e(),Assert,Log.wtf(),LogCat,的使用,Log.v(MainActivity,Verbose);,Log.d(MainActivity,Degug);,Log.i(MainActivity,Info);,Log.w(MainActivity,Warning);,Log.e(MainActivity,Error);,Log.wtf(MainActivity,Assert);,打印信息的标签,需要打印的信息,1.6.2 LogCat,的使用,测试结果,1.6.2 LogCat,的使用,1.6.2 LogCat,的使用,过滤显示,过滤器名称,根据定义的,TAG,过滤信息,点击创建完成,过滤显示,除了设置过滤器过滤所需的信息外,还可以,输入TAG信息、根据Log级别等方式过滤信息,。,LogCat区域中日志信息,根据级别不同显示不同的颜色,1.6.2 LogCat,的使用,级别,显示信息,日志信息颜色,verbose(V),全部信息,黑色,debug(D),调试信息,蓝色,info(I),一般信息,绿色,warning(W),警告信息,橙色,error(E),错误信息,红色,assert,断言失败后的错误消息,红色,本章主要讲解了,Android,的基础知识,首先介绍了,Android,的发展历史以及体系结构,然后讲解,Android,开发环境的搭建,接着开发了一个,HelloWorld,程序,帮助大家了解,Android,项目的创建、程序的结构,以及资源文件的使用。最后介绍了程序调试,包括单元测试和,LogCat,的使用。通过本章的学习,希望读者能对,Android,有一个大致的了解,并会独立搭建,Android,开发环境,为后续学习,Android,知识做好铺垫。,1.7,本章小结,本章作业,简述,Android,系统架构包含的层次以及各层的特点,。,简述,Log,类输出日志内容的级别和对应,Log,类中的方法,。,预习作业,简述,Android,线性布局的特点。,简述,Android,相对布局的特点。,Android,移动应用基础教程,(第,2,版),第,2,章,Android,常见界面布局,界面布局编写方式,View,视图,常见界面布局,简述,Android,系统架构包含的层次以及各层的特点,。,简述,Log,类输出日志内容的级别和对应,Log,类中的方法,。,作业点评,简述,Android,相对布局的特点。,简述,Android,线性布局的特点。,预习检查,3,约束布局,重点,了解,掌握,2,View,视图,界面布局的编写方式,布局的使用,学会搭建常用布局,1,学习目标,2.1,View,视图,2.2,界面布局编写方式,2.3,常见界面布局,主讲内容,Speech content,主讲内容,View,视图,所有的,UI,元素都是通过,View,与,ViewGroup,构建的,对于一个,Android,应用的用户界面来说,,ViewGroup,作为容器盛装界面中的控件,它可以包含普通的,View,控件,也可以包含,ViewGroup,。,2.1 View,视图,2.1,View,视图,2.2,界面布局编写方式,2.3,常见界面布局,主讲内容,Speech content,主讲内容,界面布局编写方式,界面布局编写方式,在,XML,文件中编写布局:推荐此种方式布局,有效的将界面中布局的代码和,Java,代码隔离,使程序的结构更加清晰。,在,Java,代码中编写布局,在,Android,中所有布局和控件的对象都可以通过,new,关键字创建出来,将创建的,View,控件添加到,ViewGroup,布局中,从而实现,View,控件在布局界面中显示。,2.2,界面布局编写方式,在,XML,文件中编写布局,相对布局继承自,ViewGroup,TextView,控件继承自,View,2.2,界面布局编写方式,设置文字的样式,在,Java,代码中编写布局,RelativeLayout relativeLayout=new RelativeLayout(this);,RelativeLayout.LayoutParams params=new RelativeLayout.LayoutParams(,RelativeLayout.LayoutParams.WRAP_CONTENT,RelativeLayout.LayoutParams.WRAP_CONTENT);,/addRule,参数对应,RelativeLayout XML,布局的属性,params.addRule(RelativeLayout.CENTER_IN_PARENT);/,设置居中显示,TextView textView=new TextView(this);/,创建,TextView,控件,textView.setText(Java,代码实现界面布局,);/,设置,TextView,的文字内容,textView.setTextColor(Color.RED);/,设置,TextView,的文字颜色,textView.setTextSize(18);/,设置,TextView,的文字大小,/,添加,TextView,对象和,TextView,的布局属性,relativeLayout.addView(textView,params);,setContentView(relativeLayout);/,设置在,Activity,中显示,RelativeLayout,2.2,界面布局编写方式,2.1,View,视图,2.2,界面布局编写方式,2.3,常见界面布局,主讲内容,Speech content,主讲内容,五种常用布局,线性布局,相对布局,帧布局,表格布局,约束布局,特点:以水平或垂直方向排列,特点:通过相对定位排列,特点:开辟空白区域,帧里的 控件,(,层,),叠加,特点:表格形式排列,特点:可视化的方式编写布局,2.3,常见界面布局,布局的通用属性,Android,系统提供的五种常用布局直接或者间接继承自,ViewGroup,,因此它们也支持在,ViewGroup,中定义的属性,这些属性可以看作是布局的通用属性。,2.3.1,布局的通用属性,属性名称,功能描述,android:id,设置布局的标识,android:layout_width,设置布局的宽度,android:layout_height,设置布局的宽度,android:background,设置布局的背景,android:layout_margin,设置当前布局与屏幕边界或与周围控件的距离,android:padding,设置当前布局与该布局中控件的距离,相对布局,相对布局(,RelativeLayout,)是通过相对定位的方式指定子控件位置,即以其它控件或父容器为参照物,摆放控件位置。,定义格式,2.3.2 RelativeLayout,相对布局,控件属性,功能描述,android:layout_centerInParent,设置当前控件位于父布局的中央位置,android:layout_centerVertical,设置当前控件位于父布局的垂直居中位置,android:layout_centerHorizontal,设置当前控件位于父控件的水平居中位置,android:layout_above,设置当前控件位于某控件上方,android:layout_below,设置当前控件位于某控件下方,android:layout_toLeftOf,设置当前控件位于某控件左侧,android:layout_toRightOf,设置当前控件位于某控件右侧,android:layout_alignParentTop,设置当前控件是否与父控件顶端对齐,android:layout_alignParentLeft,设置当前控件是否与父控件左对齐,android:layout_alignParentRight,设置当前控件是否与父控件右对齐,android:layout_alignParentBottom,设置当前控件是否与父控件底端对齐,android:layout_alignTop,设置当前控件的上边界与某控件的上边界对齐,android:layout_alignBottom,设置当前控件的下边界与某控件的下边界对齐,android:layout_alignLeft,设置当前控件的左边界与某控件的左边界对齐,android:layout_alignRight,设置当前控件的右边界与某控件的右边界对齐,2.3.2,相对布局,控件位置属性,相对布局,.,2.3.2 RelativeLayout,相对布局,线性布局,线性,布局(,LinearLayout,)主要以水平或垂直方式来显示界面中的控件。当控件水平排列时,显示顺序依次为从左到右,当控件垂直排列时,显示顺序依次为从上到下,。,按钮,1,按钮,2,按钮,3,按钮,3,按钮,2,按钮,1,2.3.3 LinearLayout,线性布局,orientation,属性,.,此属性控制控件排列方向,包含两个属性值:,vertical(,垂直,),、,horizontal(,水平,),2.3.3 LinearLayout,线性布局,权重,LinearLayout,布局中的,android:layout_width,属性值不可设为,wrap_content,。,这是因为,LinearLayout,的优先级比,Button,高,如果设置为,wrap_content,,则,Button,控件的,android:layout_weight,属性会失去作用。,注意:当控件使用权重属性时,布局宽度属性值通常设置为,0dp,。,2.3.3,线性布局,注意事项,注意事项,表格布局,采用行、列的形式来管理控件,它不需要明确声明包含多少行、多少列,而是通过在,TableLayout,布局中添加,TableRow,布局来控制表格的行数,通过在,TableRow,布局中添加控件来控制表格的列数。,2.3.4 TableLayout,表格布局,UI,控件,.,表格布局属性,布局属性,功能描述,android:stretchColumns,设置该列被拉伸,android:shrinkColumns,设置该列被收缩,android:collapseColumns,设置该列被隐藏,表格布局控件属性,控件属性,功能描述,android:layout_column,设置该单元显示位置,android:layout_span,设置该单元格占据几行,默认为,1,行,2.3.4 TableLayout,表格布局,.,第,3,列可被拉伸,设置控件所在列,2.3.4 TableLayout,表格布局,帧布局,帧,布局(,FrameLayout,),用于在屏幕上创建一块空白区域,,,添加到该区域中的每个子控件占一帧,这些帧会一个一个叠加在一起,后加入的控件会叠加在上一个控件上层,所有控件都默认显示在屏幕左上角,。,定义格式,2.3.5 FrameLayout,帧布局,设置帧布局容器的前景图像(始终在所有子控件之上),设置前景图像显示位置,2.3.5 FrameLayout,帧布局,约束布局,ConstraintLayout,是,Android Studio2.2,新添加的布局,。,它适合使用可视化的方式编写界面布局,当然,可视化操作的背后仍然是使用,XML,代码实现的,只不过这些代码是,Android Studio,根据我们的操作自动生成的。,相对定位,居中定位和倾向,Chain,2.3.6 ConstraintLayout,约束布局,相对定位,相对定位是在,ConstraintLayout,中创建布局的基本构建方法之一。相对定位即一个控件相对于另一个控件进行定位。,ConstraintLayout,布局中的控件可以在横向和纵向上以添加约束关系的方式进行相对定位,其中,横向边包括,Left,、,Start,、,Right,、,End,,纵向边包括,Top,、,Bottom,、,Baseline,(文本底部的基准线)。,2.3.6 ConstraintLayout,约束布局,属性名称,功能描述,layout_constraintLeft_toLeftOf,控件的左边与另外一个控件的左边对齐,layout_constraintLeft_toRightOf,控件的左边与另外一个控件的右边对齐,layout_constraintRight_toLeftOf,控件的右边与另外一个控件的左边对齐,layout_constraintRight_toRightOf,控件的右边与另外一个控件的右边对齐,layout_constraintTop_toTopOf,控件的上边与另外一个控件的上边对齐,layout_constraintTop_toBottomOf,控件的上边与另外一个控件的底部对齐,layout_constraintBaseline_toBaselineOf,控件间的文本内容基准线对齐,layout_constraintStart_toEndOf,控件的起始边与另外一个控件的尾部对齐,layout_constraintStart_toStartOf,控件的起始边与另外一个控件的起始边对齐,layout_constraintEnd_toStartOf,控件的尾部与另外一个控件的起始边对齐,layout_constraintEnd_toEndOf,控件的尾部与另外一个控件的尾部对齐,2.3.6,约束布局,相对定位关系的属性,居中定位和倾向,在,ConstraintLayout,布局中,控件可以通过添加约束的方式确定该控件在父布局(,ConstraintLayout,)中的相对位置。,当相同方向上(横向或纵向),控件两边同时向,ConstraintLayout,添加约束,则控件在添加约束的方向上居中显示。,父布局中横向居中,2.3.6 ConstraintLayout,约束布局,居中定位和倾向,在约束是同向相反的情况下,默认控件是居中的,但是也像拔河一样,两个约束的力大小不等时,就会产生倾向。,2.3.6 ConstraintLayout,约束布局,属性名称,功能描述,layout_constraintHorizontal_bias,横向的倾向,layout_constraintVertical_bias,纵向的倾向,注意:如果,ConstraintLayout,布局中的控件在居中方向,(,横向或者纵向,),上和父布局(,ConstraintLayout,)的尺寸一致,此时该方向的居中约束和倾向没有意义。,chain,Chain(,链,),是一种特殊的约束,他使我们能够对一组水平或竖直方向互相关联的控件进行统一管理。一组控件通过一个双向的约束关系链接起来,就能形成一个,Chain,。,2.3.6 ConstraintLayout,约束布局,Chain,的样式,2.3.6 ConstraintLayout,约束布局,本章主要针对,Android,界面布局的相关知识进行讲解。通过本章的学习,我们希望读者能够掌握,View,和,ViewGroup,的功能、掌握不同界面布局以及布局中控件属性的使用,因为在,Android,应用中,所有功能大部分都体现在界面上,界面的美观会给用户一个友好的体验。,2.4,本章小结,本章作业,简述,Android中,
展开阅读全文