button 边框

android layer_list 用法总结 button颜色控制

1:颜色动态变化,多图层重叠

   首先先看效果图:


在res文件目录下建立drawable文件夹后建立该layer_list.xml

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
    <item>
        <shape>
            <gradient
                android:angle="90"
                android:centerColor="#104E8B"
                android:dither="true"
                android:endColor="#ffe26f"
                android:height="1px"
                android:startColor="#fff1b9" />
        </shape>
    </item>
</layer-list>

2:图片重叠位置的控制:


要用2张图片叠加起来,看上去形成一张图片 

 

首先创建一个drawalbe/login_head.xml的文件,内容如下: 

Xml代码   收藏代码
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <layer-list  
  3.   xmlns:android="http://schemas.android.com/apk/res/android">  
  4.     <item android:id="@+id/user_faceback_drawable" android:drawable="@drawable/faceback" />  
  5.     <item android:id="@+id/user_face_drawable" android:drawable="@drawable/h001" android:left="10.0dip" android:top="18.0dip" android:right="25.0dip" android:bottom="35.0dip" />  
  6. </layer-list>  

然后就可以使用这个组合的图片了,比如在ImageView中显示: 
<ImageView android:id="@+id/faceImg" android:background="@drawable/login_head" 
android:layout_width="wrap_content" android:layout_height="wrap_content" /> 

使用java代码: 
如何使多个Drawable叠加(合成图片)? 
大家可能知道Bitmap的叠加处理在Android平台中可以通过Canvas一层一层的画就行了,而Drawable中如何处理呢? 除了使用BitmapDrawable的getBitmap方法将Drawable转换为Bitmap外,今天Android123给大家说下好用简单的LayerDrawable类,LayerDrawable顾名思义就是层图形对象。下面直接用一个简单的代码表示: 


Java代码   收藏代码
  1. Bitmap bm = BitmapFactory.decodeResource(getResources(),R.drawable.cwj);    
  2.     Drawable[] array = new Drawable[3];    
  3.      array[0] = new PaintDrawable(Color.BLACK); //黑色    
  4.      array[1] = new PaintDrawable(Color.WHITE); //白色       
  5.      array[2] = new BitmapDrawable(bm); //位图资源            
  6.     LayerDrawable ld = new LayerDrawable(array); //参数为上面的Drawable数组    
  7.     ld.setLayerInset(11111);  //第一个参数1代表数组的第二个元素,为白色    
  8.     ld.setLayerInset(22222); //第一个参数2代表数组的第三个元素,为位图资源    
  9.     mImageView.setImageDrawable(ld);   


上面的方法中LayerDrawable是关键,Android开发网提示setLayerInset方法原型为public void setLayerInset (int index, int l, int t, int r, int b) 其中第一个参数为层的索引号,后面的四个参数分别为left、top、right和bottom。对于简单的图片合成我们可以将第一和第二层的PaintDrawable换成BitmapDrawable即可实现简单的图片合成。 



3:通过solid来定义不同边框的颜色,可以只定义一个边框的颜色 
以下是设置按钮的右边框和底边框颜色为红色,边框大小为3dp,如下图: 

 
在drawable新建一个 buttonstyle.xml的文件,内容如下: 

Xml代码   收藏代码
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <layer-list xmlns:android="http://schemas.android.com/apk/res/android">   
  3. <!-- 连框颜色值 -->  
  4. <item>   
  5.       <shape>   
  6.             <solid android:color="#ff0000" />   
  7.       </shape>   
  8. </item>   
  9. <!-- 主体背景颜色值 -->  
  10. <item android:bottom="3dp" android:right="3dp">   
  11.      <shape>   
  12.            <solid android:color="#ffffff" />  
  13.              
  14.            <padding android:bottom="10dp"  
  15.                 android:left="10dp"  
  16.                 android:right="10dp"  
  17.                 android:top="10dp" />  
  18.      </shape>       
  19. </item>  
  20. </layer-list>  

然后在布局文件里面的Button里面设置如下: 

Xml代码   收藏代码
  1. <Button  
  2.    android:id="@+id/button1"  
  3.    android:layout_width="wrap_content"  
  4.    android:layout_height="wrap_content"  
  5.    android:text="Button1"  
  6.    android:background="@drawable/buttonstyle" />  


4:再看下面button界面的实现效果:



selector.xml文件:

<?xml version="1.0" encoding="utf-8"?>

<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_selected="true" android:drawable="@drawable/tab_main_nav_on" />
<item android:state_selected="false" android:drawable="@drawable/tab_main_nav_off" />
</selector> 

@drawable/tab_main_nav_on"

<?xml version="1.0" encoding="utf-8"?>

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


    <gradient
        android:angle="270"
        android:endColor="#50000000"
        android:startColor="#30000000" />
    <!--


 各种颜色
    0f99bd 
    096c96
    
    767676
    4d4d4d
    -->


</shape>

@drawable/tab_main_nav_off

<?xml version="1.0" encoding="utf-8"?>


<!-- Copyright 2010 Mark Wyszomierski -->


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


    <gradient
        android:angle="270"
        android:endColor="#30000000"
        android:startColor="#50000000" />


</shape>





以下是设置按钮的右边框和底边框颜色为红色,边框大小为3dp,如下图:

在drawable新建一个 buttonstyle.xml的文件,内容如下:

  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <layer-list xmlns:android="http://schemas.android.com/apk/res/android">   
  3. <!-- 连框颜色值 --><item>   
  4.       <shape>   
  5.             <solid android:color="#ff0000" />   
  6.       </shape>   
  7. </item>   
  8. <!-- 主体背景颜色值 -->  
  9. <item android:bottom="3dp" android:right="3dp">   
  10.      <shape>   
  11.            <solid android:color="#ffffff" />  
  12.              
  13.            <padding android:bottom="10dp"  
  14.                 android:left="10dp"  
  15.                 android:right="10dp"  
  16.                 android:top="10dp" />  
  17.      </shape>       
  18. </item>  
  19. </layer-list>  

 

然后在布局文件里面的Button里面设置如下:


  1. <Button  
  2.    android:id="@+id/button1"  
  3.    android:layout_width="wrap_content"  
  4.    android:layout_height="wrap_content"  
  5.    android:text="Button1"  
  6.    android:background="@drawable/buttonstyle" /> 







此文版权属于作者所有,任何人、媒体或者网站转载、借用都必须征得作者本人同意!

  1. GradientDrawable drawable = new GradientDrawable();  
  2. drawable.setShape(GradientDrawable.RECTANGLE); // 画框  
  3. drawable.setStroke(1, Color.BLUE); // 边框粗细及颜色  
  4. drawable.setColor(0x22FFFF00); // 边框内部颜色  
  5.   
  6. mFullscreenBtn = new Button(ctx);  
  7. mFullscreenBtn.setBackgroundDrawable(drawable); // 设置背景(效果就是有边框及底色)


button加边框:

新建一个selector.xml 取名曰buttonstyle.xml


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

    <item android:drawable="@drawable/btn_bg" android:state_focused="false" android:state_pressed="false"/>
    <item  android:state_focused="true"><layer-list>

            <!-- 连框颜色值 -->
            <item><shape>
                    <solid android:color="#ff0000" />
                </shape></item>
            <!-- 主体背景颜色值 -->
            <item android:bottom="3dp" android:left="3dp" android:right="3dp" android:top="3dp"><shape>
                    <solid android:color="#ffffff" />

                    <padding android:bottom="10dp" android:left="10dp" android:right="10dp" android:top="10dp" />
                </shape></item>
        </layer-list></item>

</selector>

而后在button控件中设置background即可.....



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值