• 安卓实现微信聊天气泡


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

    布局文件:

    1. "1.0" encoding="utf-8"?>
    2. <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    3. xmlns:app="http://schemas.android.com/apk/res-auto"
    4. android:layout_width="match_parent"
    5. android:layout_height="wrap_content">
    6. <TextView
    7. android:id="@+id/history_time"
    8. app:layout_constraintTop_toTopOf="parent"
    9. app:layout_constraintLeft_toLeftOf="parent"
    10. app:layout_constraintRight_toRightOf="parent"
    11. android:text="05月25日 22:14"
    12. android:layout_width="wrap_content"
    13. android:layout_height="wrap_content"/>
    14. <com.xmkjsoft.xhgh.self.CircularImageView
    15. android:src="@color/main_color"
    16. android:id="@+id/head_img"
    17. app:layout_constraintTop_toBottomOf="@id/history_time"
    18. app:layout_constraintLeft_toLeftOf="parent"
    19. android:layout_width="40dp"
    20. android:layout_height="40dp"/>
    21. <TextView
    22. app:layout_constraintTop_toTopOf="@id/head_img"
    23. app:layout_constraintLeft_toRightOf="@id/head_img"
    24. app:layout_constraintRight_toRightOf="parent"
    25. android:background="@drawable/left_chat_bubble"
    26. android:layout_marginRight="20dp"
    27. android:id="@+id/message_text_left"
    28. android:layout_width="0dp"
    29. android:paddingLeft="20dp"
    30. android:paddingTop="5dp"
    31. android:paddingBottom="5dp"
    32. android:layout_height="wrap_content"
    33. android:text="这是一个左这是一个左这是一个左这是一个这是一个左这是一个左这是一个一个这是一个左这是一个左"
    34. android:textColor="@color/white"
    35. android:textSize="16sp" />
    36. <com.xmkjsoft.xhgh.self.CircularImageView
    37. android:layout_marginTop="20dp"
    38. android:src="@color/main_color"
    39. android:id="@+id/head_img_right"
    40. app:layout_constraintTop_toBottomOf="@id/message_text_left"
    41. app:layout_constraintRight_toRightOf="parent"
    42. android:layout_width="40dp"
    43. android:layout_height="40dp"/>
    44. <TextView
    45. app:layout_constraintTop_toTopOf="@id/head_img_right"
    46. app:layout_constraintRight_toLeftOf="@id/head_img_right"
    47. app:layout_constraintLeft_toLeftOf="parent"
    48. android:background="@drawable/right_chat_bubble"
    49. android:layout_marginLeft="20dp"
    50. android:id="@+id/message_text_right"
    51. android:layout_width="0dp"
    52. android:paddingRight="10dp"
    53. android:paddingLeft="10dp"
    54. android:paddingTop="5dp"
    55. android:paddingBottom="5dp"
    56. android:layout_height="wrap_content"
    57. android:text="这是一个左这是一个左这是一个左这是一个这是一个左这是一个左这是一个一个这是一个左这是一个左"
    58. android:textColor="@color/white"
    59. android:textSize="16sp" />
    60. androidx.constraintlayout.widget.ConstraintLayout>

    左边气泡 drawable 文件:

    1. "1.0" encoding="utf-8"?>
    2. <layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    3. <item>
    4. <layer-list>
    5. <item android:left="8dp">
    6. <shape>
    7. <corners android:radius="4dp" />
    8. <solid android:color="@color/main_color" />
    9. shape>
    10. item>
    11. layer-list>
    12. item>
    13. <item
    14. android:gravity="left|top"
    15. android:top="10dp">
    16. <rotate
    17. android:fromDegrees="45"
    18. android:pivotX="50%"
    19. android:pivotY="135%">
    20. <shape android:shape="rectangle">
    21. <size
    22. android:width="8dp"
    23. android:height="8dp" />
    24. <solid android:color="@color/main_color" />
    25. shape>
    26. rotate>
    27. item>
    28. layer-list>

    右边气泡 drawable 文件:

    1. "1.0" encoding="utf-8"?>
    2. <layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    3. <item>
    4. <layer-list>
    5. <item android:right="8dp">
    6. <shape>
    7. <corners android:radius="4dp" />
    8. <solid android:color="#4CAF50" />
    9. shape>
    10. item>
    11. layer-list>
    12. item>
    13. <item
    14. android:gravity="right|top"
    15. android:top="0dp">
    16. <rotate
    17. android:fromDegrees="45"
    18. android:pivotX="-135%"
    19. android:pivotY="50%">
    20. <shape android:shape="rectangle">
    21. <size
    22. android:width="8dp"
    23. android:height="8dp" />
    24. <solid android:color="#4CAF50" />
    25. shape>
    26. rotate>
    27. item>
    28. layer-list>

  • 相关阅读:
    GRADIENT BASED THRESHOLD FREE COLOR FILTER ARRAY INTERPOLATION
    带有@Transactional注解的方法事务失效问题以及解决方法
    设计模式-单例模式
    2.Java怎么正确停止线程呢?
    Java服务中心面试题目,微服务治理面试
    通过业务加强对访问修饰符 public,private,protected,以及不写(默认)时的区别的应用与理解【Java基础题】
    [附源码]SSM计算机毕业设计星期八酒店管理系统JAVA
    【MySQL 数据库】MySQL 主从复制和 Sharding-JDBC 实现读写分离
    【Java基础】程序流程控制
    《计算机操作系统-第一章》之操作系统概述
  • 原文地址:https://blog.csdn.net/WenZhengshi/article/details/140112660