• Google官方控件ShapeableImageView使用


    上面都是用ShapeableImageView写出来的效果

    直接上代码:

    布局文件:

    1. "1.0" encoding="utf-8"?>
    2. "http://schemas.android.com/apk/res/android"
    3. xmlns:app="http://schemas.android.com/apk/res-auto"
    4. xmlns:tools="http://schemas.android.com/tools"
    5. android:layout_width="match_parent"
    6. android:layout_height="match_parent"
    7. tools:context=".MainActivity">
    8. android:id="@+id/image0"
    9. android:layout_width="80dp"
    10. android:layout_height="80dp"
    11. android:layout_marginTop="20dp"
    12. android:src="@mipmap/image"
    13. app:layout_constraintEnd_toStartOf="@id/image1"
    14. app:layout_constraintHorizontal_chainStyle="spread"
    15. app:layout_constraintStart_toStartOf="parent"
    16. app:layout_constraintTop_toTopOf="parent" />
    17. android:id="@+id/image1"
    18. android:layout_width="80dp"
    19. android:layout_height="80dp"
    20. android:layout_marginTop="20dp"
    21. android:src="@mipmap/image"
    22. app:layout_constraintEnd_toStartOf="@id/image2"
    23. app:layout_constraintHorizontal_chainStyle="spread"
    24. app:layout_constraintStart_toEndOf="@id/image0"
    25. app:layout_constraintTop_toTopOf="parent"
    26. app:shapeAppearance="@style/RoundedStyle1" />
    27. android:id="@+id/image2"
    28. android:layout_width="80dp"
    29. android:layout_height="80dp"
    30. android:layout_marginTop="20dp"
    31. android:src="@mipmap/image"
    32. app:layout_constraintEnd_toEndOf="parent"
    33. app:layout_constraintHorizontal_chainStyle="spread"
    34. app:layout_constraintStart_toEndOf="@id/image1"
    35. app:layout_constraintTop_toTopOf="parent"
    36. app:shapeAppearance="@style/RoundedStyle2" />
    37. android:id="@+id/image3"
    38. android:layout_width="80dp"
    39. android:layout_height="80dp"
    40. android:layout_marginTop="20dp"
    41. android:padding="2dp"
    42. android:src="@mipmap/image"
    43. app:layout_constraintEnd_toStartOf="@id/image4"
    44. app:layout_constraintStart_toStartOf="parent"
    45. app:layout_constraintTop_toBottomOf="@id/image0"
    46. app:layout_constraintVertical_chainStyle="spread"
    47. app:shapeAppearance="@style/RoundedStyle2"
    48. app:strokeColor="#00ff00"
    49. app:strokeWidth="4dp" />
    50. android:id="@+id/image4"
    51. android:layout_width="80dp"
    52. android:layout_height="80dp"
    53. android:layout_marginTop="20dp"
    54. android:padding="2dp"
    55. android:src="@mipmap/image"
    56. app:layout_constraintEnd_toEndOf="@id/image5"
    57. app:layout_constraintStart_toEndOf="@id/image3"
    58. app:layout_constraintTop_toBottomOf="@id/image1"
    59. app:layout_constraintVertical_chainStyle="spread"
    60. app:shapeAppearance="@style/RoundedStyle3"
    61. app:strokeColor="#00ff00"
    62. app:strokeWidth="4dp" />
    63. android:id="@+id/image5"
    64. android:layout_width="80dp"
    65. android:layout_height="80dp"
    66. android:layout_marginTop="20dp"
    67. android:padding="2dp"
    68. android:src="@mipmap/image"
    69. app:layout_constraintEnd_toEndOf="parent"
    70. app:layout_constraintStart_toEndOf="@id/image4"
    71. app:layout_constraintTop_toBottomOf="@id/image1"
    72. app:layout_constraintVertical_chainStyle="spread"
    73. app:shapeAppearance="@style/RoundedStyle4"
    74. app:strokeColor="#00ff00"
    75. app:strokeWidth="4dp" />
    76. android:id="@+id/image6"
    77. android:layout_width="80dp"
    78. android:layout_height="80dp"
    79. android:layout_marginTop="20dp"
    80. android:padding="2dp"
    81. android:src="@mipmap/image"
    82. app:layout_constraintEnd_toStartOf="@id/image7"
    83. app:layout_constraintStart_toStartOf="parent"
    84. app:layout_constraintTop_toBottomOf="@id/image3"
    85. app:layout_constraintVertical_chainStyle="spread"
    86. app:shapeAppearance="@style/RoundedStyle5"
    87. app:strokeColor="#00ff00"
    88. app:strokeWidth="4dp" />
    89. android:id="@+id/image7"
    90. android:layout_width="80dp"
    91. android:layout_height="80dp"
    92. android:layout_marginTop="20dp"
    93. android:padding="2dp"
    94. android:src="@mipmap/image"
    95. app:layout_constraintEnd_toEndOf="@id/image8"
    96. app:layout_constraintStart_toEndOf="@id/image6"
    97. app:layout_constraintTop_toBottomOf="@id/image3"
    98. app:layout_constraintVertical_chainStyle="spread"
    99. app:shapeAppearance="@style/RoundedStyle6" />
    100. android:id="@+id/image8"
    101. android:layout_width="180dp"
    102. android:layout_height="80dp"
    103. android:layout_marginTop="20dp"
    104. android:padding="2dp"
    105. android:scaleType="fitXY"
    106. android:src="@mipmap/image"
    107. app:layout_constraintEnd_toEndOf="parent"
    108. app:layout_constraintStart_toEndOf="@id/image7"
    109. app:layout_constraintTop_toBottomOf="@id/image3"
    110. app:layout_constraintVertical_chainStyle="spread"
    111. app:shapeAppearance="@style/RoundedStyle4"
    112. app:strokeColor="#00ff00"
    113. app:strokeWidth="4dp" />
    114. android:id="@+id/image9"
    115. android:layout_width="180dp"
    116. android:layout_height="50dp"
    117. android:layout_marginTop="20dp"
    118. android:padding="2dp"
    119. android:scaleType="fitXY"
    120. android:src="@mipmap/image"
    121. app:layout_constraintEnd_toStartOf="@id/image10"
    122. app:layout_constraintStart_toStartOf="parent"
    123. app:layout_constraintTop_toBottomOf="@id/image6"
    124. app:layout_constraintVertical_chainStyle="spread"
    125. app:shapeAppearance="@style/RoundedStyle5"
    126. app:strokeColor="#00ff00"
    127. app:strokeWidth="4dp" />
    128. android:id="@+id/image10"
    129. android:layout_width="80dp"
    130. android:layout_height="80dp"
    131. android:layout_marginTop="20dp"
    132. android:padding="2dp"
    133. android:src="@mipmap/image"
    134. app:layout_constraintEnd_toStartOf="@id/image11"
    135. app:layout_constraintStart_toEndOf="@id/image9"
    136. app:layout_constraintTop_toBottomOf="@id/image6"
    137. app:layout_constraintVertical_chainStyle="spread"
    138. app:shapeAppearance="@style/RoundedStyle7" />
    139. android:id="@+id/image11"
    140. android:layout_width="80dp"
    141. android:layout_height="80dp"
    142. android:layout_marginTop="20dp"
    143. android:padding="2dp"
    144. android:scaleType="fitXY"
    145. android:src="@mipmap/image"
    146. app:layout_constraintEnd_toEndOf="parent"
    147. app:layout_constraintStart_toEndOf="@id/image10"
    148. app:layout_constraintTop_toBottomOf="@id/image6"
    149. app:layout_constraintVertical_chainStyle="spread"
    150. app:shapeAppearance="@style/RoundedStyle8" />
    151. android:id="@+id/image12"
    152. android:layout_width="80dp"
    153. android:layout_height="80dp"
    154. android:layout_marginTop="20dp"
    155. android:scaleType="fitXY"
    156. android:src="@mipmap/image"
    157. app:layout_constraintEnd_toStartOf="@id/image13"
    158. app:layout_constraintStart_toStartOf="parent"
    159. app:layout_constraintTop_toBottomOf="@id/image10"
    160. app:layout_constraintVertical_chainStyle="spread"
    161. app:shapeAppearance="@style/RoundedStyle9" />
    162. android:id="@+id/image13"
    163. android:layout_width="80dp"
    164. android:layout_height="80dp"
    165. android:layout_marginTop="20dp"
    166. android:src="@mipmap/image"
    167. app:layout_constraintEnd_toStartOf="@id/image14"
    168. app:layout_constraintStart_toEndOf="@id/image12"
    169. app:layout_constraintTop_toBottomOf="@id/image10"
    170. app:layout_constraintVertical_chainStyle="spread" />
    171. android:id="@+id/image14"
    172. android:layout_width="80dp"
    173. android:layout_height="80dp"
    174. android:layout_marginTop="20dp"
    175. android:scaleType="fitXY"
    176. android:src="@mipmap/image"
    177. app:layout_constraintEnd_toEndOf="parent"
    178. app:layout_constraintStart_toEndOf="@id/image13"
    179. app:layout_constraintTop_toBottomOf="@id/image10"
    180. app:layout_constraintVertical_chainStyle="spread" />
    181. android:id="@+id/tv1"
    182. android:layout_width="wrap_content"
    183. android:layout_height="80dp"
    184. android:layout_marginTop="20dp"
    185. android:gravity="center"
    186. android:padding="10dp"
    187. android:textColor="@color/white"
    188. android:text="你好,我是自定义的气泡效果"
    189. app:layout_constraintEnd_toEndOf="parent"
    190. app:layout_constraintStart_toStartOf="parent"
    191. app:layout_constraintTop_toBottomOf="@id/image14" />

    style文件

    1. <resources xmlns:android="http://schemas.android.com/apk/res/android">
    2. <style name="RoundedStyle1">
    3. <item name="cornerFamily">roundeditem>
    4. <item name="cornerSize">15dpitem>
    5. style>
    6. <style name="RoundedStyle2">
    7. <item name="cornerFamily">roundeditem>
    8. <item name="cornerSize">50%item>
    9. style>
    10. <style name="RoundedStyle3">
    11. <item name="cornerFamily">cutitem>
    12. <item name="cornerSize">15dpitem>
    13. style>
    14. <style name="RoundedStyle4">
    15. <item name="cornerFamily">cutitem>
    16. <item name="cornerSize">50%item>
    17. style>
    18. <style name="RoundedStyle5">
    19. <item name="cornerFamilyTopLeft">roundeditem>
    20. <item name="cornerSizeTopLeft">50%item>
    21. <item name="cornerFamilyBottomLeft">roundeditem>
    22. <item name="cornerSizeBottomLeft">50%item>
    23. <item name="cornerFamilyTopRight">cutitem>
    24. <item name="cornerSizeTopRight">50%item>
    25. <item name="cornerFamilyBottomRight">cutitem>
    26. <item name="cornerSizeBottomRight">50%item>
    27. style>
    28. <style name="RoundedStyle6">
    29. <item name="cornerFamily">roundeditem>
    30. <item name="cornerSizeTopLeft">50%item>
    31. <item name="cornerSizeBottomRight">50%item>
    32. style>
    33. <style name="RoundedStyle7">
    34. <item name="cornerFamily">roundeditem>
    35. <item name="cornerFamilyTopLeft">roundeditem>
    36. <item name="cornerSizeTopLeft">100%item>
    37. style>
    38. <style name="RoundedStyle8">
    39. <item name="cornerFamilyTopLeft">roundeditem>
    40. <item name="cornerFamilyTopRight">roundeditem>
    41. <item name="cornerSizeTopLeft">70%item>
    42. <item name="cornerSizeTopRight">70%item>
    43. style>
    44. <style name="RoundedStyle9">
    45. <item name="cornerFamilyBottomLeft">roundeditem>
    46. <item name="cornerFamilyBottomRight">roundeditem>
    47. <item name="cornerFamilyTopLeft">roundeditem>
    48. <item name="cornerFamilyTopRight">roundeditem>
    49. <item name="cornerSizeBottomLeft">25dpitem>
    50. <item name="cornerSizeBottomRight">25dpitem>
    51. <item name="cornerSizeTopLeft">70%item>
    52. <item name="cornerSizeTopRight">70%item>
    53. style>
    54. resources>

     

  • 相关阅读:
    有奖问卷 | 2022年中国云原生安全调查,邀您来答!
    SylixOS BSP开发(八)
    什么是 AirServer?Mac专用投屏工具AirServer 7 .27 for Mac中文破解版百度网盘下载
    美团技术官用时一个月精心整理这本Spring(第4版)实战学习文档
    【ECMAScript6】模块化
    面向对象——继承(c++)
    GNN PyG~torch_geometric 学习理解
    基于安卓android微信小程序的快递取件及上门服务系统
    自学网络安全———(黑客技术)
    进口猫罐头在排行榜中是否靠前?排行榜中靠前的猫罐头测评
  • 原文地址:https://blog.csdn.net/nnmmbb/article/details/126020577