Android中Shape的用法详解

 更新时间:2017年07月09日 15:18:42   作者:Code_legend  
工作中总是会用到shape去画一些背景,每次都要去百度,但是很多都写的很模糊或者属性不是很全,所以今天自己总结了一下,给大家分享一下,自己以后也可以看

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控件Tween动画(补间动画)实现方法示例

    Android控件Tween动画(补间动画)实现方法示例

    这篇文章主要介绍了Android控件Tween动画(补间动画)实现方法,结合具体实例形式分析了Android补间动画的原理、功能实现与布局相关操作技巧,需要的朋友可以参考下
    2017-08-08
  • Kotlin中单例模式和Java的对比浅析

    Kotlin中单例模式和Java的对比浅析

    目前java中的单例模式有多种写法,kotlin中的写法更多一点,下面这篇文章主要给大家介绍了关于Kotlin中单例模式和Java对比的相关资料,会总结全部的到单例模式写法,需要的朋友可以参考下
    2018-07-07
  • Android中Protobuf的基本使用介绍

    Android中Protobuf的基本使用介绍

    大家好,本篇文章主要讲的是Android中Protobuf的基本使用介绍,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下
    2022-01-01
  • Android利用悬浮按钮实现翻页效果

    Android利用悬浮按钮实现翻页效果

    这篇文章主要介绍了Android利用悬浮按钮实现翻页效果的相关资料,需要的朋友可以参考下
    2015-12-12
  • Android视频播放器屏幕左侧边随手指上下滑动亮度调节功能的原理实现

    Android视频播放器屏幕左侧边随手指上下滑动亮度调节功能的原理实现

    这篇文章主要介绍了Android视频播放器屏幕左侧边随手指上下滑动亮度调节功能的原理实现,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2017-02-02
  • Android TextView对齐的两种方法

    Android TextView对齐的两种方法

    这篇文章主要介绍了Android TextView对齐的两种方法的相关资料,在开发Android APP 的时候经常会用到TextView 输入用户信息或者其他信息,总是不能对齐,这里提供两种方法,需要的朋友可以参考下
    2017-07-07
  • 详解Android中接口回调、方法回调

    详解Android中接口回调、方法回调

    在Android开发中我们很多地方都用到了方法的回调,回调就是把方法的定义和功能导入实现分开的一种机制,目的是为了解耦他的本质是基于观察者设计模式,即观察者设计模式的的简化版。本文主要对Android中接口回调、方法回调进行详细介绍,下面跟着小编一起来看下吧
    2017-01-01
  • Android EditText密码的隐藏和显示功能

    Android EditText密码的隐藏和显示功能

    这篇文章主要介绍了Android EditText密码的隐藏和显示功能的相关资料,主要是利用EditText和CheckBox 来实现该功能,需要的朋友可以参考下
    2017-07-07
  • Android开发自学笔记(一):Hello,world!

    Android开发自学笔记(一):Hello,world!

    这篇文章主要介绍了Android开发自学笔记(一):Hello,world!本文讲解了创建HelloWorld工程、编写代码、启动模拟器等步骤,需要的朋友可以参考下
    2015-04-04
  • Android原生ViewPager控件实现卡片翻动效果

    Android原生ViewPager控件实现卡片翻动效果

    这篇文章主要为大家详细介绍了Android原生ViewPager控件实现卡片翻动效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-07-07

最新评论