Android shape属性详解

转载请注明出处:http://blog.csdn.net/xiaoyuan511

一、概述

最近太忙了,几乎每天都在做项目。同时写两个项目的感觉真爽。
在我们开发中,会经常遇到shape这种属性,这种属性可以在没有美工的情况照样可以实现我们想要的效果。自动动手,丰衣足食。

二、效果图

这里写图片描述

二、属性

shape 描述
rectangle 矩形(默认)
oval 椭圆
line 直线
ring 环形

三、基本属性

基本属性 描述
Corners 圆角
Solid 内部填充颜色
Gradient 渐变色
Stroke 这是描边属性,可以定义描边的宽度,颜色,虚实线等
Size 定义控件大小
padding 内部边距
  • Corners

android:radius="dimension" 全部的圆角半径
android:topLeftRadius="dimension" 左上角的圆角半径
android:topRightRadius="dimension" 右上角的圆角半径
android:bottomLeftRadius="dimension" 左下角的圆角半径
android:bottomRightRadius="dimension" 右下角的圆角半径

  • Solid

android:color="color" 填充颜色

  • Gradient

android:type=["linear" | "radial" | "sweep"] 3中渐变类型,线性渐变(默认)/放射渐变/扫描式渐变
android:angle="integer" 渐变角度,必须为45的倍数,0为从左到右,90为从上到下 (只对线性渐变有效)
android:centerX="float" 渐变中心X的相当位置,范围为0~1
android:centerY="float" 渐变中心Y的相当位置,范围为0~1
android:startColor="color" 渐变开始点的颜色
android:centerColor="color" 渐变中间点的颜色,在开始与结束点之间
android:endColor="color" 渐变结束点的颜色
android:gradientRadius="float" 渐变的半径,只有当渐变类型为radial时才能使用
android:useLevel=["true" | "false"] /> 使用LevelListDrawable时就要设置为true。设为false时才有渐变效果

  • stroke

android:width="dimension" 描边的宽度
android:color="color" 描边的颜色
以下两个属性设置虚线
android:dashWidth="dimension" 虚线的宽度,值为0时是实线
android:dashGap="dimension" 虚线间隔

  • size

android:width="dimension" 控件宽度
android:height="dimension" 控件高度

  • padding

android:left="dimension" 左
android:top="dimension" 上
android:right="dimension" 右
android:bottom="dimension" 下

  • 特殊
    • ring(环形特有属性)

    android:innerRadius 尺寸,内环的半径。
    android:thickness 尺寸,环的厚度
    android:innerRadiusRatio 浮点型,以环的宽度比率来表示内环的半径,
    例如,如果android:innerRadiusRatio,表示内环半径等于环的宽度除以5,这个值是可以被覆盖的,默认为9.
    android:thicknessRatio 浮点型,以环的宽度比率来表示环的厚度,例如,如果android:thicknessRatio="2",
    那么环的厚度就等于环的宽度除以2。这个值是可以被android:thickness覆盖的,默认值是3.
    android:useLevel boolean值,如果当做是LevelListDrawable使用时值为true,否则为false.

四、问题

在xml里面已经设置BackGround已经为shape属性了。如果在代码在设置BackGround会把shape的属性覆盖掉,我们怎么能保证shape属性不变,又可以切换颜色那?当然定义多个shape.xml也可以实现的。

我可以通过 GradientDrawable这个类来实现我们的想要的效果

 findViewById(R.id.rectangle).setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            position++;
            GradientDrawable myGrad = (GradientDrawable) allRectangle.getBackground();
            switch (position % 6) {
                case 0:
                    myGrad.setColor(Color.argb(255, 249, 122, 3));
                    break;
                case 1:
                    myGrad.setColor(Color.argb(255, 240, 94, 63));
                    break;
                case 2:
                    myGrad.setColor(Color.argb(255, 96, 79, 171));
                    break;
                case 3:
                    myGrad.setColor(Color.argb(255, 36, 198, 89));
                    break;
                case 4:
                    myGrad.setColor(Color.argb(255, 94, 92, 93));
                    break;
                case 5:
                    myGrad.setColor(Color.argb(255, 65, 179, 205));
                    break;
            }
        }
    });

这样就可以实现我们想要的效果了。

五、总结

上面这些基本上是shape属性所有用法了,没有美工我照样可以做出好看的效果!

六、源码

点击下载

七、欢迎大家访问我的网站和我的公众号

极客导航---程序员自己的导航网站
程序员自己的导航网站

欢迎关注我的公众号

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,319评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,801评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,567评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,156评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,019评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,090评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,500评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,192评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,474评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,566评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,338评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,212评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,572评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,890评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,169评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,478评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,661评论 2 335

推荐阅读更多精彩内容