Android 中的GradientDrawwable

GradientDrawwable

GradientDrawable在Android中便是shape标签的代码实现,利用GradientDrawable也可以创建出各种形状。

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
    <solid android:color="@color/colorAccent"/>
</shape>

等价于:

GradientDrawable background = (GradientDrawable) view.getBackground();//获取对应的shape实例
background.setColor(Color.GREEN);//设置为绿色
background.setCornerRadius(20);//设置圆角
view.setBackgroundDrawable(background);

设置形状

如果想要设置形状的话可以通过setShape(int shape) 方法来进行设置,这里一共可以设置四种形状:

  • GradientDrawable.RECTANGLE:矩形
  • GradientDrawable.OVAL:椭圆形
  • GradientDrawable.LINE:一条线
  • GradientDrawable.RING:环形
GradientDrawable background = new GradientDrawable();
background.setShape(GradientDrawable.OVAL);
background.setStroke(10,Color.RED);//设置宽度为10px的红色描边
background.setGradientType(GradientDrawable.LINEAR_GRADIENT);//设置线性渐变,除此之外还有:GradientDrawable.SWEEP_GRADIENT(扫描式渐变),GradientDrawable.RADIAL_GRADIENT(圆形渐变)
background.setColors(new int[]{Color.RED,Color.BLUE});//增加渐变效果需要使用setColors方法来设置颜色(中间可以增加多个颜色值)
view.setBackgroundDrawable(background);

Shape 所有属性

<?xml version="1.0" encoding="utf-8"?>
<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>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值