drawable下的非图片资源之layer-list

1.圆角图片:



drawable下的非图片资源之layer-list_第1张图片

也就是一个左右下角带圆角,上方不带圆角的白色背景矩形,而且只有左、右和下边框,颜色为浅灰色。

当然,切一个.9图片作为背景也能实现,但是能用代码实现的还是尽量用代码实现,因为图片过多一个消耗内存,另一个还增加apk大小。

这种效果可以通过layer-lsit来实现,在drawable文件夹下面建一个xml文件,具体代码如下:

复制代码
 1 xml version="1.0" encoding="utf-8"?>
 2 <layer-list xmlns:android="http://schemas.android.com/apk/res/android">   
 3       
 6     
 7     <item>   
 8          <shape>   
 9                <corners android:bottomLeftRadius="5dp" 
10                    android:bottomRightRadius="5dp" />
11                <stroke android:width="1px" android:color="@color/line_color" />
12          shape>       
13     item>  
14     
24     <item android:right="1px" android:left="1px" android:bottom="1px">   
25          <shape>   
26                <corners android:bottomLeftRadius="5dp" 
27                    android:bottomRightRadius="5dp" />
28                <solid android:color="@color/white" />
29          shape>       
30     item>  
31 layer-list>
复制代码

layer-lsit的用法注释中也讲的比较详细。

然后在View中设置背景为改drawable即可。

当然也可以直接用sharp来实现:

xml version="1.0" encoding="utf-8"?>
xmlns:android="http://schemas.android.com/apk/res/android">
    android:bottomLeftRadius="5dp" android:bottomRightRadius="5dp"/>
    android:color="#ffffff" />
    android:color="#66000000" android:width="1dp"/>



2.两个图片叠加:

  1. <layer-list    
  2.    xmlns:android="http://schemas.android.com/apk/res/android">   
  3.       
  4.      <item android:id="@+id/user_faceback_drawable"  
  5.            android:drawable="@drawable/faceback" />    
  6.       
  7.      <item android:id="@+id/user_face_drawable"   
  8.            android:drawable="@drawable/h001"     
  9.            android:left="10.0dip"   
  10.            android:top="18.0dip"   
  11.            android:right="25.0dip"   
  12.            android:bottom="35.0dip" />    
  13.  layer-list>   

           +                    =           


3.旋转叠加:


创建drawable xml文件
   


    
        
        
                android:fromDegrees="-10" android:toDegrees="-10">
            
         

    
    
    
        
                android:fromDegrees="15" android:toDegrees="15">
            
        

    
    
    
        
                android:fromDegrees="35" android:toDegrees="55">
            
        

    


布局文件中添加创建的图片


    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:paddingBottom="@dimen/activity_vertical_margin"
    tools:context=".MainActivity">

    
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/layer_image" />



drawable下的非图片资源之layer-list_第2张图片

4.圆形按钮:


xml version="1.0" encoding="utf-8"?>
xmlns:android="http://schemas.android.com/apk/res/android">

    
        android:shape="oval" >

            android:color="#ffffff" />
            android:width="170dp" android:height="170dp"/>
        
    

    android:bottom="8dp" android:right="8dp" android:top="8dp" android:left="8dp" >
        xmlns:android="http://schemas.android.com/apk/res/android">
            android:state_pressed="true">
                android:shape="oval" >

                    android:color="#e66b4f" />
                    android:width="162dp" android:height="162dp"/>
                
            

            
                android:shape="oval" >

                    android:color="#f3876f" />
                    android:width="162dp" android:height="162dp"/>
                
            

        
    


5.使用layerlist定义seekbar样式(也可定义progressbar,rattingbar样式):

5.1.layerlist中使用图片:

xml version="1.0" encoding="utf-8"?>
xmlns:android="http://schemas.android.com/apk/res/android">
    android:drawable="@drawable/seekbar_bg" android:id="@android:id/background"/>
    android:id="@android:id/progress" android:drawable="@drawable/seekbar_front"/>
        
    android:drawable="@drawable/seekbar_front" android:id="@android:id/secondaryProgress"/>


seekbar_front.png如下图:

seekbar_bg.png如下图:


图片没必要这么长的,只要颜色和样子一样即可,这种短图片也会自动根据进度拉长

             

布局:

xml version="1.0" encoding="utf-8"?>
xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"

    tools:context="com.example.zhouyi.layerlisttest.MainActivity">

   
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
       android:max="100"
       android:layout_centerInParent="true"
       android:progress="40"
       android:secondaryProgress="70"
       android:progressDrawable="@drawable/layerlist_seekbar"
       android:maxHeight="10dp"
       android:minHeight="10dp"
       />



maxHeight和minHeight定义为layerlist重最高图片的高度,否则会出现thumb不居中的问题

定义thumb:

selector:

xml version="1.0" encoding="UTF-8"?>
xmlns:android="http://schemas.android.com/apk/res/android">
    
    android:state_pressed="true"
        android:drawable="@drawable/thumb_dn" />


    
    android:drawable="@drawable/thumb_up" />

thumb_up.png如下图:

thumb_dn.png如下图:

布局:

xml version="1.0" encoding="utf-8"?>
xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"

    tools:context="com.example.zhouyi.layerlisttest.MainActivity">

   
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
       android:max="100"
       android:layout_centerInParent="true"
       android:progress="40"
       android:secondaryProgress="70"
       android:progressDrawable="@drawable/layerlist_seekbar"
       android:thumb="@drawable/sel_seekbarthumb"
       android:maxHeight="10dp"
       android:minHeight="10dp"
       />




效果:

drawable下的非图片资源之layer-list_第3张图片


5.2 layerlist中使用sharp:

xml version="1.0" encoding="utf-8"?>
xmlns:android="http://schemas.android.com/apk/res/android">
    android:id="@android:id/background">
        android:shape="rectangle">
            android:color="@color/colorAccent" />

        
    
    android:id="@android:id/progress">
        
        android:shape="rectangle">
            android:color="#00ff00" />

        
        
    
    android:id="@android:id/secondaryProgress">
        
        android:shape="rectangle">
            android:color="#55000000" />

        
        
    

后面两个progress对应的item,一定要用clip包裹起来

drawable下的非图片资源之layer-list_第4张图片


xml version="1.0" encoding="utf-8"?>
xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"

    tools:context="com.example.zhouyi.layerlisttest.MainActivity">

   
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
       android:max="100"
       android:layout_centerInParent="true"
       android:progress="40"
       android:secondaryProgress="70"
       android:progressDrawable="@drawable/layerlist_seekbar"
       android:thumb="@drawable/sel_seekbarthumb"
       android:maxHeight="10dp"
       android:minHeight="10dp"
       />




也要用max/minheight限定其大小,否则会出现进度条过大的情况





你可能感兴趣的:(drawable下的非图片资源之layer-list)