android:显示网络图片,并对其缓存
来源:互联网 发布:公寓值得投资吗 知乎 编辑:程序博客网 时间:2024/05/16 09:40
android:显示网络图片,并对其缓存,一下为全部的代码。
注意别忘了在清单文件中添加网络请求权限
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
‘
1.布局文件
activity_main.xml
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="activity.smartdot.com.imageload.MainActivity"> <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="@string/intent_address" android:id="@+id/et_intenet_address" android:text="http://photocdn.sohu.com/20161221/Img476479156.jpg"/> <Button android:id="@+id/et_intenet_load" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_below="@id/et_intenet_address" android:onClick="onClick" android:text="@string/intent_load"/> <ScrollView android:layout_below="@id/et_intenet_load" android:layout_width="match_parent" android:layout_height="match_parent"> <ImageView android:id="@+id/html_source" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </ScrollView></LinearLayout>
MainActivity.java
package activity.smartdot.com.imageload;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.support.v7.app.AppCompatActivity;import android.util.Base64;import android.view.View;import android.widget.EditText;import android.widget.ImageView;import java.io.File;import java.io.FileOutputStream;import java.io.InputStream;import java.net.HttpURLConnection;import java.net.URL;public class MainActivity extends AppCompatActivity { private EditText et_intenet_address; private ImageView html_source; /** * 创建消息管理类 */ private Handler handler = new Handler(){ @Override public void handleMessage(Message msg) { super.handleMessage(msg); switch (msg.what) { case 100: html_source.setImageBitmap((Bitmap)msg.obj); } } }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); et_intenet_address = (EditText) findViewById(R.id.et_intenet_address); html_source = (ImageView) findViewById(R.id.html_source); } public void onClick(View v) { final String urlString = et_intenet_address.getText().toString().trim(); new Thread() { @Override public void run() { String path = Base64.encodeToString(urlString.getBytes(),Base64.DEFAULT);//文件加密 File file = new File(getCacheDir(),path); //判断是否存在该文件,如果存在则读取缓存,存在则进行网络下载 if(file.exists() && file.length()>0) { Bitmap bitmap =BitmapFactory.decodeFile(file.getAbsolutePath()); Message msg = Message.obtain(); msg.obj = bitmap; msg.what = 100; handler.sendMessage(msg); return ; } URL url = null; try { url = new URL(urlString); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setRequestMethod("GET"); conn.setConnectTimeout(5000);//设置网络请求时间 int code = conn.getResponseCode(); if(code == 200) { InputStream is = conn.getInputStream(); //getCacheDir获取缓存路径 FileOutputStream fos = new FileOutputStream(file); int len = -1; byte[] buffer = new byte[1024]; while((len = is.read(buffer)) != -1) { fos.write(buffer); } fos.close(); is.close(); //通过BitmapFactory工厂创建Bitmap位图对象 Bitmap bitmap =BitmapFactory.decodeFile(file.getAbsolutePath()); Message msg = Message.obtain(); msg.obj = bitmap; msg.what = 100; //发送消息 handler.sendMessage(msg); } } catch (java.io.IOException e) { e.printStackTrace(); } } }.start(); }}
0 0
- android:显示网络图片,并对其缓存
- Android网络操作-下载网络图片并将其显示(慕课网笔记)
- android加载网络图片并缓存,对图片进行点击打开相应链接
- android下载网络图片并缓存
- android下载网络图片并缓存
- android下载网络图片并缓存
- android下载网络图片并缓存
- android下载网络图片并缓存
- android下载网络图片并缓存
- Android读取网络图片并缓存
- android下载网络图片并缓存
- android网络下载图片并缓存
- android下载网络图片并缓存
- android下载网络图片并缓存
- android下载网络图片并缓存
- Android 加载网络图片并做缓存
- android ImageLoader 缓存下载显示网络图片
- Android选取相册中的图片并对其进行压缩
- 贪心算法之背包问题
- 身份证验证 工具类
- 初级汇编程序(二)
- iOS Provisioning Profile(Certificate)与Code Signing详解
- Android软键盘(二) 软键盘弹出布局上移的问题
- android:显示网络图片,并对其缓存
- AngularJS基础知识
- MongoDB的条件操作符以及排序
- 对pixhawk软件环境的搭建的补充
- Python开发 LTE频点/频率换算工具V0.1
- Android源码下载
- 大学感悟【九】
- 如何使用Android中的OpenGL ES媒体效果
- Android点击一次按钮,布局显示,第二次点击,布局消失;点一次出现,再点一次消失逻辑。