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 ...
随机推荐
- phalcon: 开启模板缓存和缓存路径
/** * 设置view */ $di->set('view', function () use ($config) { $view = new \Phalcon\Mvc\View(); $vi ...
- 关于设置UITableView的背景图片
在UITableViewController中,要设置UITableView的背景图片,以前常用的方法是使用backgroundcolor属性,这个属性可以通过UIImage来获取,但最近发现这个方法 ...
- Java 简单图片截取
package cn.byref.demo.image; import java.awt.Rectangle; import java.awt.image.BufferedImage; import ...
- 仿QQ撒花特效--第三方开源--FllowerAnimation
点此下载资源 xml: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" ...
- 28 python 并发编程之多进程
一 multiprocessing模块介绍 python中的多线程无法利用多核优势,如果想要充分地使用多核CPU的资源(os.cpu_count()查看),在python中大部分情况需要使用多进程.P ...
- XML DOM - Range 对象
Range对象 Range对象表示文档的连续范围区域,如用户在浏览器窗口中用鼠标拖动选中的区域. dom标准Range对象 在IE中使用TextRange对象 range对象常用的建立方法在开发中 ...
- 统计日志中ip出现的次数
grep -r 'GET /weixin/weixin_izp/index.html' ./chunyun.access.log > ~/access.log cat access.log |a ...
- BZOJ - 2244 拦截导弹 (dp,CDQ分治+树状数组优化)
题目链接 dp进阶之CDQ分治优化dp. 前置技能:dp基本功底,CDQ分治,树状数组. 问题等价于求二维最长上升子序列,是一个三维偏序问题(时间也算一维). 设$dp[i]=(l,x)$为以第i枚导 ...
- BZOJ - 2142 礼物 (扩展Lucas定理)
扩展Lucas定理模板题(貌似这玩意也只能出模板题了吧~~本菜鸡见识鄙薄,有待指正) 原理: https://blog.csdn.net/hqddm1253679098/article/details ...
- ERR_PTR PTR_ERR IS_ERR ERROR
在linux-x.xx/include/uapi/asm-generic/errno-base.h和errno.h里分别定义了返回错误的信息. errno-base.h: #ifndef _ASM_G ...