Android控件组合应用七(结局,附源码)

接上一篇,我们来处理一下微博中的图片部分。

前文中我们利用WebView来处理URL中的图片显示,并且基本能达到目标,但是还是有一两处细节需要处理,以提升用户体验。

一是在下载图片的过程中需要显示一个背景图,让用户先知道那里会出现图片,而不是一片空白。

二是图片下来以后,要根据图片的大小动态调整显示效果,不能出现WebView太大而图片太小时的白边。

 

由此,我们从WebView继承一个PictureWebView专门解决上面这两个问题。

首先,我们要为这个PictureWebView实现WebView.PictureListener接口,该接口提供的

public abstract void onNewPicture(WebView view, Picture picture)

方法用于在图片改变时发出通知。代码如下,其中的picture是一个Picture类型的成员变量。

 

	@Override
	public void onNewPicture(WebView view, Picture picture) {
		if (picture!=null){
			this.picture=picture;
			DisplayMetrics dm=getContext().getResources().getDisplayMetrics();
			int width=(int) (picture.getWidth()*dm.density);
			int height=(int) (picture.getHeight()*dm.density);
			setPictureListener(null);
			ViewGroup.LayoutParams lp=getLayoutParams();
			lp.width=width;
			lp.height=height;
			setLayoutParams(lp);
		}	
	}
 

 

注意到这里已经根据picture大小调整了控件的布局。因为我们这个PictureWebView的每个实例针对的只是一条微博中的图片URL,因此这里不关注WebView中其他的可显示元素。

 

接下来,为了更好的处理第二个问题,我们改写一下onDraw()方法,进行背景和图片的绘制。代码如下:

 

	@Override
	protected void onDraw(Canvas canvas) {
		super.onDraw(canvas);
		if (picture==null){
			Drawable background=this.getBackground();
			if (background!=null){
				background.setBounds(0,0,background.getIntrinsicWidth(),background.getIntrinsicHeight());
				background.draw(canvas);
			}
		}
	}
 

 

这样,一个定制的WebView就实现了,修改blogview.xml布局文件中的WebView控件为PictureWebView即可,代码如下:

 

 	<com.wenbin.test.PictureWebView android:id="@+id/profileImage"
 		android:layout_width="48dp"
 		android:layout_height="48dp"
 		android:scrollbars="none"
 		android:layout_alignParentLeft="true"
 		android:background="@drawable/portrait">
 	</com.wenbin.test.PictureWebView>

 

 

运行程序,无论是头像还是微博中的图片,在未下载完时是显示背景图的,下载完后会自动调整布局进行适应,而且不存在无用的边框。截图见《Android控件组合应用一》一文。

 

结语:本来想在一篇中写完,但篇幅太长,所以分割成了这许多部分。而且也没想到CSDN勤劳的小编在第一篇文章刚出时就盖了“推荐”的章,然后我就开始熬夜赶工了。在代码中没有注重算法之类的事情,也没有达到商用的程度,主要还是通过模仿新浪微博的客户端界面来灵活应用一下Android的控件,同时也可以看到Android框架带给开发人员的灵活程度。

 

附上全部的源码和资源供参考(该程序在MOTOROLA milestone Android 2.1上进行了测试,其中的部分资源来源于新浪微博,仅供学习测试之用)。

 

点此下载源码

 

——欢迎转载,转载请注明出处 http://blog.csdn.net/caowenbin ——

 


原文链接: http://blog.csdn.net/caowenbin/article/details/6445513

你可能感兴趣的:(Android控件组合应用七(结局,附源码))