注意事项:res下面的资源名不能使用大写字母,特别是图片资源中的图片的文件名,会造成R.java文件丢失,改正确后即可
1)scr属性于background属性的区别:
在API文档中我们发现ImageView有两个可以设置图片的属性,分别是:src和background
常识:
①background通常指的都是背景,而src指的是内容!!
②当使用src填入图片时,是按照图片大小直接填充,并不会进行拉伸
而使用background填入图片,则是会根据ImageView给定的宽度来进行拉伸
2)解决blackground拉伸导致图片变形的方法
这个适用于动态加载ImageView的,代码也渐渐,只要在添加View的时候,把大小写死就可以了
LinearLayout.LayoutParams layoutParam = new LinearLayout.LayoutParams(48, 48);
layout.addView(ibtnPen, layoutParam);
除了动态加载view,更多的时候,我们还是会通过xml布局的方式引入ImageView的 解决方法也不难,就是通过drawable的Bitmap资源文件来完成,然后blackground属性设置为该文件即可! 这个xml文件在drawable文件夹下创建,这个文件夹是要自己创建的哦!!!!!!
<bitmap
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@id/pen_bg"
android:gravity="top"
android:src="@drawable/pen"
android:tileMode="disabled" >
" >
3)Java代码中设置blackground和src属性:
前景(对应src属性):setImageDrawable( );
背景(对应background属性):setBackgroundDrawable( );
4)scaleType(缩放类行)
scaleType的属性值有:matrix fitXY fitStart fitCenter fitEnd center centerCrop centerInsde
(扩大或缩小至)
图片宽度--------------->控件宽度
它们之间的区别如下:
matrix 用矩阵来绘制(从左上角起始的矩阵区域)
fitXY 不按比例缩放图片,目标是把整个图片塞满整个View
fitStart 把图片按比例扩大或缩小到View的[[[宽度]]],然后置顶部显示(图片会完整显示)
fitCenter 把图片按比例扩大或缩小到View的[[[宽度]]],然后居中显示(图片会完整显示)
fitEnd 把图片按比例扩大或缩小到View的[[[宽度]]],然后置底部显示(图片会完整显示)
center 不缩放,将图片按原来大小居中显示,当图片宽高超过View的宽高时,则截取图片的居中部分显示
centerCrop 按比例扩大(或缩小)图片的size居中显示,使得图片的长宽的[[[等于或大于]]]View的长宽
centerInside 按比例扩大(或缩小)图片的size居中显示,使得图片的长宽的[[[等于或小于]]]View的长宽 (图片会完整显示)
用得最多还是fitXY fitStart fitCefitEn
默认是fitCenter
scaleType属性分二种情况分析
1.1.1 图片比ImageView小(android08_widget03_d01_v1)
<ImageView
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_marginRight="10dp"
android:background="#FF0000"
android:scaleType="matrix"
android:src="@drawable/small_image" />
1.1.2 图片比ImageView大(android08_widget03_d01_v2)
5) 进度条 ProgressBar
常用属性
style="?android:attr/progressBarStyleHorizontal" 默认为圆形
android:progress="33"
android:max="100"
线程休眠
Thread.sleep(100);//抛异常
SystemClock.sleep(100);//不会抛异常
线程注意事项:
不能在主线程中执行耗时的操作,只能在子线程中操作
另外,在子线程中不能操作主线程中的控件(ProgressBar除外)
SubThread->MainThread 错误
Handler(重点、面试问得比较多)
用于线程之间的通信,比如:主线程与子线程
线程小结
SubThread->MainThread 错误
SubThread->Handler->MainThread 正确