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 ...
随机推荐
- Python入门及安装
简介 是用来编写应用程序的高级编程语言,"内置电池",哲学:简单优雅,尽量写容易看明白的代码,尽量写少的代码,适合干嘛:网络应用.网站.后台服务:日常些工具,如系统管理员需要的脚本 ...
- memcached telnet command
memcached telnet commandtelnet 127.0.0.1 11211 --连接memcached 1.基本命令1)set set 命令用于向缓存添加新的键值对.如果键已经存在, ...
- 慕课网python分布式爬虫打造搜索引擎视频中爬取伯乐网文章
代码:https://github.com/longbigbeard/scrapy_demo
- 用echarts绘制中国地图
在项目中运用到图形展示数据太常见了,echarts是一款使用率非常高的插件工具,很多大平台都是使用echarts: 一般运用到条形.折线.扇形图,今天说一说在中国地图上展示各地数据: 首先要准备中国地 ...
- 【Prism】MEF版EventAggregation
引言 第三弹是EventAggregation Demo的改造. EventAggregation EventAggregation事件聚集是Prism框架中的通信实现.它可以在松散的模块或者窗体之 ...
- GEF入门实例_总结_01_教程、源码、开发环境准备
一.前言 最近在学Eclipse插件开发,发现了一个比较好的GEF入门教程,并且按照教程上的操作,一步步实现了一个入门Demo,在此感谢作者的贡献. 好记性不如烂笔头,故决定总结一下这段时间的学习心得 ...
- hbase-0.20.6/bin/hbase-daemon.sh: Permission denied
部署hbase全分布式时,出现以下错误:主机的hbase启动了,但是从机的没启动[root@centos7- my.shells]# start-hbase.sh Java HotSpot(TM) - ...
- hadoop2.5.2 安装与部署
主从机构 主:jobtracker 从:tasktracker 四个阶段 1. split 2. Mapper: key-value(对象) 3. shuffle a) 分区(partition,H ...
- Nodejs-RESTFul架构
请求方法 一般会严格要求请求方法及其释义,下面给出常用的请求方法 如果请求头中存在 X-HTTP-Method-Override 或参数中存在 _method(拥有更高权重),且值为 GET, POS ...
- nyoj-655-光棍的yy(大斐波那契数列)
题目链接 /* 思路: 考察大斐波那契数列 */ import java.util.*; import java.math.*; public class Main{ public static vo ...