Android头像缓存
来源:互联网 发布:mac怎么压缩图片 编辑:程序博客网 时间:2024/04/30 08:16
缓存用户头像,如果本地保存有头像照片,加载本地照片,如果本地没有,从网络上获取本缓存到本地。
// 判断sdcard上有没有这个图,有从sdcard上取
// 没有再从网上取
//获取头像存储路径
public static final String IMAGE_PATH = Environment
.getExternalStorageDirectory().getAbsolutePath()
+ CrmConstants.CACHE_DIR_PATH;
//获取SharedPreferences中缓存头像的url
String pre_image_url = getLoginUrl();
//获取头像的图片的名字
String imageFileName = info.userurl.substring(info.userurl
.lastIndexOf("/") + 1);
File file = new File(IMAGE_PATH, imageFileName);
if (null == pre_image_url) {
saveLoginUrl(info.userurl);
ImageLoaderUtil.disPlayNetworkImage(mContext, info.userurl, "",userlogo);
} else if (pre_image_url.equals(info.userurl)) {
if (file.exists()) {
ImageLoaderUtil.displaySdcardImage(mContext, IMAGE_PATH + "/"+ imageFileName, userlogo);
} else {
ImageLoaderUtil.disPlayNetworkImage(mContext, info.userurl, "",userlogo);
}
} else if (!pre_image_url.equals(info.userurl)) {
saveLoginUrl(info.userurl);
ImageLoaderUtil.disPlayNetworkImage(mContext, info.userurl, "",
userlogo);
}
1. 工具方法: getLoginUrl();获取以前的缓存照片地址url(使用SharedPreferences)
private String getLoginUrl() {
SharedPreferences sharedPreferences = mContext.getSharedPreferences(
USER_IMG, Context.MODE_PRIVATE);
String username = sharedPreferences.getString(USERINFO_URL, null);
return username;
}
private void saveLoginUrl(String username) {
try {
SharedPreferences sharedPreferences = mContext
.getSharedPreferences(USER_IMG, Context.MODE_PRIVATE);
Editor editor = sharedPreferences.edit();
editor.clear();
editor.putString(USERINFO_URL, username);
editor.commit();
} catch (Exception e) {
}
}
2. 工具类ImageLoaderUtil:从本地加载图片和从网络加载图片方法
public class ImageLoaderUtil {
public static final String IMAGE_PATH=Environment.getExternalStorageDirectory()
.getAbsolutePath() + CrmConstants.CACHE_DIR_PATH;
private static ImageLoaderConfiguration imageLoaderConfiguration=null;
//图片加载参数初始化配置
private static ImageLoaderConfiguration getConfig(Context context){
if(imageLoaderConfiguration==null){
imageLoaderConfiguration=new ImageLoaderConfiguration.Builder(context).discCacheSize(1025*1024*50).discCacheFileCount(50).build();
}
return imageLoaderConfiguration;
}
//从网络加载图片
public static void disPlayNetworkImage(final Context context,String imageUrl,String imagePath,ImageView imageView){
ImageLoader imageLoader=ImageLoader.getInstance();
imageLoader.init(getConfig(context));
imageLoader.displayImage(imageUrl, imageView, new ImageLoadingListener() {
@Override
public void onLoadingStarted(String imageUri, View view) {
}
@Override
public void onLoadingFailed(String imageUri, View view,
FailReason failReason) {
}
@Override
public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {
try{
ByteArrayOutputStream byteArrayOutputStream=new ByteArrayOutputStream();
loadedImage.compress(CompressFormat.PNG, 100, byteArrayOutputStream);
byte[] imageData=byteArrayOutputStream.toByteArray();
String imageName=imageUri.substring(imageUri.lastIndexOf("/")+1);
Tools.writeToSdcard(context,IMAGE_PATH, imageName, imageData);
}catch(Exception e){
e.printStackTrace();
}
}
@Override
public void onLoadingCancelled(String imageUri, View view) {
}
});
}
//从本地加载图片
public static void displaySdcardImage(Context context,String imageUrl ,ImageView imageView){
ImageLoader imageLoader=ImageLoader.getInstance();
imageLoader.init(getConfig(context));
imageUrl="file://"+imageUrl;
imageLoader.displayImage(imageUrl, imageView);
}
//从sdcard上读取数据
public static byte[] readSdcard(String filePathName){
FileInputStream fileInputStream=null;
byte[] data=null;
try{
fileInputStream=new FileInputStream(filePathName);
int size=fileInputStream.available();
data=new byte[size];
fileInputStream.read(data);
}catch(Exception e){
e.printStackTrace();
}finally{
if(fileInputStream!=null){
try{
fileInputStream.close();
}catch(Exception e){
e.printStackTrace();
}
}
}
return data;
}
//将数据写入到sdcard上
public static void writeToSdcard(Context context,String path,String fileName,byte[] data){
String sdcard_state=Environment.getExternalStorageState();
if(Environment.MEDIA_MOUNTED.equals(sdcard_state)){
FileOutputStream fileOutputStream=null;
try{
File fileDirectory=new File(path);
if(!fileDirectory.exists()){
fileDirectory.mkdirs();
}
File file=new File(fileDirectory,fileName);
if(file.exists()){
file.delete();
}
file.createNewFile();
fileOutputStream=new FileOutputStream(file);
fileOutputStream.write(data);
}catch(Exception e){
e.printStackTrace();
}finally{
try{
if(fileOutputStream!=null){
fileOutputStream.close();
fileOutputStream=null;
}
}catch(Exception e2){
e2.printStackTrace();
}
}
}
}
}
- Android头像缓存
- android手机创建图片,头像缓存
- android:拍照/本地上传头像+本地缓存
- 一种头像缓存策略
- android头像
- Android-切换头像(设置圆形头像)
- 联系人头像 android
- android头像上传功能
- Android 圆形头像显示
- Android 笔记 - 圆形头像
- android上传头像
- android 上传头像
- 转:Android上传头像
- android 圆形头像
- Android之圆头像
- 【android】 圆角头像
- Android头像更换
- Android:圆形头像
- 多线程之线程创建的两种方法(Java)
- Object源码后记
- iOS问题(iOS9 + Xcode7)
- activiti流程设计器activiti designer在eclipse中的安装。
- Geometric Theory for 3D Graphics
- Android头像缓存
- javascript canvas 实现下雪效果 圣诞节专用
- A letter to our daughter——马克·扎克伯克
- STL之vector
- Android的SlidingDrawer用法总结
- SQL Server DATEDIFF() 函数
- 15北京师范大学新生同步赛E题
- 每天还是要写一写的
- 3D APIs