Android 直播中弹幕、带货和键盘的交互,面试看这个就够了

本文探讨了在Android直播场景中如何处理键盘弹出、弹幕显示以及聊天对话框的交互。通过分析windowSoftInputMode属性,展示了如何判断键盘状态,并利用addOnGlobalLayoutListener监听键盘变化。同时,提到了RecyclerView顶部渐变效果的实现,并介绍了直播弹幕输入框的Dialog设计,以避免界面布局因键盘调整而受到影响。
摘要由CSDN通过智能技术生成

这里先看一下 addOnGlobalLayoutListener 在什么时候被回调的

这里需要对 View 的绘制流程有一定的了解,代码在 ViewRootImpl这个类的 2628 行(API 29)

if (triggerGlobalLayoutListener) {

mAttachInfo.mRecomputeGlobalAttributes = false;

mAttachInfo.mTreeObserver.dispatchOnGlobalLayout();

}

当一个 Activity或者是Dialog 这样的 Window对添加的布局完成测量和布局后就会触发这个回调,从这里可以推断键盘弹出和收起的时候一定触发了 Activity 的重新布局

为什么键盘弹出会触发 Activity 的重新布局

Android提供了 windowSoftInputMode这个属性给开发者去配置键盘的状态以及界面该如何适配键盘

// 当前界面不做改变,键盘直接覆盖在界面上,不会重新布局所以不会触发 GlobalLayoutListener 回调

android:windowSoftInputMode=“adjustNothing”

// 改变当前布局的大小来适应键盘,会触发 GlobalLayoutListener 回调,这个配置就非常适合做微信这种 IM 聊天界面

android:windowSoftInputMode=“adjustResize”

// 直接把布局向上顶,会触发 GlobalLayoutListener 回调

android:windowSoftInputMode=“adjustPan”

// 默认值,界面可以滑动会设置成 ad

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值