展会信息港展会大全

Android控件WebView组合应用七
来源:互联网   发布日期:2015-10-02 21:24:34   浏览:2279次  

导读:接上一篇,我们来处理一下微博中的图片部分。前文中我们利用WebView来处理URL中的图片显示,并且基本能达到目标,但是还是有一两处细节需要处理,以提升用户体验。一是在下载图片的过程中需要显示一个背景图,让......

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

前文中我们利用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框架带给开发人员的灵活程度。

赞助本站

人工智能实验室

相关热词: WebView

AiLab云推荐
展开

热门栏目HotCates

Copyright © 2010-2024 AiLab Team. 人工智能实验室 版权所有    关于我们 | 联系我们 | 广告服务 | 公司动态 | 免责声明 | 隐私条款 | 工作机会 | 展会港