一. 布局
1. LinearLayout
子元素彼此连接,根据之前设定排列
重要属性orientation :vertical 垂直 horizontal 水平
gravity 控件内容相对于控件对齐方式
layout_gravity 控件相对于父控件的对齐方式
padding 内边距 margin外边距
layout_weight 父控件剩余空间的分配比例
2. RelativeLayout
控件位置靠依赖关系
方向位置(依靠id):layout_below,above,toLeftOf,toRightOf
方向对齐(依靠id):layout_alignTop,alignBottom…..
基准线(id):alignBaseline
父控件边缘对齐(true):layout_alignParent方向
父控件中央对齐(true):centInParent,centerVertical
centerHorizontal
头尾部(id): Start ,End
二. UI基础控件
1. TextView
一些基本属性id,background(@color或者@drawalbe),TextSize
drawable方向 X方向添加图片
autoLink 自动识别链接
marquee 跑马灯 ellipsize省略号
singLine 单行
2. Button
3. EditText
属性hint,提醒输入
4. ImageView
src前景图片
特殊scaleType缩放类型
5. CheckBox
6. RadioButton和RadioGroup(容器)
7. ToggleButton
8. SeekBar可拖进度条,ProgressBar,RatingBar
9. Time/DatePicker
10. 监听器:常用内部类或者匿名内部类,还有Activity和XML
以Button为例设置并响应
a. XML布局中定义Button并设置id
b. Java代码中创建Button对象依靠findViewById绑定
c. 创建内部类并实现OnClickListener接口重写里面方法
d. 生成内部类对象
e. 为按钮添加监听器button.setOnClickListener(对象)
11. 距离单位:控件常用dp(设备独立像素),字体常用sp
三. Activity管理与生命周期
1. 新建一个activity并去启动
a. 新建activity,class去继承Activity,重写onCreate方法
b. 新建一个XML,java里setContentView去绑定
c. activtiy在Manifest中去注册
d. 创建Intent对象,Intent intent =new Intent
e. intent调用setClass去设置要启动哪个Activity
f. 直接调用sartActivity(intent)进行跳转
2. activity的生命周期
四. Dialog对话框
AlertDialog ,ProgressDialog,DatePickerDialog
AlertDialog创建:通过AlertDialog.Builder 创建内部类对象builder.set方法去设置一系列参数
通过builder.create()创建,.show()显示出来
五. Fragment
解耦,轻量简单
1.重要生命周期
a. onAttach():fragment关联到activity后参数传递完毕
b. onCreate():fragment的创建,还不能获取Activity内容
c. onCreateView():创建fragment要加载的View
d. onDetach:fragment生命周期最后一个回调方法
完整生命周期图:
2.在Activity中加载Fragment
a.静态
class继承fragment,重写onCreatView绑定布局文件
在Activity中声明Fragment,跟普通View一样
b.动态
新建一个类FragmentTest,继承Fragment重写onCreatView,在里面绑定fragment的xml
主xml中添加FragmentLayout,设置id
(主xml设置button,onClick=方法名addFragment,Activity中定义方法addFragment(View view),并加载)
创建Fragment管理器
Fragmentmanager fm=getSupportFragmentManager()
获取Fragment事务对象,并开启事务
FragmentTransaction ft=fm.beginTranscation()
调动事务的动态方法添加移除替换Fragment
FragmentTest fragmentTest =newFragmentTest();
ft.add(id,fragmentTest,tag)//添加,tag是string类型,便于后面找到这个添加的fragment
提交事务
ft.commit()
3.remove和replace
a.
remove大体跟add一样,在判断如何去找前一个添加的fragment的时候,可以通过tag或者id
ft.remove方法,在里面fm.findFragmentByTag
b
replace是将Fragment清空再加入新的,Replace切换时,Fragment会重新初始化
4.Fragment的显示show()和隐藏hide()
作用:切换时不用再次加载
hide只是隐藏,不会摧毁数据
5.Fragment数据传递
两种方式:1.setArguments() 2.通过回调
setArguments:
Activity通过bundle对象将其传递的值存放在里面,然后通过setArguments(bundle)来传递,然后在Fragment通过getArguments()方法,按照唯一键来获取值。
用来传递数据,被销毁的时候,数据会被暂时存储