安卓实现微信聊天气泡

一搜没一个能用的,我来:

布局文件:

XML 复制代码
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <TextView
        android:id="@+id/history_time"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        android:text="05月25日 22:14"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>

    <com.xmkjsoft.xhgh.self.CircularImageView
        android:src="@color/main_color"
        android:id="@+id/head_img"
        app:layout_constraintTop_toBottomOf="@id/history_time"
        app:layout_constraintLeft_toLeftOf="parent"
        android:layout_width="40dp"
        android:layout_height="40dp"/>


        <!-- 聊天气泡中的内容,如文本、图片等 -->
        <TextView
            app:layout_constraintTop_toTopOf="@id/head_img"
            app:layout_constraintLeft_toRightOf="@id/head_img"
            app:layout_constraintRight_toRightOf="parent"
            android:background="@drawable/left_chat_bubble"
            android:layout_marginRight="20dp"
            android:id="@+id/message_text_left"
            android:layout_width="0dp"
            android:paddingLeft="20dp"
            android:paddingTop="5dp"
            android:paddingBottom="5dp"
            android:layout_height="wrap_content"
            android:text="这是一个左这是一个左这是一个左这是一个这是一个左这是一个左这是一个一个这是一个左这是一个左"
            android:textColor="@color/white"
            android:textSize="16sp" />




    <!--右消息-->

    <com.xmkjsoft.xhgh.self.CircularImageView
        android:layout_marginTop="20dp"
        android:src="@color/main_color"
        android:id="@+id/head_img_right"
        app:layout_constraintTop_toBottomOf="@id/message_text_left"
        app:layout_constraintRight_toRightOf="parent"
        android:layout_width="40dp"
        android:layout_height="40dp"/>


    <!-- 聊天气泡中的内容,如文本、图片等 -->
    <TextView
        app:layout_constraintTop_toTopOf="@id/head_img_right"
        app:layout_constraintRight_toLeftOf="@id/head_img_right"
        app:layout_constraintLeft_toLeftOf="parent"
        android:background="@drawable/right_chat_bubble"
        android:layout_marginLeft="20dp"
        android:id="@+id/message_text_right"
        android:layout_width="0dp"
        android:paddingRight="10dp"
        android:paddingLeft="10dp"
        android:paddingTop="5dp"
        android:paddingBottom="5dp"
        android:layout_height="wrap_content"
        android:text="这是一个左这是一个左这是一个左这是一个这是一个左这是一个左这是一个一个这是一个左这是一个左"
        android:textColor="@color/white"
        android:textSize="16sp" />


<!--    <TextView-->
<!--        android:background="@drawable/left_chat_bubble"-->
<!--        android:layout_marginLeft="20dp"-->
<!--        android:text="你好6666666666"-->
<!--        -->
<!--        android:layout_width="wrap_content"-->
<!--        android:layout_height="wrap_content"/>-->





</androidx.constraintlayout.widget.ConstraintLayout>

左边气泡 drawable 文件:

XML 复制代码
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <layer-list>
            <item android:left="8dp">
                <shape>
                    <corners android:radius="4dp" />
                    <solid android:color="@color/main_color" />
                </shape>
            </item>
        </layer-list>
    </item>
    <item
        android:gravity="left|top"
        android:top="10dp">
        <rotate
            android:fromDegrees="45"
            android:pivotX="50%"
            android:pivotY="135%">
            <shape android:shape="rectangle">
                <size
                    android:width="8dp"
                    android:height="8dp" />
                <solid android:color="@color/main_color" />
            </shape>
        </rotate>
    </item>
</layer-list>

右边气泡 drawable 文件:

XML 复制代码
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <layer-list>
            <item android:right="8dp">
                <shape>
                    <corners android:radius="4dp" />
                    <solid android:color="#4CAF50" />
                </shape>
            </item>
        </layer-list>
    </item>
    <item
        android:gravity="right|top"
        android:top="0dp">
        <rotate
            android:fromDegrees="45"
            android:pivotX="-135%"
            android:pivotY="50%">
            <shape android:shape="rectangle">
                <size
                    android:width="8dp"
                    android:height="8dp" />
                <solid android:color="#4CAF50" />
            </shape>
        </rotate>
    </item>
</layer-list>
相关推荐
Flynt8 分钟前
Android 17内存限制:我是怎么发现App被系统悄悄干掉的
android·性能优化
消失的旧时光-19431 小时前
Kotlin 协程设计思想(七):为什么 Kotlin 要设计 SupervisorJob 和 supervisorScope?
android·开发语言·kotlin
故渊at1 小时前
第一板块:Android 系统基石与运行原理 | 第五篇:Context 上下文与资源配置体系
android·人工智能·opencv·context·上下文·资源配置体系
故渊at1 小时前
第一板块:Android 系统基石与运行原理 | 第四篇:进程孵化(Zygote)与 Low Memory Killer 机制
android·虚拟机·zygote·系统启动·low memory·进程孵化
JohnnyDeng941 小时前
【Android】RecyclerView性能优化与缓存机制:从卡顿到丝滑的完整指南
android·性能优化·kotlin·mvvm
zfoo-framework1 小时前
kotlin中体会到一些比较好用的点
android·开发语言·kotlin
●VON4 小时前
AtomGit Flutter鸿蒙客户端:文件树与代码浏览
android·服务器·安全·flutter·harmonyos·鸿蒙
故渊at10 小时前
系列三:组件化与模块化进阶 | 第11篇 组件化项目规范与问题根治:依赖、资源、Manifest 与混淆的全链路管控
android·架构·mvvm·模块化·组件化
故渊at10 小时前
系列二:MVVM 深度实战与项目重构 | 第7篇 LiveData & StateFlow 状态管理实战:从“粘包弹”到“丝滑流式”
android·重构
是阿建吖!11 小时前
【Linux】信号
android·linux·c语言·c++