android中通过自定义xml实现你需要的shape效果 xml属性配置

时间:2022-08-25 19:13:54

在Android开发过程中,经常需要改变控件的默认样式, 那么通常会使用多个图片来解决。不过这种方式可能需要多个图片,比如一个按钮,需要点击时的式样图片,默认的式样图片,然后在写一个selector的xml文件放在drawable文件夹中,但是 这样drawable中的内容就非常多,就容易使apk变大。

那么除了使用drawable这样的图片外,还有其他方法吗?

就谈一下自定义图形shape,Android上支持以下几种属性gradient、stroke、corners、padding、solid等。

[html]  view plain copy print ?
 
  1. 1.<shape>
  2. 2.    <!-- 实心 -->
  3. 3.    <solid android:color="#ff9d77"/>
  4. 4.    <!-- 渐变 -->
  5. 5.    <gradient
  6. 6.        android:startColor="#ff8c00"
  7. 7.        android:endColor="#FFFFFF"
  8. 8.        android:angle="270" />
  9. 9.    <!-- 描边 -->
  10. 10.    <stroke
  11. 11.        android:width="2dp"
  12. 12.        android:color="#dcdcdc" />
  13. 13.    <!-- 圆角 -->
  14. 14.    <corners
  15. 15.        android:radius="2dp" />
  16. 16.    <padding
  17. 17.        android:left="10dp"
  18. 18.        android:top="10dp"
  19. 19.        android:right="10dp"
  20. 20.        android:bottom="10dp" />
  21. 21.</shape>

solid:实心,就是填充的意思
android:color指定填充的颜色
gradient:渐变
android:startColor和android:endColor分别为起始和结束颜色

android:angle是渐变角度,必须为45的整数倍。

另外渐变默认的模式为android:type="linear",即线性渐变,可以指定渐变为径向渐变,android:type="radial",径向渐变需要指定半径android:gradientRadius="50"。
stroke:描边
android:width="2dp" 描边的宽度,android:color 描边的颜色。
我们还可以把描边弄成虚线的形式,设置方式为:
android:dashWidth="5dp"
android:dashGap="3dp"
其中android:dashWidth表示'-'这样一个横线的宽度,android:dashGap表示之间隔开的距离。

corners:圆角
android:radius为角的弧度,值越大角越圆。

<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:drawable="@drawable/y_calendar_btn_delete1" android:state_pressed="false"/>
<item android:drawable="@drawable/y_calendar_btn_delete2" android:state_pressed="true"/> </selector>
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape>
<!-- <stroke android:width="1sp" android:color="#c9c9c9" /> 边框颜色-->
<solid android:color="#bac4c5" /><!--填充色-->
<corners android:radius="5dip" /> <!--圆角弧度-->
</shape>
</item>
</layer-list>
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape>
<!-- <stroke android:width="1sp" android:color="#c9c9c9" /> 边框颜色-->
<solid android:color="#bec9c9" /><!--填充色-->
<corners android:radius="5dip" /> <!--圆角弧度-->
</shape>
</item>
</layer-list>

效果图:

android中通过自定义xml实现你需要的shape效果 xml属性配置

android中通过自定义xml实现你需要的shape效果 xml属性配置的更多相关文章

  1. Android中制作自定义dialog对话框的实例

    http://www.jb51.net/article/83319.htm   这篇文章主要介绍了Android中制作自定义dialog对话框的实例分享,安卓自带的Dialog显然不够用,因而我们要继 ...

  2. Android 中使用自定义字体的方法

    1.Android系统默认支持三种字体,分别为:“sans”, “serif”, “monospace 2.在Android中可以引入其他字体 . <?xml version="1.0 ...

  3. Android中的自定义Adapter(继承自BaseAdapter)——与系统Adapter的调用方法一致——含ViewHolder显示效率的优化&lpar;转&rpar;

    Android中很多地方使用的是适配器(Adapter)机制,那我们就要好好把这个Adapter利用起来,并且用出自己的特色,来符合我们自行设计的需要喽~~~ 下面先上一个例子,是使用ViewHold ...

  4. Android中实现照片滑动时左右进出的动画的xml代码

    场景 Android中通过ImageSwitcher实现相册滑动查看照片功能(附代码下载): https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/det ...

  5. &lbrack;转&rsqb;Android中attr自定义标签详解

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"     xmlns:wen= ...

  6. 【转载】Android中attr自定义标签详解

    原文链接:http://blog.sina.com.cn/s/blog_62ef2f14010105vi.html:仅对排版进行优化,更方便阅读 <LinearLayout xmlns:andr ...

  7. Android中使用ImageViewSwitcher实现图片切换轮播导航效果

    前面写过了使用ViewFlipper和ViewPager实现屏幕中视图切换的效果(ViewPager未实现轮播)附链接: Android中使用ViewFlipper实现屏幕切换 Android中使用V ...

  8. Android中TextView不获取焦点可以实现跑马灯的效果

    之前在网上找了很多关于TextView的跑马灯效果实现的例子,实现起来都存在一些问题,例如一种是完全重画一个跑马灯,还有就是只设置TextView的相关属性使其具有跑马灯的效果,总的来说这两种方法都是 ...

  9. android中选择控件与选择界面自然过度效果的实现--一种新的交互设计

    转载请标明出处: http://blog.csdn.net/jianghejie123/article/details/40648931 在安卓中经常遇到须要选择一个东西的功能,比方选择日期.选择文件 ...

随机推荐

  1. Spring-IOC-BeanFactory

    BeanFactory BeanFactory 是 Spring 的“心脏”.它就是 Spring IoC 容器的真面目.Spring 使用 BeanFactory 来实例化.配置和管理 Bean.但 ...

  2. ECSHOP v2&period;7&period;3注入漏洞分析和修复

    测试版本 漏洞条件 漏洞利用 产生原因 修复方案 1.测试版本 v2.7.3 RELEASE 20121106(最新) v2.7.3 RELEASE 20120411 2.漏洞条件 需登录到后台 3. ...

  3. Java集合List模拟&OpenCurlyDoubleQuote;洗牌”操作

    Collection工具类为操作List集合提供了几个有用的方法: reverse().shuffle().sort().swap().rotate(). 小例子: 使用shuffle(),方法模拟洗 ...

  4. C&num; 反射遍历对象

    在项目中需要遍历各种对象,可以通过如下方法遍历. /// <summary> /// 返回对象字符串 /// </summary> /// <param name=&qu ...

  5. C&plus;&plus; STL编程轻松入门基础

    C++ STL编程轻松入门基础 1 初识STL:解答一些疑问 1.1 一个最关心的问题:什么是STL 1.2 追根溯源:STL的历史 1.3 千丝万缕的联系 1.4 STL的不同实现版本 2 牛刀小试 ...

  6. IMosaicWorkspaceExtensionHelper

    Provides a helper for working with a mosaic dataset workspace extension. Product Availability Availa ...

  7. Cocos2D&colon;塔防游戏制作之旅&lpar;十八&rpar;

    在Enemy.m的getDamaged:方法只给你添加如下1行(在if条件内): [theGame awardGold:200]; 现在运行游戏你将注意到你不能放置超出你资源金币的炮塔了.当然杀死敌人 ...

  8. U盘安装ubuntu 16&period;04 遇到 gfxboot&period;c32&colon;not a COM32R image boot 的解决方法

    从U盘启动的时候出现了gfxboot.c32:not a COM32R image的问题,经过研究发现按下Tab键,会出现live live-install check memtest hd main ...

  9. file&lowbar;put&lowbar;contents 换行

    file_put_contents('test.text', json_encode($result) . PHP_EOL, FILE_APPEND);

  10. playfair

    又是一道实验吧的题,哈哈,我比较弱. 因为题目写了play我首先想到的是playfair,好,下面先看下百科 好了,已知了密钥: 所以有: s n f m th b g o ui c j p vy d ...