7.3.2 图像控件
图像控件是用于呈现各种类型图像的控件。在Android中,所有图像呈现的相关控件皆派生于android.widget.ImageView。
ImageView类可以接受各种来源的图像数据,比如通过ImageView.setImageURI函数可以展示本地存储的图片,利用ImageView.setImageBitmap函数可以展示内存中的位图信息;而更重要的是,可以利用Image.setImageDrawable函数来展示各类“可绘制”图像。
所谓“可绘制”图像,指的是派生自android.graphics.drawable.Drawable类的对象,包括位图BitmapDrawable、颜色ColorDrawable、动画AnimationDrawable等各种可以用来绘制的内容(如图7-11所示)。有一类比较特殊的可绘制对象是DrawableContainer类及其子类,它们用于表示一组可绘制对象。比如,AnimationDrawable类中包含了多帧图像,它们会按照一定的次序和速度进行播放;而StateListDrawable类同样也包含一组图像,它会根据控件的状态来展示对应的图像信息。通过“可绘制”图像架构,Android可以表示足够丰富的图像信息,降低了开发者的负担。
由于图像大小与图像控件大小可能不符,在图像呈现中就需要对图像进行缩放或剪切。利用ImageView.setScaleType函数,可以设置图像在图像控件中的缩放方式。
ImageView的作用仅是简单地进行图像展示,它并不支持复杂的用户交互,比如图像的拖动、多触点的缩放,等等。在应用开发中,如果开发者有更复杂的图像展示需求,可以通过调用第三方图像界面组件的方式或者自定义控件的方式来实现。
图 7-11 Drawable的继承结构