Skip to content

Commit

Permalink
imageloader迁移到app modul
Browse files Browse the repository at this point in the history
  • Loading branch information
pengjianbo committed Dec 30, 2015
1 parent f55b687 commit d9e3cb4
Show file tree
Hide file tree
Showing 11 changed files with 442 additions and 14 deletions.
12 changes: 6 additions & 6 deletions app/build.gradle
Expand Up @@ -34,11 +34,11 @@ dependencies {
compile 'com.android.support:design:23.1.1'
compile 'com.jakewharton:butterknife:7.0.1'
compile project(':galleryfinal')
// compile 'cn.finalteam:galleryfinal:1.3.1'
// compile 'cn.finalteam:galleryfinal:1.4.0'
compile 'com.baoyz.actionsheet:library:1.1.4'
compile project(':fresco')
compile project(':uil')
compile project(':glide')
compile project(':picasso')
compile project(':xuilts')
compile 'com.facebook.fresco:fresco:0.8.+'
compile 'com.github.bumptech.glide:glide:3.6.1'
compile 'com.squareup.picasso:picasso:2.5.2'
compile 'org.xutils:xutils:3.1.22'
compile 'com.nostra13.universalimageloader:universal-image-loader:1.9.5'
}
Expand Up @@ -38,9 +38,12 @@ public class IApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
//建议在application中配置
//设置主题
// ThemeConfig theme = ThemeConfig.CYAN
// ThemeConfig theme = new ThemeConfig.Builder()
// .build();
// //配置功能
// FunctionConfig functionConfig = new FunctionConfig.Builder()
// .setEnableCamera(true)
// .setEnableEdit(true)
Expand Down
Expand Up @@ -38,13 +38,13 @@
import cn.finalteam.galleryfinal.FunctionConfig;
import cn.finalteam.galleryfinal.GalleryFinal;
import cn.finalteam.galleryfinal.ThemeConfig;
import cn.finalteam.galleryfinal.imageloader.fresco.FrescoImageLoader;
import cn.finalteam.galleryfinal.imageloader.glide.GlideImageLoader;
import cn.finalteam.galleryfinal.imageloader.picasso.PicassoImageLoader;
import cn.finalteam.galleryfinal.imageloader.uil.UILImageLoader;
import cn.finalteam.galleryfinal.imageloader.xutils.XUtilsImageLoader;
import cn.finalteam.galleryfinal.model.PhotoInfo;
import cn.finalteam.galleryfinal.sample.loader.FrescoImageLoader;
import cn.finalteam.galleryfinal.sample.loader.GlideImageLoader;
import cn.finalteam.galleryfinal.sample.loader.PicassoImageLoader;
import cn.finalteam.galleryfinal.sample.loader.UILImageLoader;
import cn.finalteam.galleryfinal.sample.loader.XUtils2ImageLoader;
import cn.finalteam.galleryfinal.sample.loader.XUtilsImageLoader;
import cn.finalteam.galleryfinal.widget.HorizontalListView;

public class MainActivity extends AppCompatActivity {
Expand Down
@@ -0,0 +1,154 @@
/*
* Copyright (C) 2014 pengjianbo(pengjianbosoft@gmail.com), Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

package cn.finalteam.galleryfinal.sample.loader;

import android.app.Activity;
import android.content.Context;
import android.content.res.Resources;
import android.graphics.Bitmap;
import android.graphics.drawable.Animatable;
import android.graphics.drawable.Drawable;
import android.net.Uri;
import android.widget.ImageView;

import com.facebook.common.references.CloseableReference;
import com.facebook.common.util.UriUtil;
import com.facebook.datasource.DataSource;
import com.facebook.drawee.backends.pipeline.Fresco;
import com.facebook.drawee.controller.BaseControllerListener;
import com.facebook.drawee.drawable.ProgressBarDrawable;
import com.facebook.drawee.generic.GenericDraweeHierarchy;
import com.facebook.drawee.generic.GenericDraweeHierarchyBuilder;
import com.facebook.drawee.interfaces.DraweeController;
import com.facebook.drawee.view.DraweeHolder;
import com.facebook.imagepipeline.common.ResizeOptions;
import com.facebook.imagepipeline.core.ImagePipeline;
import com.facebook.imagepipeline.core.ImagePipelineConfig;
import com.facebook.imagepipeline.image.CloseableImage;
import com.facebook.imagepipeline.image.CloseableStaticBitmap;
import com.facebook.imagepipeline.image.ImageInfo;
import com.facebook.imagepipeline.request.ImageRequest;
import com.facebook.imagepipeline.request.ImageRequestBuilder;

import cn.finalteam.galleryfinal.widget.GFImageView;

/**
* Desction:fresco image loader
* Author:pengjianbo
* Date:15/12/24 下午9:34
*/
public class FrescoImageLoader implements cn.finalteam.galleryfinal.ImageLoader {

private Context context;

public FrescoImageLoader(Context context) {
this(context, Bitmap.Config.RGB_565);
}

public FrescoImageLoader(Context context, Bitmap.Config config) {
this.context = context;
ImagePipelineConfig imagePipelineConfig = ImagePipelineConfig.newBuilder(context)
.setBitmapsConfig(config)
.build();
Fresco.initialize(context, imagePipelineConfig);
}

@Override
public void displayImage(Activity activity, String path, GFImageView imageView, Drawable defaultDrawable, int width, int height) {
Resources resources = context.getResources();
GenericDraweeHierarchy hierarchy = new GenericDraweeHierarchyBuilder(resources)
.setFadeDuration(300)
.setPlaceholderImage(defaultDrawable)
.setFailureImage(defaultDrawable)
.setProgressBarImage(new ProgressBarDrawable())
.build();
final DraweeHolder<GenericDraweeHierarchy> draweeHolder = DraweeHolder.create(hierarchy, context);
imageView.setOnImageViewListener(new GFImageView.OnImageViewListener() {
@Override
public void onDetach() {
draweeHolder.onDetach();
}

@Override
public void onAttach() {
draweeHolder.onAttach();
}

@Override
public boolean verifyDrawable(Drawable dr) {
if (dr == draweeHolder.getHierarchy().getTopLevelDrawable()) {
return true;
}
return false;
}
});
Uri uri = new Uri.Builder()
.scheme(UriUtil.LOCAL_FILE_SCHEME)
.path(path)
.build();
displayImage(uri, new ResizeOptions(width, height), imageView, draweeHolder);
}

/**
* 加载远程图片
*
* @param url
* @param imageSize
*/
private void displayImage(Uri url, ResizeOptions imageSize, final ImageView imageView, final DraweeHolder<GenericDraweeHierarchy> draweeHolder) {
ImageRequest imageRequest = ImageRequestBuilder
.newBuilderWithSource(url)
.setResizeOptions(imageSize)//图片目标大小
.build();
ImagePipeline imagePipeline = Fresco.getImagePipeline();

final DataSource<CloseableReference<CloseableImage>> dataSource = imagePipeline.fetchDecodedImage(imageRequest, this);
DraweeController controller = Fresco.newDraweeControllerBuilder()
.setOldController(draweeHolder.getController())
.setImageRequest(imageRequest)
.setControllerListener(new BaseControllerListener<ImageInfo>() {
@Override
public void onFinalImageSet(String s, ImageInfo imageInfo, Animatable animatable) {
CloseableReference<CloseableImage> imageReference = null;
try {
imageReference = dataSource.getResult();
if (imageReference != null) {
CloseableImage image = imageReference.get();
if (image != null && image instanceof CloseableStaticBitmap) {
CloseableStaticBitmap closeableStaticBitmap = (CloseableStaticBitmap) image;
Bitmap bitmap = closeableStaticBitmap.getUnderlyingBitmap();
if (bitmap != null && imageView != null) {
imageView.setImageBitmap(bitmap);
}
}
}
} finally {
dataSource.close();
CloseableReference.closeSafely(imageReference);
}
}
})
.setTapToRetryEnabled(true)
.build();
draweeHolder.setController(controller);
}

@Override
public void clearMemoryCache() {

}
}
@@ -0,0 +1,50 @@
/*
* Copyright (C) 2014 pengjianbo(pengjianbosoft@gmail.com), Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

package cn.finalteam.galleryfinal.sample.loader;

import android.app.Activity;
import android.graphics.drawable.Drawable;

import com.bumptech.glide.Glide;
import com.bumptech.glide.load.engine.DiskCacheStrategy;

import cn.finalteam.galleryfinal.widget.GFImageView;

/**
* Desction:
* Author:pengjianbo
* Date:15/12/1 下午10:28
*/
public class GlideImageLoader implements cn.finalteam.galleryfinal.ImageLoader {

@Override
public void displayImage(Activity activity, String path, GFImageView imageView, Drawable defaultDrawable, int width, int height) {
Glide.with(activity)
.load("file://" + path)
.placeholder(defaultDrawable)
.error(defaultDrawable)
.override(width, height)
.diskCacheStrategy(DiskCacheStrategy.NONE) //不缓存到SD卡
.skipMemoryCache(true)
//.centerCrop()
.into(imageView);
}

@Override
public void clearMemoryCache() {
}
}
@@ -0,0 +1,63 @@
/*
* Copyright (C) 2014 pengjianbo(pengjianbosoft@gmail.com), Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

package cn.finalteam.galleryfinal.sample.loader;

import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.drawable.Drawable;

import com.squareup.picasso.MemoryPolicy;
import com.squareup.picasso.Picasso;

import java.io.File;

import cn.finalteam.galleryfinal.widget.GFImageView;

/**
* Desction:
* Author:pengjianbo
* Date:15/12/1 下午10:26
*/
public class PicassoImageLoader implements cn.finalteam.galleryfinal.ImageLoader {

private Bitmap.Config mConfig;

public PicassoImageLoader() {
this(Bitmap.Config.RGB_565);
}

public PicassoImageLoader(Bitmap.Config config) {
this.mConfig = config;
}

@Override
public void displayImage(Activity activity, String path, GFImageView imageView, Drawable defaultDrawable, int width, int height) {
Picasso.with(activity)
.load(new File(path))
.placeholder(defaultDrawable)
.error(defaultDrawable)
.config(mConfig)
.resize(width, height)
.centerInside()
.memoryPolicy(MemoryPolicy.NO_CACHE, MemoryPolicy.NO_STORE)
.into(imageView);
}

@Override
public void clearMemoryCache() {
}
}
@@ -0,0 +1,62 @@
/*
* Copyright (C) 2014 pengjianbo(pengjianbosoft@gmail.com), Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

package cn.finalteam.galleryfinal.sample.loader;

import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.drawable.Drawable;

import com.nostra13.universalimageloader.core.DisplayImageOptions;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.assist.ImageSize;
import com.nostra13.universalimageloader.core.imageaware.ImageViewAware;

import cn.finalteam.galleryfinal.widget.GFImageView;

/**
* Desction:
* Author:pengjianbo
* Date:15/10/10 下午5:52
*/
public class UILImageLoader implements cn.finalteam.galleryfinal.ImageLoader {

private Bitmap.Config mImageConfig;

public UILImageLoader() {
this(Bitmap.Config.RGB_565);
}

public UILImageLoader(Bitmap.Config config) {
this.mImageConfig = config;
}

@Override
public void displayImage(Activity activity, String path, GFImageView imageView, Drawable defaultDrawable, int width, int height) {
DisplayImageOptions options = new DisplayImageOptions.Builder()
.cacheOnDisk(false)
.cacheInMemory(false)
.bitmapConfig(mImageConfig)
.build();
ImageSize imageSize = new ImageSize(width, height);
ImageLoader.getInstance().displayImage("file://" + path, new ImageViewAware(imageView), options, imageSize, null, null);
}

@Override
public void clearMemoryCache() {

}
}

0 comments on commit d9e3cb4

Please sign in to comment.