Android网络编程---利用AsyncHttpClient自定义缓冲图片

2023-10-04 20:20

本文主要是介绍Android网络编程---利用AsyncHttpClient自定义缓冲图片,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

网络编程:自定义缓冲图片-----------------获取服务器端的图片文件

该程序运行了loopj团队开源框架AsyncHttpClient

链接:https://github.com/loopj/android-async-http

/**
 * 自定义缓冲图片
 */
public class CacheImage extends Activity {

private ImageView iView;
private EditText eText;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_image);
iView = (ImageView) findViewById(R.id.iv);
eText = (EditText) findViewById(R.id.et_uri);
}

//一个button按钮的点击事件
public void showImage(View view){
String path = eText.getText().toString().trim();
getBitmap(path);
}
/**
* 根据网络路径得到图片------并进行缓冲
* @param path
*/
private void getBitmap(String path) {
try {
//新建一个缓冲文件---------由于文件名不能包含/所以用URLEncoder对其进行编码转换
final File cacheFile = new File(getCacheDir(),URLEncoder.encode(path, "UTF-8"));
AsyncHttpClient client = new AsyncHttpClient();
if (cacheFile.exists()) {
//设置请求头----------文件的最后修改时间 If-Modified-Since是固定的格式
client.addHeader("If-Modified-Since", format(cacheFile.lastModified()));
}
client.get(path, new AsyncHttpResponseHandler() {

@Override
public void onSuccess(int statusCode, Header[] headers, byte[] responseBody) {
if (statusCode == 200) {
Bitmap bitmap = BitmapFactory.decodeByteArray(responseBody, 0, responseBody.length);
iView.setImageBitmap(bitmap);
}
try {
FileOutputStream fos = new FileOutputStream(cacheFile);
fos.write(responseBody); //将文件写入缓冲文件中
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
@Override
public void onFailure(int statusCode, Header[] headers,
byte[] responseBody, Throwable error) {
if (statusCode == 304) {
Bitmap bitmap = BitmapFactory.decodeFile(cacheFile.getAbsolutePath());
iView.setImageBitmap(bitmap);
}else {
Toast.makeText(CacheImage.this, "网络错误", Toast.LENGTH_LONG).show();
}
}
});
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 将long类型的时间转换为固定格式的时间
* @param ms
* @return
*/
private String format(long ms) {
Date date = new Date(ms);
SimpleDateFormat format = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss z", Locale.ENGLISH);
String s = format.format(date);
return s;
}
}

这篇关于Android网络编程---利用AsyncHttpClient自定义缓冲图片的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

Python中Tkinter GUI编程详细教程

《Python中TkinterGUI编程详细教程》Tkinter作为Python编程语言中构建GUI的一个重要组件,其教程对于任何希望将Python应用到实际编程中的开发者来说都是宝贵的资源,这篇文... 目录前言1. Tkinter 简介2. 第一个 Tkinter 程序3. 窗口和基础组件3.1 创建窗

SpringBoot全局异常拦截与自定义错误页面实现过程解读

《SpringBoot全局异常拦截与自定义错误页面实现过程解读》本文介绍了SpringBoot中全局异常拦截与自定义错误页面的实现方法,包括异常的分类、SpringBoot默认异常处理机制、全局异常拦... 目录一、引言二、Spring Boot异常处理基础2.1 异常的分类2.2 Spring Boot默

自定义注解SpringBoot防重复提交AOP方法详解

《自定义注解SpringBoot防重复提交AOP方法详解》该文章描述了一个防止重复提交的流程,通过HttpServletRequest对象获取请求信息,生成唯一标识,使用Redis分布式锁判断请求是否... 目录防重复提交流程引入依赖properties配置自定义注解切面Redis工具类controller

Java使用Spire.Doc for Java实现Word自动化插入图片

《Java使用Spire.DocforJava实现Word自动化插入图片》在日常工作中,Word文档是不可或缺的工具,而图片作为信息传达的重要载体,其在文档中的插入与布局显得尤为关键,下面我们就来... 目录1. Spire.Doc for Java库介绍与安装2. 使用特定的环绕方式插入图片3. 在指定位

Android使用java实现网络连通性检查详解

《Android使用java实现网络连通性检查详解》这篇文章主要为大家详细介绍了Android使用java实现网络连通性检查的相关知识,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录NetCheck.Java(可直接拷贝)使用示例(Activity/Fragment 内)权限要求

2025最新版Android Studio安装及组件配置教程(SDK、JDK、Gradle)

《2025最新版AndroidStudio安装及组件配置教程(SDK、JDK、Gradle)》:本文主要介绍2025最新版AndroidStudio安装及组件配置(SDK、JDK、Gradle... 目录原生 android 简介Android Studio必备组件一、Android Studio安装二、A

Python多任务爬虫实现爬取图片和GDP数据

《Python多任务爬虫实现爬取图片和GDP数据》本文主要介绍了基于FastAPI开发Web站点的方法,包括搭建Web服务器、处理图片资源、实现多任务爬虫和数据可视化,同时,还简要介绍了Python爬... 目录一. 基于FastAPI之Web站点开发1. 基于FastAPI搭建Web服务器2. Web服务

kafka自定义分区器使用详解

《kafka自定义分区器使用详解》本文介绍了如何根据企业需求自定义Kafka分区器,只需实现Partitioner接口并重写partition()方法,示例中,包含cuihaida的数据发送到0号分区... 目录kafka自定义分区器假设现在有一个需求使用分区器的方法总结kafka自定义分区器根据企业需求

利用Python将PDF文件转换为PNG图片的代码示例

《利用Python将PDF文件转换为PNG图片的代码示例》在日常工作和开发中,我们经常需要处理各种文档格式,PDF作为一种通用且跨平台的文档格式,被广泛应用于合同、报告、电子书等场景,然而,有时我们需... 目录引言为什么选择 python 进行 PDF 转 PNG?Spire.PDF for Python

Java AOP面向切面编程的概念和实现方式

《JavaAOP面向切面编程的概念和实现方式》AOP是面向切面编程,通过动态代理将横切关注点(如日志、事务)与核心业务逻辑分离,提升代码复用性和可维护性,本文给大家介绍JavaAOP面向切面编程的概... 目录一、AOP 是什么?二、AOP 的核心概念与实现方式核心概念实现方式三、Spring AOP 的关