Android学习开发之路——简单UI聊天界面的实现
学了很多的安卓的知识,今天就记录一下简单聊天界面的实现,首先先看XMl,代码如下:聊天气泡布局代码
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <!-- 发送时间 --> <TextView android:id="@+id/tv_chattime" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:layout_centerHorizontal="true" android:layout_marginTop="14dp" android:padding="3dp" android:text="2016年9月13日10:55:58" android:textColor="#FFFFFF" android:textSize="12sp" /> <!-- 文字内容 --> <TextView android:id="@+id/tv_chatneirong" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignTop="@+id/iv_chattou" android:layout_toLeftOf="@+id/iv_chattou" android:background="@drawable/skin_aio_user_bubble_nor" android:gravity="center" android:padding="10dp" android:text="发送的内容" android:layout_marginTop="10dp" android:textSize="16sp" android:maxLines="10" android:maxEms="10" /> <!-- 头像 --> <ImageView android:id="@+id/iv_chattou" android:layout_width="40dp" android:layout_height="40dp" android:layout_alignParentRight="true" android:layout_below="@+id/tv_chattime" android:layout_marginRight="14dp" android:src="@drawable/ic_launcher" /> </RelativeLayout>
activiti_main.XML代码如下
<RelativeLayout 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="${relativePackage}.${activityClass}" > <!-- 用来显示消息的列表 --> <ListView android:id="@+id/wo" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_above="@+id/neirong"></ListView> <!-- 用来输入文本的 --> <EditText android:id="@+id/neirong" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_toLeftOf="@+id/fasong" android:text="少时诵诗书" /> <!-- 用于发送的按钮 --> <Button android:id="@+id/fasong" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="发送" android:layout_alignParentBottom="true" android:layout_alignParentRight="true"/> </RelativeLayout>
主页面布局效果图
这里主要是通过ListView的更新数据来实现聊天,EditText用来接收内容,Button用来发送消息
接下来 来实现Java代码 MainActivity.java
1 package com.example.androidliaotian; 2 3 import java.util.ArrayList; 4 import java.util.List; 5 6 7 8 import android.app.Activity; 9 import android.os.Bundle; 10 import android.util.Log; 11 import android.view.Menu; 12 import android.view.MenuItem; 13 import android.view.View; 14 import android.view.View.OnClickListener; 15 import android.widget.Button; 16 import android.widget.EditText; 17 import android.widget.ListView; 18 19 public class MainActivity extends Activity { 20 private ListView listview;//列表 21 private EditText neirong;//内容 22 private Button fasong;//按钮 23 private List<JavaBean> list = new ArrayList<JavaBean>();//填充数据的list集合 24 private MainAdapten adapten; //构建数据源 25 @Override 26 protected void onCreate(Bundle savedInstanceState) { 27 setContentView(R.layout.activity_main); 28 super.onCreate(savedInstanceState); 29 30 listview = (ListView) findViewById(R.id.wo); 31 //构建adapten数据源 32 adapten = new MainAdapten(list, this); 33 listview.setAdapter(adapten); 34 neirong = (EditText) findViewById(R.id.neirong); 35 fasong = (Button) findViewById(R.id.fasong); 36 //发送按钮的点击事件 37 fasong.setOnClickListener(new OnClickListener() { 38 39 @Override 40 public void onClick(View v) { 41 //String text = ; 42 //实例化Bean文件 43 JavaBean javaBean = new JavaBean(); 44 //取当前文本内容并利用set方法赋值 45 javaBean.setNeirong(neirong.getText().toString()); 46 javaBean.setTime(System.currentTimeMillis()+""); 47 list.add(javaBean); 48 //更新数据源 49 adapten.setList(list); 50 adapten.notifyDataSetChanged(); 51 //列表显示最后一条数据 52 listview.setSelection(list.size()-1); 53 //发送完毕之后要让输入框清空 54 neirong.setText(""); 55 } 56 }); 57 58 59 60 } 61 62 }
接下来是Bean文件代码
1 package com.example.androidliaotian; 2 3 public class JavaBean { 4 private String neirong; 5 private String time; 6 public String getNeirong() { 7 return neirong; 8 } 9 public void setNeirong(String neirong) { 10 this.neirong = neirong; 11 } 12 public String getTime() { 13 return time; 14 } 15 public void setTime(String time) { 16 this.time = time; 17 } 18 @Override 19 public String toString() { 20 return "JavaBean [neirong=" + neirong + ", time=" + time + "]"; 21 } 22 23 24 }
ChatAdapter.java
1 package com.example.androidliaotian; 2 3 import java.util.List; 4 5 6 7 import android.content.Context; 8 import android.view.LayoutInflater; 9 import android.view.View; 10 import android.view.ViewGroup; 11 import android.widget.BaseAdapter; 12 import android.widget.ImageView; 13 import android.widget.TextView; 14 15 public class MainAdapten extends BaseAdapter{ 16 private List<JavaBean> list; 17 private Context context; 18 19 public MainAdapten(List<JavaBean> list,Context context){ 20 this.context = context; 21 this.list = list; 22 } 23 //用于更新集合 24 public void setList(List<JavaBean> list) { 25 this.list = list; 26 notifyDataSetChanged(); 27 } 28 29 @Override 30 public int getCount() { 31 return list.size(); 32 } 33 34 @Override 35 public Object getItem(int position) { 36 return list.get(position); 37 } 38 @Override 39 public long getItemId(int position) { 40 return position; 41 } 42 43 @Override 44 public View getView(int position, View convertView, ViewGroup parent) { 45 46 final Hui hui; 47 if(convertView == null){ 48 hui = new Hui(); 49 convertView = LayoutInflater.from(context).inflate(R.layout.item_chatqipao, null); 50 hui.chatneirong = (TextView) convertView.findViewById(R.id.tv_chatneirong); 51 hui.chattime = (TextView) convertView.findViewById(R.id.tv_chattime); 52 hui.tou = (ImageView) convertView.findViewById(R.id.iv_chattou); 53 54 convertView.setTag(hui); 55 }else{ 56 hui = (Hui) convertView.getTag(); 57 } 58 JavaBean javaBean = list.get(position); 59 hui.chatneirong.setText("我是"+javaBean.getNeirong()); 60 hui.chattime.setText(javaBean.getTime()); 61 return convertView; 62 } 63 64 class Hui{ 65 ImageView tou,tupian; 66 TextView chattime,chatneirong; 67 } 68 }
好了,一个简单的聊天界面就这么实现了,下面附上源代码
下载地址:链接: http://pan.baidu.com/s/1nvk3feT 密码: nj4z
能看到的代码不是自己的,自己写出来的才是自己的