(第一行代码)笔记(二)

四种基本布局

  • layout_gravity 指定控件位置
  • weight 按照比例指定控件的大小

  • LinearLayout 线性布局
    orientation vertical,horizontal
  • RelativeLayout 相对布局
  • FrameLayout 帧布局
  • TableLayout 表格布局
    stretchColumns 拉伸指定列自适应屏幕宽度
    TableRow layout_span

创建自定义控件

固定布局,通过layout布局文件自定义控件

LayoutInflater.from(context).inflate(R.layout.activity_main_layout,this);
ListView
优化使用ViewHolder
view.setTag(viewHolder)
单位
dp代替dx
动态获取屏幕密度值
getResources().getDisplayMetrics().xdpi;
getResources().getDisplayMetrics().ydpi;

.9图

碎片Fragment

新建类继承Fragment,重写onCreateView ,使用参数中的inflate.inflate()方法填充布局, 返回view
layout布局中添加fragment指定name属性为新建类

碎片动态添加

把Fragment布局放在FrameLayout布局中替换fragment布局

  1. 先new出继承Fragment,新实例
  2. FragmentManager manager = getFragmentManager();
  3. FragmentTransaction transaction = manager.beginTransaction();
  4. transaction.replace(R.id.content ,fragment);
  5. transaction.commit();

按back键返回上一个fragment,可transaction.addToBackStack(null);

getActivity()可获得与此fragment相关联的activity实例
getFragmentManager().findFragmentById()获取碎片的实例

碎片的生命周期

  1. onAttach 碎片与活动相关联的时候调用
  2. onCreateView 碎片创建视图(加载视图)时候调用
  3. onActivityCreated 确保与碎片相关联的活动一定已经创建完毕的时候调用
  4. onDestroyView 当与碎片相关联的视图被移除的时候调用
  5. onDetach 当碎片与活动解除关联的时候调用

碎片完整的生命周期
添加一个碎片

  1. onAttach
  2. onCreate
  3. onCreateView
  4. onActivityCreated
  5. onStart
  6. onResume
  7. 碎片已激活
  8. onPause
  9. onStop
  10. onDestroyView
  11. onDestroy
  12. onDetach
  13. 碎片被销毁

广播接收器

  1. 标准广播
    异步执行,所有广播接收器几乎同一时间接收到广播,没有先后顺序可言
  2. 有序广播
    同步执行,同一时刻只有一个广播接收器能收到这条广播消息,有先后顺序,并可以截断正在传递的广播。

动态注册监听网络变化

代码中注册为动态注册,
AndroidManifest.xml中注册为静态注册

创建广播接收器

继承BroadcastReceiver重写父类onReceive方法

MainActivity中代码`onCreate`方法中

IntentFilter intentFilter = new IntentFilter();
intentFileter.addAction("android.net.conn.CONNECTIVITY_CHANGE");
netChangeReceiver(new 新对象)
registerReceiver(netChangeReceiver, intentFilter);

`onDestroy`方法中
unRegisterReceiver(newChangeReceiver);

重写`onReceive`方法
ConnectivityManager cm = getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo info = cm.getActiveNetworkInfo();

此服务监听需要申请权限。
ACCESS_NETWORK_STATE
开机启动权限BOOT_COMPLETED
开机监听RECEIVE_BOOT_COMPLETED
后台运行allowBackup
自定义广播消息
new Intent("消息的字段内容");
sendBroadcast(intent);

发送有序广播
sendOrderedBroadcaset(intent, null);
第二个参数是与权限相关的字符串

abortBroadcast拦截广播

以上为系统广播,下面为本地广播。

LocalBroadcastManager对广播进行管理
广播的最佳实践,强制下线

alertDialog.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);
需要申请权限。
广播里面启动活动,需要
intent.addFlag(Intent.FLAG_ACTIVITY_NET_TASK);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值