Skip to content

Commit

Permalink
删除AndroidImageSlider广告轮播控件,添加使用banner框架支持
Browse files Browse the repository at this point in the history
  • Loading branch information
yaozs committed Mar 16, 2017
1 parent a775962 commit 827dbd8
Show file tree
Hide file tree
Showing 4 changed files with 157 additions and 118 deletions.
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,7 @@
* 16.12.22 新增YzsBaseHomeActivity(首页base父类)
* 17.03.09 彻底删除所有关于baseactivity的包,使其依赖于YzsBaseActivity项目,优化代码
* 17.03.15 更新YzsBaseActivity最新依赖
* 17.03.16 删除AndroidImageSlider广告轮播控件,添加使用banner框架支持

![image](https://github.com/yaozs/YzsLib/blob/master/app/src/main/res/mipmap-xxxhdpi/icon.png)

Expand Down
Original file line number Diff line number Diff line change
@@ -1,18 +1,23 @@
package com.yzs.yzslibrarydemo.activity;

import android.content.Context;
import android.os.Bundle;

import com.daimajia.slider.library.Animations.DescriptionAnimation;
import com.daimajia.slider.library.Indicators.PagerIndicator;
import com.daimajia.slider.library.SliderLayout;
import com.daimajia.slider.library.SliderTypes.BaseSliderView;
import com.daimajia.slider.library.SliderTypes.TextSliderView;
import com.daimajia.slider.library.Tricks.ViewPagerEx;
import com.orhanobut.logger.Logger;
import android.widget.ImageView;

import com.bumptech.glide.Glide;
import com.youth.banner.Banner;
import com.youth.banner.BannerConfig;
import com.youth.banner.Transformer;
import com.youth.banner.listener.OnBannerListener;
import com.youth.banner.loader.ImageLoader;
import com.yzs.yzsbaseactivitylib.activity.YzsBaseActivity;
import com.yzs.yzsbaseactivitylib.entity.EventCenter;
import com.yzs.yzslibrary.util.ToastUtils;
import com.yzs.yzslibrarydemo.R;

import java.util.ArrayList;
import java.util.List;

/**
* Author: 姚智胜
* Version: V1.0版本
Expand All @@ -21,122 +26,163 @@
*/
public class AndroidImageSliderActivity extends YzsBaseActivity {
private static final String TAG = "AndroidImageSliderActivity";
private SliderLayout mSliderLayout;
private PagerIndicator indicator;
private Banner banner;
private List<String> images;

@Override
protected void initContentView(Bundle bundle) {
setContentView(R.layout.ac_image_slider);
images = new ArrayList<>();
}

@Override
protected void initView() {
//容器
mSliderLayout = (SliderLayout) findViewById(R.id.slider);
//指示器,那些小点
indicator = (PagerIndicator) findViewById(R.id.custom_indicator);
}
banner = (Banner) findViewById(R.id.banner);

@Override
protected void initLogic() {
initSlider();
}

@Override
protected void getBundleExtras(Bundle extras) {

protected void initLogic() {
images.add("http://img2.imgtn.bdimg.com/it/u=819201812,3553302270&fm=214&gp=0.jpg");
images.add("http://pic60.nipic.com/file/20150303/12216461_110913232000_2.jpg");
images.add("http://pic44.nipic.com/20140717/12432466_121957328000_2.jpg");
images.add("http://sucai.qqjay.com/qqjayxiaowo/201210/26/1.jpg");
images.add("http://pic41.nipic.com/20140518/18521768_133448822000_2.jpg");
// easyUse();
allUse();
}

@Override
protected void onEventComing(EventCenter center) {

/**
* 简单使用
*/
private void easyUse() {
//设置图片加载器
banner.setImageLoader(new GlideImageLoader());
//设置图片集合
banner.setImages(images);
//banner设置方法全部调用完毕时最后调用
banner.start();
}

private void initSlider() {
//SliderView有两种DefaultSliderView,TextSliderView用法一致,但是DefaultSliderView没有显示文字的功能
//显示图片和文字
TextSliderView textSliderView = new TextSliderView(this);
textSliderView.setScaleType(BaseSliderView.ScaleType.CenterCrop);
textSliderView.image("http://tupian.enterdesk.com/2013/mxy/12/10/15/3.jpg");
textSliderView.description("新品推荐");
textSliderView.setOnSliderClickListener(new BaseSliderView.OnSliderClickListener() {
@Override
public void onSliderClick(BaseSliderView baseSliderView) {
showShortToast("新品推荐");

}
});
TextSliderView textSliderView2 = new TextSliderView(this);
textSliderView2.setScaleType(BaseSliderView.ScaleType.CenterCrop);
textSliderView2.image("http://desk.fd.zol-img.com.cn/t_s960x600c5/g5/M00/01/0E/ChMkJlbKwaOIN8zJAAs5DadIS-IAALGbQPo5ngACzkl365.jpg");
textSliderView2.description("时尚男装");

textSliderView2.setOnSliderClickListener(new BaseSliderView.OnSliderClickListener() {
/**
* 详细使用
*/
private void allUse() {
//设置banner样式
banner.setBannerStyle(BannerConfig.NUM_INDICATOR);
//设置图片加载器
banner.setImageLoader(new GlideImageLoader());
//设置图片集合
banner.setImages(images);
//设置banner动画效果
banner.setBannerAnimation(Transformer.DepthPage);
//设置标题集合(当banner样式有显示title时)
// banner.setBannerTitles(titles);
//设置自动轮播,默认为true
banner.isAutoPlay(true);
//设置轮播时间
banner.setDelayTime(1500);
//设置指示器位置(当banner模式中有指示器时)
banner.setIndicatorGravity(BannerConfig.CENTER);

banner.setOnBannerListener(new OnBannerListener() {
@Override
public void onSliderClick(BaseSliderView baseSliderView) {
showShortToast("时尚男装");

public void OnBannerClick(int position) {
ToastUtils.showShortToast(AndroidImageSliderActivity.this,"---"+position+"------");
}
});
//banner设置方法全部调用完毕时最后调用
banner.start();
}


TextSliderView textSliderView3 = new TextSliderView(this);
textSliderView3.setScaleType(BaseSliderView.ScaleType.CenterCrop);
textSliderView3.image("http://m.360buyimg.com/mobilecms/s300x98_jfs/t1363/77/1381395719/60705/ce91ad5c/55dd271aN49efd216.jpg");
textSliderView3.description("家电秒杀");


textSliderView3.setOnSliderClickListener(new BaseSliderView.OnSliderClickListener() {
@Override
public void onSliderClick(BaseSliderView baseSliderView) {
showShortToast("家电秒杀");

}
});


//添加到容器中
mSliderLayout.addSlider(textSliderView);
mSliderLayout.addSlider(textSliderView2);
mSliderLayout.addSlider(textSliderView3);

//使用默认的指示器
// mSliderLayout.setPresetIndicator(SliderLayout.PresetIndicators.Center_Bottom);

mSliderLayout.setCustomIndicator(indicator);
//阴影显示的动画效果
mSliderLayout.setCustomAnimation(new DescriptionAnimation());
//图片的转场效果
// mSliderLayout.setPresetTransformer(SliderLayout.Transformer.RotateUp);
mSliderLayout.setDuration(3000);

mSliderLayout.addOnPageChangeListener(new ViewPagerEx.OnPageChangeListener() {
@Override
public void onPageScrolled(int i, float v, int i1) {
@Override
protected void getBundleExtras(Bundle extras) {

Logger.d(TAG, "onPageScrolled");
}

}
@Override
protected void onEventComing(EventCenter center) {

@Override
public void onPageSelected(int i) {
}

Logger.d(TAG, "onPageSelected");
}

@Override
public void onPageScrollStateChanged(int i) {
@Override
public void onDestroy() {
banner = null;
super.onDestroy();

Logger.d(TAG, "onPageScrollStateChanged");
}
});
}

public class GlideImageLoader extends ImageLoader {
@Override
public void displayImage(Context context, Object path, ImageView imageView) {
/**
注意:
1.图片加载器由自己选择,这里不限制,只是提供几种使用方法
2.返回的图片路径为Object类型,由于不能确定你到底使用的那种图片加载器,
传输的到的是什么格式,那么这种就使用Object接收和返回,你只需要强转成你传输的类型就行,
切记不要胡乱强转!
*/

//Glide 加载图片简单用法
Glide.with(context).load(path).into(imageView);

//Picasso 加载图片简单用法
// Picasso.with(context).load(path).into(imageView);

//用fresco加载图片简单用法,记得要写下面的createImageView方法
// Uri uri = Uri.parse((String) path);
// imageView.setImageURI(uri);
}

//提供createImageView 方法,如果不用可以不重写这个方法,主要是方便自定义ImageView的创建
// @Override
// public ImageView createImageView(Context context) {
// //使用fresco,需要创建它提供的ImageView,当然你也可以用自己自定义的具有图片加载功能的ImageView
// SimpleDraweeView simpleDraweeView=new SimpleDraweeView(context);
// return simpleDraweeView;
// }
}

// 怎么加载其他图片资源(资源文件、文件、Uri、assets、raw、ContentProvider、sd卡资源)?
//
// 答:列如!如果你使用的是glide,那么可以如下操作,其他图片图片加载框架可能有不同
//
// //资源文件
// Integer[] images={R.mipmap.a,R.mipmap.b,R.mipmap.c};
// //Uri
// Uri uri = resourceIdToUri(context, R.mipmap.ic_launcher);
// Uri[] images={uri};
// //文件对象
// File[] images={"文件对象","文件对象"};
// //raw 两种方式
// String[] images={"Android.resource://com.frank.glide/raw/raw_1"};
// String[] images={"android.resource://com.frank.glide/raw/"+R.raw.raw_1"};
////ContentProvider
// String[] images={"content://media/external/images/media/139469"};
// //assets
// String[] images={"file:///android_asset/f003.gif"};
// //sd卡资源
// String[] images={"file://"+ Environment.getExternalStorageDirectory().getPath()+"/test.jpg"};
//
// banner.setImages(images);//这里接收集合,上面写成集合太占地方,这个大家举一反三就行了啊


//如果你需要考虑更好的体验,可以这么操作
@Override
public void onDestroy() {
super.onDestroy();
protected void onStart() {
super.onStart();
//开始轮播
banner.startAutoPlay();
}

mSliderLayout.stopAutoCycle();
@Override
protected void onStop() {
super.onStop();
//结束轮播
banner.stopAutoPlay();
}


}
36 changes: 15 additions & 21 deletions app/src/main/res/layout/ac_image_slider.xml
Original file line number Diff line number Diff line change
Expand Up @@ -8,28 +8,22 @@

<include layout="@layout/item_title" />

<com.daimajia.slider.library.SliderLayout
android:id="@+id/slider"
custom:auto_cycle="true"
<com.youth.banner.Banner
android:id="@+id/banner"
android:layout_width="match_parent"
android:layout_height="200dp" />


<com.daimajia.slider.library.Indicators.PagerIndicator
android:id="@+id/custom_indicator"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:gravity="center"
custom:selected_color="#FF5500"
custom:selected_height="3dp"
custom:selected_padding_left="2dp"
custom:selected_padding_right="2dp"
custom:selected_width="16dp"
custom:shape="rect"
custom:unselected_color="#55333333"
custom:unselected_height="3dp"
custom:unselected_padding_left="2dp"
custom:unselected_padding_right="2dp"
custom:unselected_width="16dp" />
<!--delay_time integer 轮播间隔时间,默认2000-->
<!--scroll_time integer 轮播滑动执行时间,默认800-->
<!--is_auto_play boolean 是否自动轮播,默认true-->
<!--title_background color reference-->
<!--title_textcolor color 标题字体颜色-->
<!--title_textsize dimension 标题字体大小-->
<!--title_height dimension 标题栏高度-->
<!--indicator_width dimension 指示器圆形按钮的宽度-->
<!--indicator_height dimension 指示器圆形按钮的高度-->
<!--indicator_margin dimension 指示器之间的间距-->
<!--indicator_drawable_selected reference 指示器选中效果-->
<!--indicator_drawable_unselected reference 指示器未选中效果-->
<!--image_scale_type enum 和imageview的ScaleType作用一样-->
</LinearLayout>
6 changes: 2 additions & 4 deletions yzslibrary/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -33,10 +33,8 @@ dependencies {
compile 'com.android.support:recyclerview-v7:24.2.1'
//强大的log工具
compile 'com.orhanobut:logger:1.15'

compile('com.github.yaozs:AndroidImageSlider-glide:1.0.1') {
exclude group: 'com.github.bumptech.glide'
}
//个人认为现在比较优秀的广告条控件
compile 'com.youth.banner:banner:1.4.9'
//BaseActivity框架
compile 'com.github.yaozs:YzsBaseActivity:0.3.2'
//内存检测
Expand Down

0 comments on commit 827dbd8

Please sign in to comment.