Android图层列表layer-list

概念

layer-list 是图层列表,原理是列表中的每个可绘制对象均按照列表顺序绘制,列表中的最后一个可绘制对象绘于顶部,图层一层层的叠加,有点类似FrameLayout。在 layer-list 中可以通过控制后添加图层距离最底部图层的左、上、右、下的四个边距等属性,来得到不同的显示效果。
layer-list 是用来创建 LayerDrawable 的,LayerDrawable 是drawable 的一种。

基本使用方法以及注意项

每个可绘制对象由单一 元素内的 元素表示。必须是根元素。包含一个或多个 元素。

layer-list和item标签是固定的,item标签内部可以是如下这些标签:


默认情况下,所有可绘制项都会缩放以适应包含视图的大小。因此,将图像放在图层列表中的不同位置可能会增大视图的大小,并且有些图像会相应地缩放。为避免缩放列表中的项目,请在 元素内使用 元素指定可绘制对象,并且对某些不缩放的项目(例如 "center")定义重力。

例如,以下 定义缩放以适应其容器视图的项目:


为避免缩放,以下示例使用重力居中的 元素:


  

几个应用案例

(1)阴影


    
    
        
            
            
        
    
    
    
        
            
            
        
    

效果如图所示:


阴影

项目中长按一条数据可以拖动时浮现阴影有使用过这个功能。

(2)旋转


    
        
            
                
                
                
            
        
    
    
        
            
                
                
                
            
        
    
    
        
            
                
                
                
            
        
    

效果如图所示:

旋转

(3)两端圆角的进度条


重点在progressDrawable,如果我们使用如下实现:


    
        
            
            
        
    
    
        
            
                
                
            
        
    

实现效果如下所示:


当值不到100%时,进度条由clip来做会将进度条截断成直角。

我们换一种实现方式,采用scale标签来做,如下:


    
        
            
            
        
    
    
        
            
                
                
            
        
    

实现效果如下图所示:


注意使用scale标签需要添加android:scaleWidth="100%"这个属性,否则设置进度就不起作用了。

(4)App启动页的适配

为了用一套图来适配不同分辨率机型的启动页不被拉伸,我们采用layer-list来实现,纯色背景最佳。启动页的小图标单切。


    
    
        
    
    
        
    

注意:不打算让图片充满容器要给图片bitmap设置gravity,否则默认会充满容器。

设置activity的主题,并在配置清单文件中给activity设置此主题


在v21文件夹下的styles中:
android:windowDrawsSystemBarBackgrounds适配虚拟导航栏

这个效果图不贴了,反正就是正常的启动页。

启动页适配相关文章:
Android:启动页--最佳实践
Android启动页解决攻略最终版

你可能感兴趣的:(Android图层列表layer-list)