android学习笔记

第一行代码第二天(UI、碎片、广播)

1.属性
(1)gravity和layout_gravity的区别
其实从名字就可以看出,android:gravity用于指定文字在控件中的对齐方式,而android:layout_gravity用于指定控件在布局中的对齐方式。
(2)
2.布局
2.1引入布局
可以避免代码的大量重复,通过引入自定义的布局
2.2ListView
数组中的数据是无法直接传递给ListView的,这里我们通过ArrayAdapter来完成。首先将ArrayAdapter的泛型指定为String ,然后依次传入当前上下文(MainActivity.this)、ListView子项布局的id(android.R.layout.simple_list_item_1),以及要适配的数据(data)。最后,还需要调用ListView的setAdapter()方法将构建好的适配器对象传递进去,这样ListView和数据之间的关联就建立完成了(android.R.layout.simple_list_item_1:Android内置的布局文件,里面只有一个TextView,可用于简单地显示一段文本。)
在这里插入图片描述
2.2.1定制ListView界面
(1)定义一个实体类Fruit,作为ListView适配器的适配类型
(2)ListView的子项指定一个我们自定义的布局(ImageView+TextView)
(3)创建一个自定义的适配器(继承自ArrayAdapter),将泛型指定为Fruit类(与(1)定义的实体类相对应) 重写父类的一组构造函数,用于将上下文、ListView子项布局的id和数据都传递进来。
重写getView() ,getItem() 方法得到当前项的Fruit实例,通过LayoutInflater将当前子项加载到ListView中,接下来调用View的findViewById()获取到ImageView和TextView的实例,并分别调用它们的setImageResource()和setText()方法来设置显示的图片和文字,最后将布局返回,这样我们自定义的适配器就完成了。

在这里插入图片描述
2.3RecyclerView
(1)ViewHolder继承自RecyclerView.ViewHolder,参数为RecyclerView子项的最外层布局,
(2)FruitAdapter有一个构造函数,这个方法用于把要展示的数据源传进来,并赋值给一个全局变量mFruitList.
(3)onCreateViewHolder() 方法是用于创建ViewHolder实例的,在这个方法中将fruit_item布局加载进来,创键ViewHolder 实例,并把加载出来的布局传入到构造函数当中,最后将ViewHolder 的实例返回。
(4)onBindViewHolder()方法是用于对RecyclerView子项的数据进行赋值的,会在每个子项被滚动到屏幕内的时候执行,这里我们通过position参数得到当前项的Fruit实例,然后再将数据设置到ViewHolder 的ImageView和TextView当中即可。(5)getItemCount()用于告诉RecyclerView一共有多少子项,直接返回数据源的长度就可以了。

在这里插入图片描述
2.4聊天界面的实现
(1)编写主界面,定义消息实体类,编写RecyclerView子项的布局
(2)创建RecyclerView的适配器类,且在onBindViewHolder()方法中增加对消息类型的判断(来隐藏左或右的TextView)
(3)最后在MainActivity初始化数据,并给发送按钮加入事件响应
3.碎片
3.1碎片的简单用法
(1)新建两个xml文件(left_fragment和right_fragment)
(2)重写两个onCreateView,通过LayoutInflater.inflate()加载fragment
(3)main.xml中添加碎片,用 < fragment /> 标签
3.2动态添加碎片
(1) 创建another_right_fragment
(2) 通过replaceFragment代替right_fragment。

4广播
4.1广播分类:标准广播和有序广播
4.2如何接收系统广播
4.2.1动态注册
(1)在主活动中定义一个内部类继承自BroadcReceiver,并重写父类的onReceive()方法(要执行的动作如Toast),
(2)在onCreate()方法中添加广播对应的action(如网络变化广播),添加了就能监听了
(3)通过registerRecevier()把对应的广播和要执行的动作联系在一起(传(1)(2)对应的实例对象)
4.2.2静态注册
(1)创建一个广播接收器(Exported,Enable),重写onReceive()
(2)Manifest.xml注册,加入<receiver 标签(自动完成),声明权限
4.3发送广播
4.3.1发送标准广播
在onClick中构建intent对象,表明要发送广播,把要发送的广播的值传进去,sendBroadcast(intent),所有监听了该值的广播接收器都能收到这条广播。
4.3.2发送有序广播
将上节的sendBroadcast()方法改为sendOrderBroadcast()方法,在监听了的各广播接收器中设置优先级,并决定截不截断广播。
4.4本地广播
用LocalBrandcastmanager来对广播进行管理(提供了注册广播接收器和发送广播的方法),获取LocalBrandcastmanager实例,调用各方法(如点击按钮发送一条广播,在某个activity注册广播接收器就可以接收了)
4.5强制下线功能实现
(1)用ActivityCollector类管理所有活动
(2)创建BaseActivity作为所有活动的父类
(3)创建一个登陆界面的活动以及相应的布局文件
(4)在主活动添加一个按钮用于触发强制下线功能,点击事件为sendBroadcast
(5)在BaseActivity注册一个广播接收器(在处于栈顶的活动中注册,也就是onResume()方法中)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值