本文主要是介绍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 ——
这篇关于Android控件组合应用七(结局,附源码)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!