首先看下本 demo实现的功能
1:实现网络图片的加载显示
2:点击图片底部弹出popupwindow
3:点击分享 实现单个图片分享到:微信,朋友圈,QQ,QQ控件(调用系统)
4:点击下载 实现图片的下载 ,并通知系统相册进行更新
调用开源框架:ImageLoader (实现图片的加载) 使用githup共享的开源代码实现系统分享的改写
githup 上的连接记不太清了 等下会放出源码 就一个工具类的代码。有兴趣的可以去研究研究
项目里注释写的挺详细的 ,不说废话了直接上代码 :
imageloader配置
package com.example.downloaddemo;
import java.io.File;
import java.util.HashMap;
import java.util.Map;
import android.app.Application;
import android.app.Service;
import android.content.Context;
import android.graphics.Bitmap.CompressFormat;
import android.os.Vibrator;
import com.nostra13.universalimageloader.cache.disc.impl.UnlimitedDiscCache;
import com.nostra13.universalimageloader.cache.disc.naming.Md5FileNameGenerator;
import com.nostra13.universalimageloader.cache.memory.impl.UsingFreqLimitedMemoryCache;
import com.nostra13.universalimageloader.core.DisplayImageOptions;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;
import com.nostra13.universalimageloader.core.assist.QueueProcessingType;
import com.nostra13.universalimageloader.core.download.BaseImageDownloader;
import com.nostra13.universalimageloader.utils.StorageUtils;
/**
* Application
*/
public class LocationApplication extends Application {
public static ImageLoader imageLoader;
@Override
public void onCreate() {
super.onCreate();
File cacheDir = StorageUtils.getOwnCacheDirectory(
getApplicationContext(), "imageloader/hire/Cache");
imageLoader = ImageLoader.getInstance();
ImageLoaderConfiguration config3 = new ImageLoaderConfiguration.Builder(
getApplicationContext())
.memoryCacheExtraOptions(480, 800)
// max width, max height即每个缓存文件最大长 .discCacheExtraOptions(480,
// 800, CompressFormat.JPEG, 75, null) // Can slow ImageLoader,
// use it carefully (Better don't use it)/设置缓存详细信息不要设置
.threadPoolSize(3)
// 线程池内加载的数 .threadPriority(Thread.NORM_PRIORITY - 2)
.denyCacheImageMultipleSizesInMemory()
.memoryCache(new UsingFreqLimitedMemoryCache(2 * 1024 * 1024))
// You can pass your own memory cache
// implementation//你可通过自己的内存缓存实 .memoryCacheSize(2 * 1024 *
// 1024)
.discCacheSize(50 * 1024 * 1024)
.discCacheFileNameGenerator(new Md5FileNameGenerator())
// 将保存的url名称用MD5加密
.tasksProcessingOrder(QueueProcessingType.FIFO)
.discCacheFileCount(100) // 缓存文件数量
.discCache(new UnlimitedDiscCache(cacheDir))// 文件储存路径
.defaultDisplayImageOptions(DisplayImageOptions.createSimple())
.imageDownloader(
new BaseImageDownloader(getApplicationContext(),
5 * 1000, 30 * 1000)) // connectTimeout (5 s),
// readTimeout (30
// s)超时时间
.writeDebugLogs() // Remove for release app
.build();
// Initialize ImageLoader with configuration.
imageLoader.init(config3);
}
}
封装好的分享工具类:
pack