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 ...
随机推荐
- spring: 在表达式中使用类型
如果要在SpEL中访问类作用域的方法和常量的话,要依赖T()这个关键的运算符.例如,为了在SpEL中表达Java的Math类,需要按照如下的方式使用T()运算符: T{java.lang.Math} ...
- linux下图形字符的命令
banner sudo apt-get install sysvbanner banner song 若更改字体可以使用banner song printerbanner -w 50 A toilet ...
- 1001 字符串“水”题(二进制,map,哈希)
1001: 字符串“水”题 时间限制: 1 Sec 内存限制: 128 MB提交: 210 解决: 39[提交][状态][讨论版] 题目描述 给出一个长度为 n 的字符串(1<=n<= ...
- hzau 1200 Choosy in Food
1200: Choosy in Food Time Limit: 1 Sec Memory Limit: 1280 MBSubmit: 32 Solved: 5[Submit][Status][W ...
- TCP/IP Socket 的理解
网络由下往上分为:物理层.数据链路层.网络层.传输层.会话层.表示层和应用层. TCP 协议对应于传输层,HTTP 协议对应应用层,Socket 则是对 TCP/IP 协议的封装. ...
- GridView的简单使用
测试代码: activity_main.xml: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/a ...
- nyoj-1016-德莱联盟(向量叉乘判断线段相交)
叉乘的坐标表示: A(X1,Y1), B(X2, Y2), C(XC,YC), D(XD, YD);AB = (X2-X1, Y2-Y1);CD = (XD-XC, YD-YC); 向量AB,CD的叉 ...
- brew安装php和扩展
brew install homebrew/php/php56 --with-apache 报错: checking if the location of ZLIB install directory ...
- 西瓜书概念整理(chapter 1-2)熟悉机器学习术语
括号表示概念出现的其他页码, 如有兴趣协同整理,请到issue中认领章节 完整版见我的github:ahangchen 觉得还不错的话可以点个star ^_^ 第一章 绪论 Page2: 标记(lab ...
- 在C#中实现截获shell程序的输出
在Windows环境下的所谓shell程序就是dos命令行程序,比如VC的CL.exe命令行编译器,JDK的javac编译器,启动java程序用的java.exe都是标准的shell程序.截获一个sh ...