最近在Android开发中使用到了ImageButton这个控件,一般而言我们有两种设置其图片的方法,一种是设置控件的Src属性,一种是设置控件的Background属性,但是这两种方法有什么差别呢?于是上网搜索了一下,总结如下:
1、基本概念区别
src属性指按钮表层显示图片属性,background属性指按钮底层背景属性。当使用android:src属性时,图片不会拉伸(除非额外设置了Scale Type);而是用android:background属性时,图片默认会填充整个背景,
举例而言,如果你的ImageButton控件是50*50大小,而你的图片资源是30*30大小,那么src属性设置后会居中显示30*30大小的图片,而background属性则会将图片拉伸到50*50大小,造成图片的变形、模糊等问题。
2、代码编写区别
//使用src属性时,在代码中修改显示内容
btn_start.setImageDrawable(getResources().getDrawable(R.drawable.play));
//使用background属性时,在代码中修改显示内容
btn_start.setBackground(getResources().getDrawable(R.drawable.pause));
3、消除ImageButton默认的灰白色背景
当我们使用src属性设置按钮的图片的时候,ImageButton默认给我们的按钮添加了一个灰白色的背景框,造成视觉上非常别扭,我们可以用如下的方法(原文链接)进行修改:
一种方法是将ImageButton的背景改为所需要的图片。如:android:background="@drawable/XXX"
第二种方法就是将ImageButton背景改为透明,这个方法更常用:
在XML里;
<ImageButton android:background="#00000000" .../>
注解:颜色和不透明度 (alpha)值以十六进制表示法表示。任何一种颜色的值范围都是 0 到 255(00ff)。对于 alpha,00 表示完全透明,ff表示完全不透明。表达式顺序是“aabbggrr”,其中“aa=alpha”(00 到 ff);“bb=blue”(00 到ff);“gg=green”(00 到 ff);“rr=red”(00 到 ff)。半透明则为
"#e0000000"。例如,如果您希望对某叠加层应用不透明度为 50%的蓝色,则应指定以下值:7fff0000
在代码里:设置背景图片透明度
View v =findViewById(R.id.content);//找到你要设透明背景的layout 的id
v.getBackground().setAlpha(100);//0~255透明度值