Android 直播中弹幕、带货和键盘的交互

本文主要分享下直播中的弹幕、键盘还有带货卡片的交互效果的实现方式

效果图

实现思路

通过监听键盘的状态以及商品卡片的状态对弹幕区域做 translationY 动画。实现思路就很简单,下面有一些难点

  • 监听键盘状态的实现方法
  • 键盘的高度怎么获取

监听键盘弹出收起

因为Android不能对键盘做监听,网上的方案都是用viewTreeObserver去间接的判断的

view.viewTreeObserver.addOnGlobalLayoutListener {
	// 在这里通过判断屏幕的可见高度,间接的判断弹出和收起
}  

为什么可以通过这种方式去实现呢?

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

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

if (triggerGlobalLayoutListener) {
    mAttachInfo.mRecomputeGlobalAttributes = false;
    mAttachInfo.mTreeObserver.dispatchOnGlobalLayout();
}

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

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

Android提供了 windowSoftInputMode这个属性给开发者

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值