Android常用的shape,selector,layer-list使用说明

 shape的优势Android开发中,使用shape可以方便的帮我们画出背景,相对于png图片来说,使用shape可以减少安装包的大小,而且能够更好的适应不同的手机;

1.shape(GradientDrawable)

shape顾名思义就是形状的意思,我们在平时开发的中,应用的频率也很高,该文件是一个xml文件,并放在drawable文件夹下如res/drawable/filename.xml,那么引用方式也很简单,我们一般在控件的background使用,如android:background="@drawable/filename"

shape文件基本结构如下:


    
    
    
    
    
    

1.1标签下常见属性

属性说明


    xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape=["rectangle" | "oval" | "line" | "ring"]  />

1.2标签下常见属性

        android:radius="integer"
        android:topLeftRadius="integer"
        android:topRightRadius="integer"
        android:bottomLeftRadius="integer"
        android:bottomRightRadius="integer" />

属性说明

1.3标签下属性说明

          android:angle="integer"
        android:centerX="float"
        android:centerY="float"
        android:centerColor="integer"
        android:endColor="color"
        android:gradientRadius="integer"
        android:startColor="color"
        android:type=["linear" | "radial" | "sweep"]
        android:useLevel=["true" | "false"] />

属性说明

 

1.4标签下属性说明

属性说明

 

1.5标签下属性说明

属性说明

1.6标签下属性说明

属性说明

在xml文件实现shape和用Java代码实现大同小异,他们命名规则都是相对应的,可以参考官方API文档,Drawable resources  |  Android Developers,shape标签对应的GradientDrawable类;

2.图层列表layer-list(LayerDrawable )

layer-list顾名思义就是分层的意思,我们在平时开发的中,应用的频率也很高,该文件是一个xml文件,并放在drawable文件夹下如res/drawable/filename.xml,那么引用方式也很简单,我们一般在控件的background使用,如android:background="@drawable/filename";

LayerDrawable 是管理其他可绘制对象阵列的可绘制对象。列表中的每个可绘制对象按照列表的顺序绘制,列表中的最后一个可绘制对象绘于顶部。每个可绘制对象由单一元素内的元素表示。我们需要注意的是layer-list中有item的先后顺序会影响展示效果,不同顺序的效果可能大相径庭,因为,后面的item总是在之前的item之上并覆盖显示

2.1layer-list文件结构


    

2.1标签下属性说明

属性说明

2.2标签下属性说明

        android:drawable="@[package:]drawable/drawable_resource"
        android:id="@[+][package:]id/resource_name"
        android:top="dimension"
        android:right="dimension"
        android:bottom="dimension"
        android:left="dimension" />

属性说明

 

在xml文件实现layer-list和用Java代码实现大同小异,他们命名规则都是相对应的,可以参考官方API文档,Drawable resources  |  Android Developers,layer-list标签对应的LayerDrawable类;

3.选择器selector

根据控件不同的状态显示不同的背景;

selector顾名思义就是选择器的意思,我们在平时开发的中,应用的频率也很高,该文件是一个xml文件,并放在drawable文件夹下如res/drawable/filename.xml,那么引用方式也很简单,我们一般在控件的background使用,如android:background="@drawable/filename";

3.1selector文件结构


    

3.1标签下属性说明

 

属性说明

3.2标签下属性说明

属性说明

在xml文件实现selector和用Java代码实现大同小异,他们命名规则都是相对应的,可以参考官方API文档,Drawable resources  |  Android Developers,selector标签对应的StateListDrawable类;

4.shape,layer-list,selector使用实践




    
    
        
        
            
            
                
                    
                
            
            
            
                
                    
                    
                    
               
            
            
            
                
                    
                    
                
            
        
    
    
    
        
            
                
                    
                
            
            
                
                    

                    

                    
                
            
            
                
                    
                    
                
            
        
    

4.1shape使用示例

Android常用的shape,selector,layer-list使用说明_第1张图片

矩形实线边框-内填充(rect_solid_border.xml)


    
    

 矩形虚线边框-内填充(rect_dashed_border.xml)



    
    

圆角矩形-有边框有填充(rect_rounded_border_and_fill.xml)


    
    
    

矩形圆角+左右两边为一个圆弧(rect_rounded_top_bottom_arc.xml)



    
    
    
    

​​​​​​矩形内部填充-扫描渐变(rect_gradient_sweep.xml)



    
    

    

    
    

圆环-仅有边框(ring_border.xml)



    
    
    

5.总结

  • 控件把标签做为背景对应是GradientDrawable类,不是ShapeDrawable
  • GradientDrawable可以通过Java代码实现和标签一样的定义;
  • DrawableInflater负责解析相应的shape,scale等相关xml文件配置,解析成相应的类;

参考:

Drawable resources  |  Android Developers

Android XML shape 标签使用详解(apk瘦身,减少内存好帮手) - popfisher - 博客园

Android GradientDrawable(shape标签定义) 静态使用和动态使用(圆角,渐变实现) - popfisher - 博客园

Android开发:shape和selector和layer-list的(详细说明)_陈三哥的博客-CSDN博客_android layer-list​​​​​

安卓中常用的shape,selector,layer-list - 可乐鸭头 - 博客园

Android View — Gradient 渐变 - 简书

Android的ShapeDrawable和GradientDrawable源码解析 - 菜鸟学院

Android可绘制对象资源之shape和layer-list使用_Code4Android-CSDN博客

 

你可能感兴趣的:(Android面试整理2021,Android拓展,shape,layer-list,selector)