Android中Shape的用法详解

发布时间 - 2026-01-11 02:15:11    点击率:

ShapeDrawable是一种很常见的Drawable,可以理解为通过颜色来构造的图形,它既可以是纯色的图形,也可以是具有渐变效果的图形,ShapeDrawabled语法稍显复杂,如下所示:

<shape
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:shape=["rectangle" | "oval" | "line" | "ring"] >
  <corners
    android:radius="integer"
    android:topLeftRadius="integer"
    android:topRightRadius="integer"
    android:bottomLeftRadius="integer"
    android:bottomRightRadius="integer" />
  <gradient
    android:angle="integer"
    android:centerX="integer"
    android:centerY="integer"
    android:centerColor="integer"
    android:endColor="color"
    android:gradientRadius="integer"
    android:startColor="color"
    android:type=["linear" | "radial" | "sweep"]
    android:useLevel=["true" | "false"] />
  <padding
    android:left="integer"
    android:top="integer"
    android:right="integer"
    android:bottom="integer" />
  <size
    android:width="integer"
    android:height="integer" />
  <solid
    android:color="color" />
  <stroke
    android:width="integer"
    android:color="color"
    android:dashWidth="integer"
    android:dashGap="integer" />
</shape>

•Android: shape

•有4个选项,rectangle(矩形)oval(椭圆)line(横线)ring(圆环),默认为rectangle,需要注意line和ring需要通过标签来指定线的宽度和颜色等信息,否则无法达到预期效果

•首先来说一下最常用的rectangle(矩形),一般都是在按钮或者字体上面设置一个background的Drawable。一般设置效果为正方形或者两边有弧度的形状。

◦第一种情况就是设置矩形背景

<shape xmlns:android="http://schemas.android.com/apk/res/android" 
 android:shape="rectangle" 
 > 
 <size 
 android:width="200dp" 
 android:height="20dp" 
 /> 
 <solid android:color="#d22121"/> 
 </shape> 

通过设置size设置矩形的宽度和高度,*这里需要说明一下,咱们在这里设置size的宽高,在最终显示尺寸是没有用的,也就是说当你在一个控件中设置background的时候,这个shape是会被拉伸或者缩小为view的大小。*solid属性设置矩形里面的背景颜色。

将背景色设置为渐变

<shape xmlns:android="http://schemas.android.com/apk/res/android"
 android:shape="rectangle" 
 > 
 <size 
 android:width="200dp" 
 android:height="20dp" 
 /> 
 <gradient 
 android:startColor="#fff" 
 android:centerColor="#f1a9a9" 
 android:endColor="#ec5b5b" 
 android:type="linear" 
 /> 
 </shape>

效果图:

这里默认的type就是linear,里面还有其他两个属性可以选择分别是radial(径向渐变)和sweep(扫描渐变)
一般最常用的也就是线性渐变还有其他几个属性没有用但是很好理解

android:angle——渐变的角度,默认为0,其值必须是45的倍数,0表示从左到右,90表示从下到上。

android:centerX——渐变的中心点横坐标

android:centerY——渐变的中心点纵坐标

android:gradientRadiu——渐变半径,仅当android:type=”radial”时有效

•接下来说一下画圆角的矩形背景

◦其实只用设置一下corners的属性就是了。

◦具体详细的说明

◦android:radius—— 给四个角设置相同的角度,优先级较低,会被其他四个属性覆盖

android:bottomLeftRadius——设定左下角的角度

android:bottomRightRadius——设定右下角的角度

android:TopLeftRadius——设定左上角的角度

android:TopRightRadius——设定右上角的角度

接下来就是如何画一个空心的背景

<shape xmlns:android="http://schemas.android.com/apk/res/android" 
 android:shape="rectangle" 
 > 
 <size 
 android:width="200dp" 
 android:height="20dp" 
 /> 
 <stroke 
 android:width="1px" 
 android:color="#ffff1c77" 
 /> 
 <corners android:radius="50dp"/> 
 </shape> 

效果图如下

 

 当然里面也可以自由发挥设置渐变色,但是一般里面都纯色。

◦这里里面也可以设置为虚线

<shape xmlns:android="http://schemas.android.com/apk/res/android" 
 android:shape="rectangle" 
 > 
 <size 
 android:width="200dp" 
 android:height="20dp" 
 /> 
 <stroke 
 android:dashWidth="4dp" 
 android:dashGap="2dp" 
 android:width="1px" 
 android:color="#ffff1c77" 
 /> 
 <corners android:radius="50dp"/> 
 </shape>

好了,其实里面的东西很简单,总结一下就好了。希望大家用的开心。


# android  # shape  # 用法  # Android shape与selector标签使用详解  # Android中shape的自定义艺术效果使用  # Android Shape属性创建环形进度条  # android shape实现阴影或模糊边效果  # 详解Android用Shape制作单边框图的两种思路和坑  # Android使用shape绘制阴影图层阴影效果示例  # Android shape 绘制图形的实例详解  # Android shape标签使用方法介绍  # 中心点  # 设置为  # 最常用  # 默认为  # 几个  # 是在  # 在这里  # 很好  # 是一种  # 好了  # 当你  # 很简单  # 较低  # 所示  # 在一  # 可以选择  # 需要注意  # 第一种  # 它既  # 画一 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: linux写shell需要注意的问题(必看)  CSS3怎么给轮播图加过渡动画_transition加transform实现【技巧】  Laravel如何集成第三方登录_Laravel Socialite实现微信QQ微博登录  Laravel如何处理表单验证?(Requests代码示例)  详解Nginx + Tomcat 反向代理 如何在高效的在一台服务器部署多个站点  Laravel如何使用Facades(门面)及其工作原理_Laravel门面模式与底层机制  如何撰写建站申请书?关键要点有哪些?  在线ppt制作网站有哪些软件,如何把网页的内容做成ppt?  Laravel与Inertia.js怎么结合_使用Laravel和Inertia构建现代单页应用  Laravel Debugbar怎么安装_Laravel调试工具栏配置指南  Linux系统命令中screen命令详解  东莞专业网站制作公司有哪些,东莞招聘网站哪个好?  Laravel Seeder填充数据教程_Laravel模型工厂Factory使用  Windows驱动无法加载错误解决方法_驱动签名验证失败处理步骤  教你用AI将一段旋律扩展成一首完整的曲子  Android GridView 滑动条设置一直显示状态(推荐)  php在windows下怎么调试_phpwindows环境调试操作说明【操作】  绝密ChatGPT指令:手把手教你生成HR无法拒绝的求职信  如何登录建站主机?访问步骤全解析  制作网站软件推荐手机版,如何制作属于自己的手机网站app应用?  动图在线制作网站有哪些,滑动动图图集怎么做?  详解vue.js组件化开发实践  Laravel如何使用Scope本地作用域_Laravel模型常用查询逻辑封装技巧【手册】  Google浏览器为什么这么卡 Google浏览器提速优化设置步骤【方法】  Python文件流缓冲机制_IO性能解析【教程】  Laravel怎么创建控制器Controller_Laravel路由绑定与控制器逻辑编写【指南】  如何在VPS电脑上快速搭建网站?  node.js报错:Cannot find module &#39;ejs&#39;的解决办法  如何在IIS中配置站点IP、端口及主机头?  Edge浏览器如何截图和滚动截图_微软Edge网页捕获功能使用教程【技巧】  Laravel怎么实现模型属性转换Casting_Laravel自动将JSON字段转为数组【技巧】  JavaScript中如何操作剪贴板_ClipboardAPI怎么用  jQuery 常见小例汇总  Laravel队列任务超时怎么办_Laravel Queue Timeout设置详解  Laravel怎么调用外部API_Laravel Http Client客户端使用  Laravel Eloquent:优雅地将关联模型字段扁平化到主模型中  原生JS实现图片轮播切换效果  悟空识字如何进行跟读录音_悟空识字开启麦克风权限与录音  制作电商网页,电商供应链怎么做?  Bootstrap整体框架之CSS12栅格系统  如何用PHP工具快速搭建高效网站?  广州网站制作公司哪家好一点,广州欧莱雅百库网络科技有限公司官网?  Win11怎么恢复误删照片_Win11数据恢复工具使用【推荐】  Laravel怎么进行数据库事务处理_Laravel DB Facade事务操作确保数据一致性  Laravel如何集成Inertia.js与Vue/React?(安装配置)  ChatGPT回答中断怎么办 引导AI继续输出完整内容的方法  猎豹浏览器开发者工具怎么打开 猎豹浏览器F12调试工具使用【前端必备】  如何快速打造个性化非模板自助建站?  Laravel怎么清理缓存_Laravel optimize clear命令详解  Laravel如何使用Service Provider注册服务_Laravel服务提供者配置与加载