android模仿iphone气泡聊天 气泡大小自适应

本文介绍了如何在Android应用中模仿iPhone的气泡聊天样式,特别是实现气泡大小根据聊天内容自适应的功能。通过使用ListView、自定义Adapter和9宫格切割的气泡图片,结合RelativeLayout和ImageView布局,以及在代码中动态调整图片尺寸来达到自适应效果。
摘要由CSDN通过智能技术生成

这两天在做一个电子商城的商品评论功能,想到模仿微信或者iphone中的气泡聊天方式,气泡聊天是iphone内置的控件,不对开发者开放,android中更是没有提供类似的控件。于是先在百度google上搜了一下有没有类似的android实现方式,这样的帖子不多,也就局限于百度的第一页,以下面这个帖子为代表:http://blog.csdn.net/randyjiawenjie/article/details/6678738

大致的实现方法是使用“ListView+自定义adapter+气泡背景图片”,其他的帖子也是类似,而自己想实现的效果要求
气泡的大小能够“自适应聊天(短信)内容” ,固定的背景图片显然不能实现这个要求。再次寻寻觅觅,找到下面这个英文帖子:http://mobiforge.com/developing/story/sms-bubble-ui-iphone-apps ,大致讲解了在ios中模仿iphoe气泡的思路,其中关键是将气泡图片切割成9个栅格,如下图:


假设将图片的9个栅格区域按逆时针方向编号,中间 内容部分编号为9 ,使用ReleativeLayout+ImageView将9张图片依次逐行排列,注意图片切割时水平方向高度和垂直方向高度要一致,布局文件如下:

 

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:gravity="right"
     >

    <RelativeLayout
        android:id="@+id/bubble_lay_1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
     >
         <ImageView
            android:id="@
package com.android; import java.util.ArrayList; import java.util.List; import android.app.Activity; import android.os.Bundle; import android.widget.ListView; public class MainActivity extends Activity { private ListView talkView; private List<DetailEntity> list = null; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); listInit(); } public void listInit() { talkView = (ListView) findViewById(R.id.list); list = new ArrayList<DetailEntity>(); DetailEntity d1 = new DetailEntity("私念", "2010-11-11", "你好!", R.layout.list_say_me_item); list.add(d1); DetailEntity d2 = new DetailEntity("美女", "2010-11-11", "你好!", R.layout.list_say_he_item); list.add(d2); DetailEntity d3 = new DetailEntity("美女", "2010-11-11", "你是谁?", R.layout.list_say_he_item); list.add(d3); DetailEntity d4 = new DetailEntity("私念", "2010-11-11", "我是私念", R.layout.list_say_me_item); list.add(d4); DetailEntity d5 = new DetailEntity("美女", "2010-11-11", "鬼认识你", R.layout.list_say_he_item); list.add(d5); DetailEntity d6 = new DetailEntity("私念", "2010-11-11", "那就认识下", R.layout.list_say_me_item); list.add(d6); DetailEntity d7 = new DetailEntity("美女", "2010-11-11", "切", R.layout.list_say_he_item); list.add(d7); DetailEntity d8 = new DetailEntity("私念", "2010-11-11", "~~!", R.layout.list_say_me_item); list.add(d8); talkView.setAdapter(new DetailAdapter(MainActivity.this, list)); // 去掉分割线 talkView.setDivider(null); } }
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值