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(mContextIMAGE_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();

}

}

}

}

}

 

0 1