Android实现表情功能

 更新时间:2022年04月01日 10:35:50   作者:qq_21467035  
这篇文章主要为大家详细介绍了Android实现表情功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了Android实现表情功能的具体代码,供大家参考,具体内容如下

Dialog实现表情评论功能核心问题:

1、如何得到键盘弹起和隐藏状态
2、在于表情和键盘切换时候,防止Dialog抖动

问题1:由于无法获取键盘弹起状态,但是键盘弹起,View尺寸变化,同时被onSizeChanged()调用。

View 源码:

/**
     * This is called during layout when the size of this view has changed. If
     * you were just added to the view hierarchy, you're called with the old
     * values of 0.
     *
     * @param w Current width of this view.
     * @param h Current height of this view.
     * @param oldw Old width of this view.
     * @param oldh Old height of this view.
     */
    protected void onSizeChanged(int w, int h, int oldw, int oldh) {
}

我们可以通过继承View 重写 onSizeChanged方法得到View尺寸变化来判断键盘是否弹起:

int minKeyboardHeight = dm.heightPixels / 4; (屏幕高度1/4)

当 oldh - h > minKeyboardHeight时,键盘弹起

当 h - oldh > minKeyboardHeight时,键盘隐藏

如此即可获取键盘的弹起、隐藏状态 和键盘高度 inputHeight(同时也是表情布局高度) 。

问题2:表情和键盘切换时候,防止Dialog抖动

表情和键盘切换时候,由于DialogViewHeight 高度变化导致的Dialog高度重新计算高度而产生抖动;那么当表情和键盘切换时DialogViewHeight 中间 DialogViewHeight 高度固定不变导致界面抖动。

键盘——>表情:因为当键盘弹起时候,我们已经知道键盘的高度,那么当切换表情时候:(键盘高度==表情高度)

①、 锁高度 DialogViewHeight = CommentView高度 + inputHeight(键盘高度)。锁高重点在于设置 DialogView固定值,同时设置 layoutParams.weight = 0F

②、然后设置表情布局 VISIBLE 和 隐藏键盘

③、释放锁高。释放锁高重点在于设置 DialogViewHeight = LinearLayout.LayoutParams.MATCH_PARENT,同时设置  layoutParams.weight = 1.0F

代码:

//①锁高:
LinearLayout.LayoutParams layoutParams = (LinearLayout.LayoutParams) CommentView.getLayoutParams();
layoutParams.height = DialogView.getHeight();
layoutParams.weight = 0.0f;
llContentView.setLayoutParams(layoutParams);
 
//②表情布局显示
EmotionView.setVisibility(View.VISIBLE)
//隐藏键盘
 
//③释放高度
LinearLayout.LayoutParams layoutParams = (LinearLayout.LayoutParams) DialogView.getLayoutParams();
layoutParams.height = LinearLayout.LayoutParams.MATCH_PARENT;
layoutParams.weight = 1.0f;
llContentView.setLayoutParams(layoutParams);

表情——>键盘:表情切换键盘其实跟键盘切换表情一样,分三步

①、 锁高度:锁高度 DialogViewHeight = CommentView高度 + inputHeight(键盘高度)。锁高重点在于设置 DialogView固定值,同时设置 layoutParams.weight = 0F

②、然后设置表情布局 GONE 和 弹起键盘

③、释放锁高。释放锁高重点在于设置 DialogViewHeight = LinearLayout.LayoutParams.MATCH_PARENT,同时设置  layoutParams.weight = 1.0F

//①锁高:
LinearLayout.LayoutParams layoutParams = (LinearLayout.LayoutParams) CommentView.getLayoutParams();
layoutParams.height = DialogView.getHeight();
layoutParams.weight = 0.0f;
llContentView.setLayoutParams(layoutParams);
 
//②表情布局隐藏
EmotionView.setVisibility(View.GONE)
//显示键盘
 
 
//③释放高度
LinearLayout.LayoutParams layoutParams = (LinearLayout.LayoutParams) DialogView.getLayoutParams();
layoutParams.height = LinearLayout.LayoutParams.MATCH_PARENT;
layoutParams.weight = 1.0f;
llContentView.setLayoutParams(layoutParams);

总结:

1、onSizeChanged方法,重点在于获取键盘的高度。方便后面表情布局高度设置。

2、表情切换主要在于对布局进行锁高和释放高度,来实现表情、键盘切换时候,Dialog布局高度是没有变化。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • 详解Android Studio Git分支实践

    详解Android Studio Git分支实践

    这篇文章主要介绍了Android Studio Git分支实践,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-05-05
  • Flutter正确使用图片资源方法详解

    Flutter正确使用图片资源方法详解

    这篇文章主要为大家介绍了Flutter正确使用图片资源方法详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-08-08
  • Android悬浮按钮点击返回顶部FloatingActionButton

    Android悬浮按钮点击返回顶部FloatingActionButton

    这篇文章主要为大家详细介绍了Android悬浮按钮FloatingActionButton点击回到顶部的实现代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-02-02
  • Android控件之使用ListView实现时间轴效果

    Android控件之使用ListView实现时间轴效果

    这篇文章主要介绍了Android基础控件之使用ListView实现时间轴效果的相关资料,本文是以查看物流信息为例,给大家介绍了listview时间轴的实现代码,需要的朋友可以参考下
    2016-11-11
  • Android Fragment(动态,静态)碎片详解及总结

    Android Fragment(动态,静态)碎片详解及总结

    这篇文章主要介绍了Android Fragment详解及总结的相关资料,这里对Android Fragment 动态,静态碎片进行了整理总结,需要的朋友可以参考下
    2016-12-12
  • Android WebView使用的技巧与一些坑

    Android WebView使用的技巧与一些坑

    这篇文章主要为大家详细介绍了Android WebView使用的技巧与一些坑,感兴趣的小伙伴们可以参考一下
    2016-06-06
  • Java语言读取配置文件config.properties的方法讲解

    Java语言读取配置文件config.properties的方法讲解

    今天小编就为大家分享一篇关于Java语言读取配置文件config.properties的方法讲解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-03-03
  • Android之小球自由碰撞动画示例

    Android之小球自由碰撞动画示例

    大家好,本篇文章主要讲的是Android之小球自由碰撞动画示例,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下,方便下次浏览
    2021-12-12
  • android studio安装时 AVD出现问题如何快速解决

    android studio安装时 AVD出现问题如何快速解决

    这篇文章主要介绍了安装android studio时 AVD出现问题如何快速处理,其实解决方法也很简单,文中通过截图的形式给大家及时的非常详细,对大家的工作或学习具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-03-03
  • Android中使用ListView绘制自定义表格技巧分享

    Android中使用ListView绘制自定义表格技巧分享

    使用ListView绘制自定义的表格有朋友尝试过没有,下面为大家分享下要实现下图的效果有几个方面,参照着这几点做了个简单的实现不是问题好了,话不多说看代码
    2013-06-06

最新评论