android-auto-scroll-view-pager (无限广告轮播图)
github 地址: https://github.com/Trinea/android-auto-scroll-view-pager
Gradle:
compile ('cn.trinea.android.view.autoscrollviewpager:android-auto-scroll-view-pager:1.1.2') {
exclude module: 'support-v4'
}
-keep class cn.trinea.android.** { *; }
-keepclassmembers class cn.trinea.android.** { *; }
-dontwarn cn.trinea.android.**
布局文件
<cn.trinea.android.view.autoscrollviewpager.AutoScrollViewPager
android:id="@+id/auto_view_pager"
android:layout_width="match_parent"
android:layout_height="320dp" />
<LinearLayout
android:id="@+id/point_group"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:gravity="center"
android:layout_alignParentBottom="true"
android:orientation="horizontal"
android:paddingBottom="5dp"
>
代码设置:
if(imageList.size()==1){
auto_view_pager.stopAutoScroll();
}
auto_view_pager.setAdapter(new MyAdapter(imageList));
//
//设置延时时间
auto_view_pager.setInterval(5000);
//设置轮播的方向 AutoScrollViewPager.RIGHT/AutoScrollViewPager.LEFT
auto_view_pager.setDirection(AutoScrollViewPager.RIGHT);
//设置是否自动循环轮播,默认为true
//注意:一旦设为true,则不能和ViewPagerIndicator一起使用
auto_view_pager.setCycle(true);
//设置切换动画的时长
auto_view_pager.setScrollDurationFactor(5);
//设置当滑动到最后一个或者第一个时,如何切换下一张 //当滑动到最后一张或第一张时是否开启动画,默认为true
auto_view_pager.setBorderAnimation(true);
//当触摸的时候,停止轮播
auto_view_pager.setStopScrollWhenTouch(true); //
// //解决最后一个跳转到第一个闪动问题
// auto_view_pager.setCurrentItem((Integer.MAX_VALUE / 2 - Integer.MAX_VALUE / 2 % imageList.size())); auto_view_pager.setCurrentItem(imageList.size()*10); final LinearLayout point_group = (LinearLayout)
findViewById(R.id.point_group);
point_group.removeAllViews();
for (int i = 0; i < imageList.size(); i++) {
// 添加指示点
ImageView point = new ImageView(DetailActivity.this);
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
ViewGroup.LayoutParams.WRAP_CONTENT,
ViewGroup.LayoutParams.WRAP_CONTENT);
params.rightMargin = 10; point.setLayoutParams(params);
point.setBackgroundResource(R.drawable.point_bg);
if (i == 0) {
point.setEnabled(true);
} else {
point.setEnabled(false);
}
point_group.addView(point); } //
auto_view_pager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { }
@Override
public void onPageSelected(int position) {
Log.e("TAG", "position" + position);
// 改变指示点的状态
// 把当前点enbale 为true
try {
point_group.getChildAt(position % imageList.size()).setEnabled(true);
// 把上一个点设为false
point_group.getChildAt(lastPosition).setEnabled(false);
lastPosition = position % imageList.size();
} catch (Exception e) {
}
} @Override
public void onPageScrollStateChanged(int state) { }
});
adapter
class MyAdapter extends PagerAdapter { List<String> mSimpleDraweeViewList;
public MyAdapter(List<String> mSimpleDraweeViewList) {
this.mSimpleDraweeViewList=mSimpleDraweeViewList;
} @Override
public int getCount() {
return Integer.MAX_VALUE;
} @Override
public boolean isViewFromObject(View view, Object object) {
return view == object;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView((View) object);
}
@Override
public Object instantiateItem(ViewGroup container, int position) { Uri uri = Uri.parse(HttpBase.HOST_STRING +"/"+ mSimpleDraweeViewList.get(position % mSimpleDraweeViewList.size()));
// SimpleDraweeView draweeView = new SimpleDraweeView(DetailActivity.this);
SimpleDraweeView draweeView = (SimpleDraweeView)View.inflate(DetailActivity.this,R.layout.layout_image,null).findViewById(R.id.image1);
draweeView.setScaleType( ImageView.ScaleType.FIT_XY);
ViewGroup.LayoutParams imagebtn_params = new ViewGroup.LayoutParams(
AutoUtils.getDisplayWidthValue(720), AutoUtils.getDisplayHeightValue(640));
draweeView.setLayoutParams(imagebtn_params); draweeView.setImageURI(uri);
// ImageView im= new ImageView(DetailActivity.this);
// Picasso.with(DetailActivity.this).load(HttpBase.HOST_STRING +"/"+ mSimpleDraweeViewList.get(position % mSimpleDraweeViewList.size())).into(im); ViewParent parent = draweeView.getParent();
// remove掉View之前已经加到一个父控件中,否则报异常
if (parent != null) {
ViewGroup group = (ViewGroup) parent;
group.removeView(draweeView);
}
container.addView(draweeView);
return draweeView;
// container.addView(images.get(position % images.size()));
// return images.get(position % images.size());
// container.addView(draweeView);
// return draweeView;
} }
@Override
protected void onResume() {
super.onResume();
//开启自动轮播,延时时间为getInterval() auto_view_pager.startAutoScroll();
//开启自动轮播,并设置延时
// auto_view_pager.startAutoScroll(delayTime);
} @Override
protected void onPause() {
super.onPause();
//停止轮播
auto_view_pager.stopAutoScroll();
}
point_bg.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" > <item android:drawable="@drawable/point_nomal" android:state_enabled="true"/>
<item android:drawable="@drawable/point_focured" android:state_enabled="false"/> </selector>
point_focured.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval" > <size android:width="5dp" android:height="5dp"/>
<solid android:color="#33000000"/> </shape>
point_nomal.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval" > <size android:width="5dp" android:height="5dp"/>
<solid android:color="#aaFFFFFF"/> </shape>
android-auto-scroll-view-pager (无限广告轮播图)的更多相关文章
- iOS回顾笔记(05) -- 手把手教你封装一个广告轮播图框架
html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,bi ...
- iOS swift版本无限滚动轮播图
之前写过oc版本的无限滚动轮播图,现在来一个swift版本全部使用snapKit布局,数字还是pageConrrol样式可选 enum typeStyle: Int { case pageContro ...
- android中广告轮播图总结
功能点:无限轮播.指示点跟随.点击响应.实现思路: 1.指示点跟随,指示点通过代码动态添加,数量由图片数量决定. 在viewpager的页面改变监听中,设置点的状态选择器enable,当前页时,set ...
- android项目实战 --ListView 头部ViewPager广告轮询图效果
看开源框架:https://github.com/tianshaojie/AndroidFine,里面有如下效果,特记录学习下,以后项目中用也好能够立刻想起来. 如上面所示,是常见项目中的图片轮训 ...
- JavaScripts广告轮播图以及定时弹出和定时隐藏广告
轮播图: 函数绑定在body标签内 采用3张图,1.jpg 2.jpg 3.jpg 利用定时任务执行设置图片属性 src 利用for循环可以完成3秒一次 一替换. 定时弹出广告: 由于bod ...
- jquery 广告轮播图
轮播图 /*轮播图基本功能: * 1图片切换 * 1.1图片在中间显示 * 1.2图片淡入淡出 * 2左右各有一个按钮 * 2.1点击左按钮,图片切换上一张 * 2.2点击右按钮,图片切换下一张 * ...
- Android广告轮播图实现
先看效果 第一步,布局 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmln ...
- swift 广告轮播图
import UIKit import Kingfisher class BannerView: UIView,UIScrollViewDelegate{ enum ImageType{ case I ...
- swift bannerview 广告轮播图
class BannerView: UIView,UIScrollViewDelegate{ //图⽚⽔平放置到scrollView上 private var scrollView:UIScrollV ...
随机推荐
- 微信支付:微信支付遇到的坑:jssdk,phpdemo,微信支付提示{"errMsg":"chooseWXPay:fail"}
微信支付:微信支付遇到的坑:jssdk,phpdemo 使用微信支付,真是变态,如果不是微信用户多,我才不适配微信支付,我就在想:为什么没人用我支付宝的[点点虫]呢.一个小小的“/”的误差,都调不起微 ...
- Sublime Text3取消自动补全结束标签
点击首选项——设置-用户——在配置中增加一句:"auto_close_tags": false, 参考来源:豆瓣小组:求解Sublime Text 3怎么取消自动补全结束标签
- hdu 5236 Article(概率dp¥)
Article Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Sub ...
- 解析Ceph: 恢复与数据一致性
转自:https://www.ustack.com/blog/ceph-internal-recovery-and-consistency/ 作为一个面向大规模的分布式存储系统,故障处理是作为一个常态 ...
- JS内存知识点汇总
废话片: 讲到内存可以联想到很多,内存分配管理,内存回收机制,内存泄露等等,今天我们就来答题的总结一下. 正文片: 1.内存分配管理 2.内存回收机制 3.内存泄露 一.内存分配管理 首先让我们看看内 ...
- windows下安装 redis并开机自启动
1,redis官方下载地址:https://redis.io/download,redis 64位下载地址:https://github.com/ServiceStack/redis-windows, ...
- hdoj-1037-Keep on Truckin'(水题)
题目链接 /* 题意:三个通道,如果比168低,那么过不去,输出最先碰到的低的通道高度值 */ #include <iostream> using namespace std; int ...
- VSCode使用正则表达式进行内容替换
首先描述一下我要达到的目的: 1.源数据: 2.目标数据: 3.使用的正则表达式如下: (id: (\d+),) id: $2, \n order: $2,
- LeetCode Distribute Candies
原题链接在这里:https://leetcode.com/problems/distribute-candies/#/description 题目: Given an integer array wi ...
- 消息队列mq总结(重点看,比较了主流消息队列框架)
转自:http://blog.csdn.net/konglongaa/article/details/52208273 http://blog.csdn.net/oMaverick1/article/ ...