2018-08-29

Android基础知识点整理

一、Android六大布局

1.1 LinearLayout线性布局

android:orientation属性是LinearLayout中特有的属性,通过指定vertical可控制布局纵向排列,指定horizontal控制布局横向排列

android:layout_weight指定子元素在LinearLayout中所占的权重

1.2 RelativeLayout相对布局

RelativeLayout里设为boolean的XML属性

android:layout_centerHorizontal

android:layout_centerVertical 

android:layout_centerParent 

android:layout_alignParentBottom 

android:layout_alignParentLeft 

android:layout_alignParentRight 

android:layout_alignParentTop

RelativeLayout.里属性值为其他组件ID的XML属性

android:layout_toRightOf

android:layout_toLeftOf 

android:layout_above 

android:layout_below 

android:layout_alignTop 

android:layout_alignBottom 

android:layout_alignRight 

android:layout_alignLeft

1.3 FrameLayout帧布局

FrameLayout直接继承自ViewGroup组件。帧布局为每个加入其中的组件创建一个空白的区域(称为一帧),每个子组件占据一帧,这些帧会根据gravity属性执行自动对齐。

1.4 AbsoluteLayout绝对布局

AbsoluteLayout由开发人员自己通过X坐标、Y坐标来控制组件的位置。每个组件都可指定如下两个XML属性:

layour_x;

layout_y;

由于该模式,无法适配不同屏幕大小的机型,现已被淘汰

1.5 TableLayout表格布局

TableLayout继承自Linearout,本质上仍然是线性布局管理器。表格布局采用行、列的形式来管理UI组件,并不需要明确地声明包含多少行、多少列,而是通过添加TableRow、其他组件来控制表格的行数和列数。

每向TableLayout中添加一个TableRow就代表一行;

每向TableRow中添加一个一个子组件就表示一列;

如果直接向TableLayout添加组件,那么该组件将直接占用一行;

在表格布局中,可以为单元格设置如下三种行为方式:

       Shrinkable:该列的所有单元格的宽度可以被收缩,以保证该表格能适应父容器的宽度;

       Strentchable:该列所有单元格的宽度可以被拉伸,以保证组件能完全填满表格空余空间;

       Collapsed:如果该列被设置为Collapsed,那么该列的所有单元格会被隐藏;

1.6 GridLayout网格布局

GridLayout是Android4.0增加的网格布局控件,与之前的TableLayout有些相似,它把整个容器划分为rows ×columns个网格,每个网格可以放置一个组件。性能及功能都要比tablelayout好,比如GridLayout布局中的单元格可以跨越多行,而tablelayout则不行,此外,其渲染速度也比tablelayout要快。

GridLayout提供了setRowCount(int)和setColumnCount(int)方法来控制该网格的行和列的数量

二、Activity

2.1.Activity生命周期


通过activity的生命周期,我们可以将activity分为四种状态,分别为活动、暂停、停止、销毁

①activity启动

onCreate ——> onStart ——> onResume

②activity暂停

按下home键,执行onPause ——> onStop

③点击home键回到程序界面

onRestart ——> onStart ——> onResume

④退出当前Activity

onPause ——> onStop ——> onDestory

2.2 Activity启动模式

首先明确任务栈的概念,开启一个activity就叫进栈,关闭一个activity就叫出栈;用户操作的activity永远位于栈顶,程序一旦退出了任务栈也就被清空了,一般来说一个应用程序对应一个任务栈。

①standard

activity默认启动模式,每启动一个activity就会创建一个新的实例。

应用场景:闹钟

②singleTop

栈顶复用模式,首先检查任务栈的栈顶,要创建的activity在栈顶已经存在的话,则直接复用,否则依然会重新创建。

应用场景:浏览器的书签

③singleTask

栈内复用模式,首先检查任务栈内是否有实例存在,如果存在该实例,就把这个activity上面的所有别的activity实例都清空掉,再复用这个已经存在的实例

应用场景:浏览器

④singleInstance

单一实例,每一个activity都独享一个任务栈,系统会自动创建一个任务栈。

应用场景:来电页面

三、Service

service是Android后台组件,和activity一样有自己的生命周期,没有用户界面;Android中分为两种service:Service以及IntentService,并且service有两种启动模式,不同启动模式,其生命周期也不相同。

3.1 IntentService特征

①IntentService会创建一个单独的worker线程来处理所有的intent请求

②IntentService只需要实现onHandIntent()方法

③当所有的请求处理完成后,IntentService会自动停止

3.2 Service

3.2.1 启动方式

①startService启动service

访问者与Service没有关联,访问者退出了,Service仍然在后台运行,可通过调用stopSelf()来停止服务,或者是调用stopService来停止服务,且这种方式无法进行通信以及交换数据

生命周期为:onCreate() ——>onstartCommand()——>onDestory()

②IntentService启动service

访问者与service绑定在一起,当访问者被销毁时,服务也会被销毁;方便访问者与Service之间进行通信和交换数据

生命周期为:onCreate()——>onBind()——>onUnbind()——>onDestory()

四、BroadcastReceiver

BroadcastReceiver本质上是一个全局的监听器,用于监听全局的广播消息,可以很方便的实现不同组件间的通信

启动方式sendBroadcast(),可静态注册(在清单文件中)、动态注册(代码)

五、ContentProvider

ContentProvider将数据进行封装,其他应用可通过内容解析者(ContentResolver)来访问。

实现步骤:

①定义一个类实现ContentProvider

②在清单文件中进行配置,加入authorities属性

③定义路径匹配器UriMactcher

④写一个静态代码块,添加匹配规则

⑤暴露方法(增删改查)

六、fragment

fragment即碎片,它必须依附于activity而存在,其生命周期受activity所影响,可通过静态加载(在布局中加载)、动态加载(代码实现)到相应的activity上,一个activity里面可以包含多个fragment,一个fragment也可以被多个activity重用。

6.1 fragment加载方式

6.1.1 静态加载

在需要加载该fragment的activity的布局文件中通过上述方式加载.

6.1.2 动态加载

七. 动画

7.1 View Animation

View Animation也叫做Tween,补间动画,可进行缩放,位移,旋转,透明等变换.

7.2 Drawable Animation

Drawable Animation也叫Frame,帧动画.

7.3 Property Animation

Property Animation 也叫做属性动画,其原理是修改控件的属性值来实现的动画.

你可能感兴趣的:(2018-08-29)