Android 聊天界面对话
转载请注明出处:http://blog.csdn.net/htwhtw123/article/details/77510010
实现Android 聊天界面对话 ,可以设计成接受到的消息在左显示,发送的消息右边显示。使用RecyclerView实现,主要思路是:在子项布局中同时设置左边和右边的TextView,选择性的让TextView可见或不可见。源码见github:点击跳转。下面是在 Androidd 8.0模拟器运行的效果。
1.导入RecyclerView:
ctr+al+shift+s:打开Project Structure对话框,点击Dependencies标签->点击右边的加号->点击libray dependence->在搜索框输入recyclerview->回车->双击选中下图所示项
2.添加图片,设置图片的拉伸方式:自己找一个一个对话框图片->复制到drawable目录下->右击图片文件->create 9 patch file …->弄成如下的样子->把原图片删除。左右各一个,可以在选择图片时,将图片水平旋转,就有了对称的另一张图。例如下面的communicate_left.9.png
3.设置RecyclerVeiw的子布局:
item_layout.xml中的代码:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_marginTop="20dp"android:orientation="vertical"><TextView
android:id="@+id/leftTv"android:textSize="25sp"android:text="左边发出:\n右边你好"android:paddingRight="5dp"android:paddingLeft="10dp"android:paddingTop="5dp"android:paddingBottom="5dp"android:background="@drawable/communicate_left"android:layout_width="wrap_content"android:layout_height="wrap_content"/><TextView
android:id="@+id/rightTv"android:text="右边发出:\n左边你好"android:paddingRight="10dp"android:paddingLeft="5dp"android:paddingTop="5dp"android:paddingBottom="5dp"android:background="@drawable/communicate_right"android:textSize="25sp"android:gravity="right"android:layout_marginRight="2dp"android:layout_width="wrap_content"android:layout_gravity="right"android:layout_height="wrap_content"/></LinearLayout>
4.ItemAdpter适配器代码:
package com.xingyi.chatui;import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;import java.util.ArrayList;
import java.util.List;public class ItemAdapter extends RecyclerView.Adapter<ItemAdapter.MyViewHolder> {List<String> list;Context context;int leftOrRight;public ItemAdapter( Context context) {this.context = context;list=new ArrayList<>();}@Overridepublic MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {MyViewHolder holder = new MyViewHolder(LayoutInflater.from(context).inflate(R.layout.item_layout, parent,false));return holder;}@Overridepublic void onBindViewHolder(MyViewHolder holder, int position) {if(leftOrRight==MainActivity.LEFT){holder.tvLeft.setVisibility(View.VISIBLE);holder.tvRight.setVisibility(View.GONE);holder.tvLeft.setText(list.get(position));}else if(leftOrRight==MainActivity.RIGHT){holder.tvLeft.setVisibility(View.GONE);holder.tvRight.setVisibility(View.VISIBLE);holder.tvRight.setText(list.get(position));}}//添加子项public void addItem(String str,int leftOrRight) {this.leftOrRight=leftOrRight;list.add(str);notifyItemInserted(list.size()-1);}@Overridepublic int getItemCount() {return list.size();}class MyViewHolder extends RecyclerView.ViewHolder {TextView tvLeft,tvRight;public MyViewHolder(View itemView) {super(itemView);tvLeft = (TextView) itemView.findViewById(R.id.leftTv);tvRight = (TextView) itemView.findViewById(R.id.rightTv);}}
}
5.主活动的布局activity_main:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context="com.xingyi.test.MainActivity"android:orientation="vertical"><LinearLayout
android:gravity="center"android:layout_width="match_parent"android:layout_height="wrap_content"><Button
android:onClick="leftClick"android:text="左边发送"android:layout_width="wrap_content"android:layout_height="wrap_content"/><Button android:onClick="rightClick"android:layout_marginLeft="29dp"android:text="右边发送"android:layout_width="wrap_content"android:layout_height="wrap_content"/></LinearLayout><android.support.v7.widget.RecyclerView
android:id="@+id/rv"android:layout_width="match_parent"android:layout_height="match_parent"/></LinearLayout>
6.MainActivity
这里需要注意的是,Recyclerview的导入语句,选择:
import android.support.v7.widget.RecyclerView;
package com.xingyi.chatui;import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.View;public class MainActivity extends AppCompatActivity {RecyclerView recyclerView;ItemAdapter itemAdapter;final static int LEFT=1;final static int RIGHT=2;int i=0;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);initView();}private void initView(){recyclerView= (RecyclerView) findViewById(R.id.rv);recyclerView.setLayoutManager(new LinearLayoutManager(this));itemAdapter=new ItemAdapter(this);recyclerView.setAdapter(itemAdapter);}public void leftClick(View v){//第一个参数指定发出内容,第二参数指定发出的是左还是右itemAdapter.addItem("左边发出:\n右边你好"+i,LEFT);recyclerView.smoothScrollToPosition(i);//移动到指定位置i++;}public void rightClick(View v){//第一个参数指定发出内容,第二参数指定发出的是左还是右itemAdapter.addItem("右边发出:\n左边你好"+i,RIGHT);recyclerView.smoothScrollToPosition(i);//移动到指定位置i++;}}
Android 聊天界面对话相关推荐
- android聊天界面对话气泡_你在和脚本谈恋爱(自动化在IM聊天中的应用)
谢谢打开这篇文章的每个你 测开之分层自动化(Python)招生简章 Python自动化测试报告美化 在python中进行数据驱动测试 太嚣张了!他竟用Python绕过了"验证码" ...
- android聊天界面对话气泡_聊天会话框气泡(示例代码)
1.聊天会话框气泡的实现 我们将一个div的width.height.font-size设置为0,给它一个border-width值,border-color给定四种不同的颜色,此时我们会看到该div ...
- android聊天界面对话气泡_android 模仿QQ聊天气泡 入门级示例源码
[实例简介] [实例截图] [核心代码] package com.study.androidtest; import java.util.ArrayList; import android.app.A ...
- Android 聊天界面背景图片不顶上去内容顶上去解决方法
Android 聊天界面背景图片被输入法 字数398 阅读923 评论0 喜欢14 相信做过android开发的都知道,当界面中有editText的时候,输入法可能导致把当前界面整个给顶上去,这 ...
- 书小宅之android——聊天界面的实现
制作Nine-Patch图片 说明:一种被特殊处理过的图片,指定哪些区域可以被拉伸,哪些区域不可以. 从android Studio2.3开始,不再单独提供draw9patch.bat文件,要生成Ni ...
- android聊天界面与功能,【android】聊天界面的制作-简易版实现
看完了第一行代码第三章,改进了一些基本功能,下面就听小弟一一道来: 也参考了很多别人的代码,但是总觉得一些功能可以比较轻松的实现就不绕那么多弯子,就用最基础的码代码实现一样的功能:(1)整体布局代码一 ...
- 融云android聊天界面,Android 融云IM集成以及使用详解(一)
Android 融云IM集成以及使用详解(一) 集成 1.具体的集成步骤就不在详细介绍,我们只说干货,附上融云IM官方文档地址,里面有更为详细的集成介绍 https://www.rongcloud.c ...
- Android聊天界面中图片大小的合理缩小算法
应用场景 我们知道在聊天界面中,发送显示图片是不可缺少的一部分,这个时候就会面临对于图片显示控件的缩小处理.当然如果是简单的给ImageView设置一个固定的值的话,这篇文章就没有意义了.我们要做的就 ...
- 解决RecyclerView实现聊天界面,但点击下面的EditText后弹出的输入法会遮盖RecyclerView内容的方法
学习Android也将近4个年头了,一直想写点自己所学的内容来帮助后来人,为互联网奉献自己的一份力量,也算自己的积累.但是之前由于自己的惰性一直没有下笔,那就从今天这一篇开始吧! 我们做Android ...
最新文章
- matlab在命令行注册,命令行运行matlab
- Oracle 数据库查看具有sysdba系统权限用户,设置、重置sys用户密码
- python列表中字典排序_python中字典排序,列表中的字典排序
- 反思本地与测试服一个接口不同的响应:本地正常测试服不行500错误,原因php版本新语法不一样
- Self Crossing
- 玩玩短视频平台和网课平台开发1——腾讯云对象储存COS的初步配置
- python两个基本的库管理工具_Python多版本共存管理工具之pyenv
- java eclipse
- 小米手机如何关闭悬浮球
- 第四百零四天 how can I 坚持
- Markdown表情关键字大全
- 51单片机引脚功能介绍
- Android自定义View,画一个好看带延长线的饼状图
- IDEA提高运行速度
- 安尼泰科T1行车记录仪说明书
- Unity零基础到入门 ☀️| 游戏引擎 Unity 从0到1的 系统学习 路线【全面总结-建议收藏】!
- 天蝎项目整机柜服务器技术规范v1.01,天蝎项目整机柜服务器技术规范v1.01
- android直播怎么投屏,安卓手机怎么直播,Total Control手游投屏教程
- Luminati代理动态IP,海量资源可调用!
- OD常用断点函数(转载)