美文网首页
android 聊天页面

android 聊天页面

作者: like26th | 来源:发表于2017-06-14 16:57 被阅读0次

公司想做一个客服系统,要求聊天内容要对外保密,不允许用第三方SDK,这要求也是略严格了,搜索了一下网上的博客,质量好的Demo大多基于第三方的UI框架,无奈只能硬着头皮自己摸索一下,时间允许的话再慢慢优化吧。

<big>布局</big>
三部分:标题栏,聊天内容,输入框。

标题栏写了一个简单的自定义控件,可以控制标题文字和一个左上角的返回按钮。聊天内容选择下拉刷新布局(PtrFrameLayout)包裹一个RecycleView ,下拉刷新查询历史数据。底部输入框暂时用相对布局堆起来,提供emoji表情和文字输入功能,将来如果有时间将输入框写成自定义控件。

布局.png

标题是长链接的链接状态,链接成功后显示对方信息,这里不做累述。

RecycleView 适配器里,设置两种类型,发送消息和接受消息

    public int getItemViewType(int position) {
        //判断消息类型
        if (isSend) { 
            return ITEM_TYPE.ITEM_RIGHT.ordinal();//发送
        } else {
            return ITEM_TYPE.ITEM_LEFT.ordinal();//接收
        }
    } ```

模拟发送两条信息看看

![聊天信息测试.png](https://img.haomeiwen.com/i3027657/738c4f6a4bc08f0b.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

信息的气泡框的 .9图片需要仔细调整,不然很丑。

点击发送按钮,或者收到一条消息,更新页面。

public void add(int pos) {
notifyItemInserted(pos);
notifyDataSetChanged();
}


如果数据很多,再发送和接收消息后,页面需要定位到最后一条信息,控制recycleview滚动,用到recycleview的layoutManager

public void scrollToBottom() {
layoutManager.scrollToPosition(list.size()-1);
}


如果是查询聊天记录,并且聊天记录有多条,我们一般采用的是下拉刷新的办法,刷新成功后,页面不会滚动好刷新后的提一条数据,而是停留在刷新位置,我们向上滑动时,才会展示历史纪录,此时要看想要一次查询多少信息,例如如果查询10条信息,页面更新后,第一条item可见位置应该是第11个item位置

public void scrollToLastPos() {
int lastVisibleItemPosition = layoutManager.findLastVisibleItemPosition();
//每次更新10条信息,为了刷新后仍固定在相同的页面位置,所以滑动位置为 lastPos + 9 ,9为为了可以展示一个刷新出来的item
layoutManager.scrollToPosition(lastVisibleItemPosition + 9);
}


关于键盘的问题
为了避免布局被软键盘覆盖,我们需要监听键盘弹出,当键盘弹出时,聊天记录定位到记录最后位置。或者设置windowSoftInputMode 也可以,但是这里没有采用这样的方式,你可以自己测试。

判断键盘是否弹出思路:判断窗口可见区域的大小,如果屏幕高度和应用窗口可见区域高度差值大于整个屏幕的1/3,则便是软件盘显示中,否则为键盘隐藏状态。
参考链接:http://blog.csdn.net/ccpat/article/details/46730771

对输入框进行一些限制

android:inputType="textMultiLine"//允许多行显示
android:maxLines="3"//再无内容情况下,最多显示3行
android:maxLength="75"//输入内容不超过75个字符
android:maxEms="10"//每行长都不超过10ems长度,ems长度单位会随着字体大小的变化而变化

[demo](https://github.com/LikeBaker/LikePorject)

相关文章

  • android 聊天页面

    公司想做一个客服系统,要求聊天内容要对外保密,不允许用第三方SDK,这要求也是略严格了,搜索了一下网上的博客,质量...

  • 2019-02-13

    Android实现一个功能完善的聊天页面 ​ 前言:在APP中经常需要使用到聊天页面,尤其是一些涉及社交和社区...

  • 聊天页面

    聊天气泡 //self.title = @"☀️☀️☀️"; //self.navigationControlle...

  • Android软键盘问题总结

    Android软键盘聊天页面设置1、activity的在manifest中设置键盘模式 2、在Activity中设...

  • 微信再更新,你需要知道这些好玩的改动

    近日,微信7.0.17 for Android版本开始内测,又是一大波更新来袭。据了解,小程序、聊天页面、公众号,...

  • Android跳转到QQ加群、聊天页面

    1.跳转到QQ聊天页面(单聊) 2.跳转到QQ群页面在跳转到QQ群页面前,需要先获取要跳转到QQ群的Key,获取K...

  • Android跳转到QQ加群、聊天页面

    效果图: 跳转到QQ聊天页面(单聊) 跳转到QQ群页面在跳转到QQ群页面前,需要先获取要跳转到QQ群的Key,获取...

  • 聊聊Android的转场动画

    Android的转场动画包括:场景动画,页面的转场动画,页面元素间共享动画。 Android转场动画[https:...

  • 我的app作品展示

    2.账号管理页面 3.购物页面 4.聊天页面 5.我的页面 6.登录页面 功能:xmpp即时聊天(iphone对i...

  • Android点击链接跳转到指定APP页面

    指定APP页面配置

    网友评论

      本文标题:android 聊天页面

      本文链接:https://www.haomeiwen.com/subject/wcgvzttx.html