Skip to content

Commit

Permalink
imageloader支持imageview扩展。
Browse files Browse the repository at this point in the history
  • Loading branch information
694551594 committed Nov 2, 2016
1 parent 0b57cee commit 8bb4ad1
Show file tree
Hide file tree
Showing 5 changed files with 48 additions and 30 deletions.
6 changes: 2 additions & 4 deletions app/src/main/java/com/test/banner/GlideImageLoader.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,10 @@
import android.widget.ImageView;

import com.bumptech.glide.Glide;
import com.youth.banner.loader.ImageLoader;
import com.youth.banner.loader.ImageViewImageLoader;

import java.io.File;


public class GlideImageLoader implements ImageLoader {
public class GlideImageLoader extends ImageViewImageLoader {
@Override
public void displayImage(Context context, Object path, ImageView imageView) {
//具体方法内容自己去选择,次方法是为了减少banner过多的依赖第三方包,所以将这个权限开放给使用者去选择
Expand Down
21 changes: 9 additions & 12 deletions banner/banner-banner.iml
Original file line number Diff line number Diff line change
Expand Up @@ -66,14 +66,6 @@
<sourceFolder url="file://$MODULE_DIR$/src/main/jni" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/main/rs" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/main/shaders" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/res" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/resources" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/assets" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/aidl" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/java" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/jni" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/rs" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/shaders" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/test/res" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/test/resources" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/test/assets" type="java-test-resource" />
Expand All @@ -82,7 +74,14 @@
<sourceFolder url="file://$MODULE_DIR$/src/test/jni" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/test/rs" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/test/shaders" isTestSource="true" />
<excludeFolder url="file://$MODULE_DIR$/build/docs" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/res" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/resources" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/assets" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/aidl" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/java" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/jni" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/rs" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/shaders" isTestSource="true" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/annotations" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/blame" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/bundles" />
Expand All @@ -100,12 +99,10 @@
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/symbols" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/transforms" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/typedefs.txt" />
<excludeFolder url="file://$MODULE_DIR$/build/libs" />
<excludeFolder url="file://$MODULE_DIR$/build/outputs" />
<excludeFolder url="file://$MODULE_DIR$/build/poms" />
<excludeFolder url="file://$MODULE_DIR$/build/tmp" />
</content>
<orderEntry type="jdk" jdkName="Android API 23 Platform" jdkType="Android SDK" />
<orderEntry type="jdk" jdkName="Android API 23 Platform (1)" jdkType="Android SDK" />
<orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="library" exported="" name="support-annotations-23.4.0" level="project" />
<orderEntry type="library" exported="" name="support-v4-23.4.0" level="project" />
Expand Down
28 changes: 18 additions & 10 deletions banner/src/main/java/com/youth/banner/Banner.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@
import android.content.Context;
import android.content.res.TypedArray;
import android.os.Handler;
import android.os.Message;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.util.AttributeSet;
Expand Down Expand Up @@ -53,7 +52,7 @@ public class Banner extends FrameLayout implements OnPageChangeListener {
private int scaleType=0;
private List<String> titles;
private List<?> imageUrls;
private List<ImageView> imageViews;
private List<View> imageViews;
private List<ImageView> indicatorImages;
private Context context;
private BannerViewPager viewPager;
Expand Down Expand Up @@ -257,11 +256,20 @@ private void setImageList(List<?> imagesUrl) {
count = imagesUrl.size();
initImages();
for (int i = 0; i <= count + 1; i++) {
ImageView iv = new ImageView(context);
if (scaleType==0)
iv.setScaleType(ScaleType.FIT_XY);
else
iv.setScaleType(ScaleType.CENTER_CROP);
View imageView = null;
if (imageLoader != null) {
imageView = imageLoader.createImageView(context);
}
if (imageView == null) {
imageView = new ImageView(context);
}
if (imageView instanceof ImageView) {
if (scaleType==0) {
((ImageView) imageView).setScaleType(ScaleType.FIT_XY);
} else {
((ImageView) imageView).setScaleType(ScaleType.CENTER_CROP);
}
}
Object url = null;
if (i == 0) {
url = imagesUrl.get(count - 1);
Expand All @@ -270,9 +278,9 @@ private void setImageList(List<?> imagesUrl) {
} else {
url = imagesUrl.get(i - 1);
}
imageViews.add(iv);
imageViews.add(imageView);
if (imageLoader!=null)
imageLoader.displayImage(context, url, iv);
imageLoader.displayImage(context, url, imageView);
else
Log.e(tag, "Please set images loader.");
}
Expand Down Expand Up @@ -381,7 +389,7 @@ public boolean isViewFromObject(View arg0, Object arg1) {
@Override
public Object instantiateItem(ViewGroup container, final int position) {
container.addView(imageViews.get(position));
ImageView view = imageViews.get(position);
View view = imageViews.get(position);
if (listener!=null) {
view.setOnClickListener(new OnClickListener() {
@Override
Expand Down
8 changes: 4 additions & 4 deletions banner/src/main/java/com/youth/banner/loader/ImageLoader.java
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
package com.youth.banner.loader;

import android.app.Activity;
import android.content.Context;
import android.widget.ImageView;
import android.view.View;

import java.io.Serializable;


public interface ImageLoader extends Serializable {
public interface ImageLoader<T extends View> extends Serializable {

void displayImage(Context context, Object path, ImageView imageView);
void displayImage(Context context, Object path, T imageView);

T createImageView(Context context);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package com.youth.banner.loader;

import android.content.Context;
import android.widget.ImageView;


public abstract class ImageViewImageLoader implements ImageLoader<ImageView> {

@Override
public ImageView createImageView(Context context) {
ImageView imageView = new ImageView(context);
return imageView;
}

}

0 comments on commit 8bb4ad1

Please sign in to comment.