AndroidstudioImageView(图像视图)
1.src属性和background属性的区别:
在API⽂档中我们发现ImageView有两个可以设置图⽚的属性,分别是:src和background
常识:
①background通常指的都是背景,⽽src指的是内容!!
②当使⽤src填⼊图⽚时,是按照图⽚⼤⼩直接填充,并不会进⾏拉伸
⽽使⽤background填⼊图⽚,则是会根据ImageView给定的宽度来进⾏拉伸
1)写代码验证区别:
写个简单的布局测试下:
<LinearLayout xmlns:android="schemas.android/apk/res/android"
xmlns:tools="schemas.android/tools"
android:id="@+id/LinearLayout1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="ample.imageviewdemo.MainActivity" >
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/pen" />
<ImageView
android:layout_width="200dp"
android:layout_height="wrap_content"
android:background="@drawable/pen" />
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/pen" />
<ImageView
android:layout_width="200dp"
android:layout_height="wrap_content"
android:src="@drawable/pen" />
</LinearLayout>android layout布局
效果图如下:
结果分析:
宽⾼都是wrap_content那就⼀样,是原图⼤⼩,但是,当我们固定了宽或者⾼的话, 差别就显⽽易见了,blackground完全填充了整个ImageView,⽽src依旧是那么⼤, ⽽且他居中了哦,这就涉及到了ImageView的另⼀个属性scaleType了! 另外还有⼀点,这⾥我们说了只设置width或者height 哦!加⼊我们同时设置了 width和height的话,blackground依旧填充,但是,src的⼤⼩可能发⽣改变哦! ⽐如,我们测试下下⾯这段代码:
<ImageView
android:layout_width="100dp"
android:layout_height="50dp"
android:src="@drawable/pen" />
运⾏效果图:
PS:scaleType下⾯会讲~
2)解决blackground拉伸导致图⽚变形的⽅法
在前⾯的效果图中的第⼆个Imageview中我们可以看到图⽚已经被拉伸变形了, 正⽅形变成了长⽅形,对于和我⼀样有轻微强迫症的⼈来说,显然是不可接受的, 有没有办法去设置呢?答案肯定是有的,笔者暂时知道的有以下两种⽅式:
这个适⽤于动态加载ImageView的,代码也简单,只要在添加View的时候,把⼤⼩写写死就可以了
LinearLayout.LayoutParams layoutParam = new LinearLayout.LayoutParams(48, 48);
layout.addView(ibtnPen, layoutParam);
除了动态加载view,更多的时候,我们还是会通过xml布局的⽅式引⼊ImageView的解决⽅法也不难,就是通过drawable的Bitmap资源⽂件来完成,然后blackground属性设置为该⽂件即可! 这个xml⽂件在drawable⽂件夹下创建,这个⽂件夹是要⾃⼰创建的哦!!
l:
<bitmap
xmlns:android="schemas.android/apk/res/android"
android:id="@id/pen_bg"
android:gravity="top"
android:src="@drawable/pen"
android:tileMode="disabled" >
</bitmap>
上述代码并不难理解,估计⼤家最迷惑的是titleMode属性吧,这个属性是平铺,就是我们windows设置背景时候的平铺,多个⼩图标铺满整个屏幕捏!记得了吧!不记得⾃⼰可以试试!disabled就是把他给禁⽌了!
就是上⾯这串简单的代码,⾄于调⽤⽅法如下:
动态: ibtnPen.setBacklgroundResource(R.drawable.penbg);
静态: android:background = "@drawable/penbg"
3)设置透明度的问题
说完前⾯两个区别,接着再说下setAlpha属性咯!这个很简单,这个属性,只有src时才是有效果的!!
4)两者结合妙⽤:
⼀看去是⼀个简单的GridView,每个item都是⼀个ImageView,但是细⼼的你可能发现了, 上⾯的ICON都不是规则的,⽽是圆形,圆⾓矩形等等,于是乎这⾥⽤到了src + background了!要实现上述的效果,你只需要两个操作: ⼀张透明的png图⽚ + 设置⼀个⿊⾊的背景 (当然你也可以设置png的透明度来实现,不过结果可能和预想的有出⼊哦!) 我们写个简单例⼦:
如图,呆萌呆萌的⼩猪就这样显⽰到ImageView上了,哈哈,blackground设置了蓝⾊背景!
实现代码:
<ImageView
android:layout_width="150dp"
android:layout_height="wrap_content"
android:src="@drawable/pig"
android:background="#6699FF" />
PS: 当然你也可以⽤selctor实现点击效果,设置不同的情况设置不同的图⽚,以实现点击或者触摸效果!
5)Java代码中设置blackground和src属性:
前景(对应src属性):setImageDrawable( );
背景(对应background属性):setBackgroundDrawable( );
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论