《Android编程权威指南》第8~10章读书笔记

XML布局属性

样式、主题及主题属性

样式style XML资源文件,含有用来描述组件行为和外观的属性定义。

主题theme 是各种样式的集合。是属性指向其它样式资源的一种样式资源。

主题属性引用:可将预定义的应用主题样式添加给指定组件。如

?android:listSeparatorTextViewStyle

dp、sp以及屏幕像素密度

dpdensity-independent pixel 的缩写,也有写作dip的,意为密度无关像素。布局时常用这种单位,1dp单位在设备屏幕上宗师等于1/160英寸。

spscale-independent pixel的缩写,意为缩放无关像素。会受到用户字体偏好设置的影响。通常用于设置字体大小。

布局参数

名称不以layout_开头的属性作用于组件。组件生成时,会调用某个方法按照属性及属性值进行自我配置。

名称以layout_开头的属性则作用于组件的父组件。将这些属性统称为布局参数,通知父布局如何在内部安排自己的子元素。

边距与内边距

边距:也称作外边距,android:layout_margin(XXX),XXX是指leftrighttopbottom四个方向,不添加方向的话就是指四个方向都添加同样的边距。属于布局参数,决定了组件之间的距离。

内边距android:padding(XXX),XXX是指leftrighttopbottom四个方向,不添加方向的话就是指四个方向都添加同样的内边距。告诉组件,在绘制自身时,要比所含内容大多少。

android:layout_weight属性的工作原理

该属性告诉LinearLayout如何进行子组件的布置安排。在决定子组件视图的宽度时,LinearLayout使用的是layout_width(height)layout_weight参数的混合值。

1.LinearLayout查看组件的layout_width属性值(竖直方向看layout_height属性值)占据多少空间;

2.LinearLayout根据layout_weight属性值对剩余空间进行分配。

Fragment启动Activity

基本等同于从Activity启动另一个Activity的实现方式,调用Fragment.startActivity(Intent intent)

获取Extra信息

1.直接获取

getActivity().getIntent().getExtra(),如果是序列化对象就是getSerializableExtra()

弊端:牺牲了fragment的封装性,fragment总是由某个Activity托管着,不再是可复用的构建单元。

2.fragment argument

每个Fragment实例都可附带一个Bundle对象,该对象包含键值对,一个键值对即一个argument

创建fragment argument之前,先创建Bundle对象,使用Bundle限定类型的put方法,将argument添加到bundle中。如:

Bundle args = new Bundle();

args.putSerializable("xxx",yyy);

2.1.附加argumentfragment

调用Fragment.setArguments(Bundle bundle)注意:该过程必须在Fragment创建后,添加给Activity之前完成。

2.2.获取argument

先调用Fragment.getArguments()获取argument,再调用Bundle限定类型的get方法。如:

YYY yyy = getArguments().getSerializable("xxx");

无需getActivity(),即无需托管Activity的上下文,这保留了Fragment的独立性。

通过Fragment获取返回结果

Fragment.startActivityForResult()

Fragment.onActivityResult()

注意:fragment能够重Activity中接收返回结果,但其自身无法产生返回结果,只有Activity拥有返回结果,所以Fragment没有setResult()

你可能感兴趣的:(《Android编程权威指南》第8~10章读书笔记)