动弹详情表情键盘的分析:
TweetDetailActivity.java的initWidget()方法中开始阅读
mViewInput是KeyboradInputDelegation类中填充的布局的控件,所以实例化了KeyboardInputDelegation的对象后下面就通过该对象获取了mViewInput的引用,因为评论的提交是在TweetDetailActivity.java文件中完成的,mViewInput控件的实例化是在KeyboradInputDelegation.java中的,为了能在提交后更新该控件的hint和text,所以需要该引用
KeyboradInputDelegation.java的静态方法中填充了评论工具条的布局,并且将评论工具条加入到TweetDetailActivity的布局容器中了,且该工具条的根布局已经设置了滑动时显示与隐藏的那个属性了。
在KeyboradInputDelegation#showEmoji()方法中实例化了帧布局控件和Emoji图片控件
接着实例化表情键盘所在的Fragment设置了点击监听器【用于监听表情图标的点击和删除表情操作】并填充上文中的帧布局,因为表情键盘Fragment填充了工具条下面的帧布局,所以需要FragmentManager,这个参数需要Acitivity页面传递过去。
评论输入的文本是在键盘输入代理类KeyboradInputDelegation#setAdapter()方法通过回调Actiivty中的方法实现的提交和删除操作
键盘, emotion按钮, 输入框, emotion面板之间的相互关系委派给KeyboardActionDelegation类管理的,因为Emojy表情键盘的表情和底部工具条的显示与隐藏是在Frament中控制的,该Fragment是KeyboradInputDelegation的一个临时变量,所以需要在KeyboardActionDelegation中提供一个接口供KeyboradInputDelegation调用处实现。该管理类显示与隐藏表情键盘和表情工具条具体是在KeyboradInputDelegation文件中表情Fragment中实现的,所以KeyboardActionDelegation需要定义一个接口供表情Fragment中实现所在的地方实现。
EmojiKeyboardFragment.java布局中含有可显示多种表情的ViewPager和底部工具条,直接控制着表情键盘的显示和系统软键盘的显示与隐藏
发现->开源软件分类点击条目可以左右滑动切换2个ListView布局