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

2024-04-07 11:32

本文主要是介绍Android控件组合应用七(结局,附源码),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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

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

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

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

 

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

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

public abstract void onNewPicture(WebView view, Picture picture)

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

 

view plain
  1. @Override  
  2. public void onNewPicture(WebView view, Picture picture) {  
  3.     if (picture!=null){  
  4.         this.picture=picture;  
  5.         DisplayMetrics dm=getContext().getResources().getDisplayMetrics();  
  6.         int width=(int) (picture.getWidth()*dm.density);  
  7.         int height=(int) (picture.getHeight()*dm.density);  
  8.         setPictureListener(null);  
  9.         ViewGroup.LayoutParams lp=getLayoutParams();  
  10.         lp.width=width;  
  11.         lp.height=height;  
  12.         setLayoutParams(lp);  
  13.     }     
  14. }  
 

 

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

 

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

 

view plain
  1. @Override  
  2. protected void onDraw(Canvas canvas) {  
  3.     super.onDraw(canvas);  
  4.     if (picture==null){  
  5.         Drawable background=this.getBackground();  
  6.         if (background!=null){  
  7.             background.setBounds(0,0,background.getIntrinsicWidth(),background.getIntrinsicHeight());  
  8.             background.draw(canvas);  
  9.         }  
  10.     }  
  11. }  
 

 

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

 

view plain
  1. <com.wenbin.test.PictureWebView android:id="@+id/profileImage"  
  2.     android:layout_width="48dp"  
  3.     android:layout_height="48dp"  
  4.     android:scrollbars="none"  
  5.     android:layout_alignParentLeft="true"  
  6.     android:background="@drawable/portrait">  
  7. </com.wenbin.test.PictureWebView>  

 

 

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

 

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

 

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

 

点此下载源码

 

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


这篇关于Android控件组合应用七(结局,附源码)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/882480

相关文章

Android使用ImageView.ScaleType实现图片的缩放与裁剪功能

《Android使用ImageView.ScaleType实现图片的缩放与裁剪功能》ImageView是最常用的控件之一,它用于展示各种类型的图片,为了能够根据需求调整图片的显示效果,Android提... 目录什么是 ImageView.ScaleType?FIT_XYFIT_STARTFIT_CENTE

C语言中位操作的实际应用举例

《C语言中位操作的实际应用举例》:本文主要介绍C语言中位操作的实际应用,总结了位操作的使用场景,并指出了需要注意的问题,如可读性、平台依赖性和溢出风险,文中通过代码介绍的非常详细,需要的朋友可以参... 目录1. 嵌入式系统与硬件寄存器操作2. 网络协议解析3. 图像处理与颜色编码4. 高效处理布尔标志集合

Android实现在线预览office文档的示例详解

《Android实现在线预览office文档的示例详解》在移动端展示在线Office文档(如Word、Excel、PPT)是一项常见需求,这篇文章为大家重点介绍了两种方案的实现方法,希望对大家有一定的... 目录一、项目概述二、相关技术知识三、实现思路3.1 方案一:WebView + Office Onl

Java中的Lambda表达式及其应用小结

《Java中的Lambda表达式及其应用小结》Java中的Lambda表达式是一项极具创新性的特性,它使得Java代码更加简洁和高效,尤其是在集合操作和并行处理方面,:本文主要介绍Java中的La... 目录前言1. 什么是Lambda表达式?2. Lambda表达式的基本语法例子1:最简单的Lambda表

Android实现两台手机屏幕共享和远程控制功能

《Android实现两台手机屏幕共享和远程控制功能》在远程协助、在线教学、技术支持等多种场景下,实时获得另一部移动设备的屏幕画面,并对其进行操作,具有极高的应用价值,本项目旨在实现两台Android手... 目录一、项目概述二、相关知识2.1 MediaProjection API2.2 Socket 网络

Android实现悬浮按钮功能

《Android实现悬浮按钮功能》在很多场景中,我们希望在应用或系统任意界面上都能看到一个小的“悬浮按钮”(FloatingButton),用来快速启动工具、展示未读信息或快捷操作,所以本文给大家介绍... 目录一、项目概述二、相关技术知识三、实现思路四、整合代码4.1 Java 代码(MainActivi

Python结合PyWebView库打造跨平台桌面应用

《Python结合PyWebView库打造跨平台桌面应用》随着Web技术的发展,将HTML/CSS/JavaScript与Python结合构建桌面应用成为可能,本文将系统讲解如何使用PyWebView... 目录一、技术原理与优势分析1.1 架构原理1.2 核心优势二、开发环境搭建2.1 安装依赖2.2 验

Java 正则表达式URL 匹配与源码全解析

《Java正则表达式URL匹配与源码全解析》在Web应用开发中,我们经常需要对URL进行格式验证,今天我们结合Java的Pattern和Matcher类,深入理解正则表达式在实际应用中... 目录1.正则表达式分解:2. 添加域名匹配 (2)3. 添加路径和查询参数匹配 (3) 4. 最终优化版本5.设计思

Java字符串操作技巧之语法、示例与应用场景分析

《Java字符串操作技巧之语法、示例与应用场景分析》在Java算法题和日常开发中,字符串处理是必备的核心技能,本文全面梳理Java中字符串的常用操作语法,结合代码示例、应用场景和避坑指南,可快速掌握字... 目录引言1. 基础操作1.1 创建字符串1.2 获取长度1.3 访问字符2. 字符串处理2.1 子字

Android Mainline基础简介

《AndroidMainline基础简介》AndroidMainline是通过模块化更新Android核心组件的框架,可能提高安全性,本文给大家介绍AndroidMainline基础简介,感兴趣的朋... 目录关键要点什么是 android Mainline?Android Mainline 的工作原理关键