制作简易聊天界面

  • 功能:仿制聊天界面,实现发送消息
  • 实现:制作点9图作为气泡背景图片,ListView显示消息,判断消息类别(发送/收到)显示相应的item布局。

1)制作.9图

  1. 理解nine——patch(.9.png)
    .9.png是Android中一种特殊的png格式的图片,可以指定图片特定位置拉伸以及填充内容的位置。利用.9.png可以使图片在特定区域拉伸时不会失真。
  2. 制作.9.png格式的气泡图片
    将背景图片放到res-drawable中,右键选择create 9-patch file。在.png图片四周增加了一个像素点的空白像素,通过在该空白像素区域内绘制黑点来指定特殊区域。

    左边线条:纵向拉伸区域。
    上边线条:横向拉伸区域。
    右边线条:填充内容纵向显示区域。
    下边线条:填充内容横向显示区域。

2)判别消息类型,显示相应布局

1.item.xml

//接收到的消息布局
<LinearLayout
        android:id="@+id/left_layout"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="left"
        android:background="@drawable/left"
        >
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:layout_margin="10dp"
            android:id="@+id/left_tv"
            android:textColor="#787878"/>
    </LinearLayout>
//发送的消息布局
    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/right_layout"
        android:background="@drawable/right"
        android:layout_gravity="right">
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:id="@+id/right_tv"
            android:layout_margin="10dp"
            android:textColor="#000"/>
    </LinearLayout>

2.为消息设置type,区分收到的和发送的消息。通过setVisibility()方法显示相应的布局。

if(msg.getType() == msg.TYPE_RECEIVED){
            viewHolder.leftLyaout.setVisibility(View.VISIBLE);
            viewHolder.rightLayout.setVisibility(View.GONE);
            viewHolder.left_tv.setText(msg.getStr());
        }else if(msg.getType() == msg.TYPE_SENT){
            viewHolder.rightLayout.setVisibility(View.VISIBLE);
            viewHolder.leftLyaout.setVisibility(View.GONE);
            viewHolder.right_tv.setText(msg.getStr());
        }

3)效果图

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值