Android开发中常常有用户头像显示,似乎大多数都是圆形显示,如果每次加载网络头像,会频繁的请求网络,所以本文主要说的是登录时的头像网络加载和缓存到本地,以便于下次加载时直接从本地获取即可。

效果图:

自定义控件实现圆形头像显示请看, Android自定义ImageView实现图片圆形 ,椭圆和矩形圆角显示 这篇博客即可。

public class MainActivity extends Activity implements OnClickListener {private ImageView mImageView, mImageView2;String url = " http://avatar.csdn.net/8/6/0/1_dickyqie.jpg";private String mFileName;private String mSaveMessage;Util util = new Util();private Bitmap mBitmap;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);initView();}private void initView() {// TODO Auto-generated method stubmImageView = (ImageView) findViewById(R.id.personal_image);mImageView2 = (ImageView) findViewById(R.id.personal_image2);findViewById(R.id.button1).setOnClickListener(this);findViewById(R.id.button2).setOnClickListener(this);}@Overridepublic void onClick(View v) {// TODO Auto-generated method stubswitch (v.getId()) {case R.id.button1:new Thread(connectNet).start();break;case R.id.button2:Bitmap ben = BitmapFactory.decodeFile(Util.ALBUM_PATH + mFileName);mImageView2.setImageBitmap(ben);break;default:break;}}private Runnable saveFileRunnable = new Runnable() {@Overridepublic void run() {try {util.saveFile(mBitmap, mFileName);mSaveMessage = "图片保存成功!";} catch (IOException e) {mSaveMessage = "图片保存失败!";e.printStackTrace();}messageHandler.sendMessage(messageHandler.obtainMessage());}};private Handler messageHandler = new Handler() {@Overridepublic void handleMessage(Message msg) {Toast.makeText(MainActivity.this, mSaveMessage, 1).show();}};/** 连接网络 由于在4.0中不允许在主线程中访问网络,所以需要在子线程中访问*/private Runnable connectNet = new Runnable() {@Overridepublic void run() {try {String filePath = url;mFileName = "test.jpg";// 以下是取得图片的两种方法// 方法1:取得的是byte数组, 从byte数组生成bitmapbyte[] data = util.getImage(filePath);if (data != null) {mBitmap = BitmapFactory.decodeByteArray(data, 0,data.length);} else {Toast.makeText(MainActivity.this, "Image error!", 1).show();}// ******** 方法2:取得的是InputStream,直接从InputStream生成bitmap// mBitmap =// BitmapFactory.decodeStream(util.getImageStream(filePath));// 发送消息,通知handler在主线程中更新UIconnectHanlder.sendEmptyMessage(0);} catch (Exception e) {Toast.makeText(MainActivity.this, "无法链接网络!", 1).show();e.printStackTrace();}}};private Handler connectHanlder = new Handler() {@Overridepublic void handleMessage(Message msg) {// 更新UI,显示图片if (mBitmap != null) {mImageView.setImageBitmap(mBitmap);// display imagenew Thread(saveFileRunnable).start();}}};}

由于代码太多,完整代码未给出,源码直接下载即可

源码点击下载:https://github.com/DickyQie/android-cache

登录圆形头像之网络加载与缓存到本地相关推荐

  1. iOS网络加载图片缓存策略之ASIDownloadCache缓存优化

    iOS网络加载图片缓存策略之ASIDownloadCache缓存优化 在我们实际工程中,很多情况需要从网络上加载图片,然后将图片在imageview中显示出来,但每次都要从网络上请求,会严重影响用户体 ...

  2. LruCache:从网络加载图片缓存实例

    OOM异常 堆内存用于存储实例对象,当程序不断创建对象,并且对象都有引用指向,那么垃圾回收机制就不会清理这些对象,当对象多到挤满堆内存的上限后,就产生OOM异常.Android系统为每个应用程序使用的 ...

  3. java加载图片到缓存_Android实现图片异步加载并缓存到本地

    在android应用开发的时候,加载网络图片是一个非常重要的部分,很多图片不可能放在本地,所以就必须要从服务器或者网络读取图片. 软引用是一个现在非常流行的方法,用户体验比较好,不用每次都需要从网络下 ...

  4. Retrofit网络加载库二次封装支持RxJava与Flow-HttpUtils

    Retrofit网络加载库二次封装支持RxJava与Flow-HttpUtils HttpUtils是Retrofit网络加载库二次封装支持RxJava与Flow,包含网络加载动画.activity销 ...

  5. java加载自己写的类_java 自定义类加载器从磁盘或网络加载类

    一.编写自定义类加载器类 package com.mybatis.entity; import java.io.ByteArrayOutputStream; import java.io.File; ...

  6. android快捷开发之Retrofit网络加载框架的简单使用

    大家都知道,安卓最大的特点就是开源化,这自然会产生很多十分好用的第三方API,而基本每一个APP都会与网络操作和缓存处理机制打交道,当然,你可以自己通过HttpUrlConnection再通过返回数据 ...

  7. android 自定义域名,Android基于Retrofit2改造的可设置多域名的网络加载框架

    Android基于Retrofit2改造的可设置多域名的网络加载框架 1.使用说明 添加仓库 ``` allprojects { repositories { google() jcenter() m ...

  8. Flutter Image从网络加载图片刷新、强制重新渲染

    Flutter自带的Image.network()从网络加载图片后,如果服务器上的图片改变了,但是url没变,就算使用setState进行rebuild,图片也不会跟着更新.这是因为Image自带了c ...

  9. Android:ViewPager详解(异步网络加载图片,带图片缓存,并带导航小圆点)

    android 应用中,如欢迎指引页面, 和图片轮播功能, 或者更多的内容在一页显示不了,要分成多个页面,这时候viewpager是很好用的. 首先看下效果: 下面是一个例子,带异步网络加载图片,并带 ...

最新文章

  1. vuex+vue-router拦截
  2. resin php,resin竟然开始支持PHP
  3. kettle插入更新流程
  4. 如何用Java代码解析json
  5. python中easygui有几种_一、Python 模块EasyGui详细介绍
  6. linux bzip指定名称,Linux命令学习手册-bzip2命令
  7. Vue实例-本地留言板
  8. 图像融合(三)-- 拉普拉斯金字塔
  9. 使用docker+tomcat部署jenkins
  10. pku 2976 Dropping tests 01分数规划
  11. USB设备仿真框架设计指南——10.用USB设备模拟器测试USB驱动程序
  12. java生成的条形码扫不了_JAVA 生成扫描条形码
  13. linux代码丢了,Linux 使用ss命令代替 netstat
  14. 2016阿里安全工程师实习生招聘笔试题
  15. 互联网思维笔记(一)
  16. Quarzt的学习以及系统配置自启动
  17. eNSP配置静态路由实例
  18. 服务器所属文件变成nobody,NFS使用autofs挂接后文件属主显示为nobody
  19. AIS数据压缩-改进的DP算法(Improved DP algorithm)
  20. pandas爬取数据示例网页

热门文章

  1. 计算机组成原理知识点汇总(考研用)——第三章:存储系统
  2. MySQL自增id的情况
  3. linux下网卡参数配置,linux网卡配置参数详解!
  4. 新的iMac2021怎么样?为什么对新iMac感到失望
  5. 服务器上出现应用程序错误。此应用程序的当前自定义错误设置禁止远程查看应用程序错误的详细信息(出于安全原因)。未能加载文件或程序集“XXXXXX”或它的某一个依赖项。拒绝访问。
  6. java开发环境配置(Win10)
  7. mysql全联合查询,MySQL中的联合查询(内联、左联、外联、右联、全联)
  8. app爬虫appium获取借贷宝,无忧等等(配置文件)
  9. python SVM算法实例
  10. 运用python工具画图