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


    
    

    在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:startColorandroid: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>

    效果图:













  • 相关阅读:
    codeforces 616B Dinner with Emma
    codeforces 616A Comparing Two Long Integers
    codeforces 615C Running Track
    codeforces 612C Replace To Make Regular Bracket Sequence
    codeforces 612B HDD is Outdated Technology
    重写父类中的成员属性
    子类继承父类
    访问修饰符
    方法的参数
    实例化类
  • 原文地址:https://www.cnblogs.com/keanuyaoo/p/3283253.html
Copyright © 2020-2023  润新知