android ImageButton使用形状非方形的png图片但却显示出正方形白边的情况

来源:互联网 发布:淘宝的旗舰店可信吗 编辑:程序博客网 时间:2024/04/30 03:14

刚刚碰到这个问题,误打误撞解决了,如果用ImageButton需要使用图片

如果引入的方式是 android:src="@drawable/index_start_sel"则会变成有正方形的白边


解决方法1:

使用background就可以 

android:background="@drawable/index_start_sel" />





我查了一下src和background的区别


ImageView中XML属性src和background的区别:

background会根据ImageView组件给定的长宽进行拉伸,而src就存放的是原图的大小,不会进行拉伸。src是图片内容(前景),bg是背景,可以同时使用。

此外:scaleType只对src起作用;bg可设置透明度,比如在ImageButton中就可以用android:scaleType控制图片的缩放方式,示例代码如下:

   <ImageView android:id="@+id/img" 
    android:src="@drawable/logo"
    android:scaleType="centerInside"
    android:layout_width="60dip"
    android:layout_height="60dip"
    android:layout_centerVertical="true"/>

  说明:centerInside表示按比例缩放图片,使得图片长 (宽)的小于等于视图的相应维度。

  注意:控制的图片为资源而不是背景,即android:src="@drawable/logo",而非android:background="@drawable/logo"。程序中动态加载图片也类似,如:应该imgView.setImageResource(R.drawable.*);而非imgView.setBackgroundResource(R.drawable.*);

原来src是前景图,background是背景图,在使用src的时候如果图片的边缘是透明的,那么会带有一层渲染,所以要去掉背景的影响或者直接用背景就行了






解决方法2

imageButton 使用透明图片:

在Android上有很多不规则按钮。如:


这个时候,我们如果想做成不规则按钮的话,第一步就是搞一张边缘透明的png图片,然后用src指定到他,这个时候我们会发现,还没有达到要的效果,还有图片周围还是有一层渲染。此时还要搞第二步:需要对ImageButton设置背景属性android:background="#00000000",就实现了不规则按钮的效果了。如图:


有朋友可能会说,直接用background指定该图片就ok啦, 可是,如果用background指定,会使图片填充整个imageButton.比如imageButton长宽200,而图片长款只有50,那么图片就会被拉伸4倍变模糊。而我们要达到的效果不是为了填充。像上面锤子图标一样。占中间一部分就OK了。


0 0
原创粉丝点击