ViewPager实现淘宝天面首页广告栏,支持左右滑动,自动滑动,带圆点指示器

原理:1.及根据当前viewpager的选中页面获取position,对其进行自增

2.之后调用:pager.setCurrentItem(currentpositon, true);进行页面切换

3.设置定时器每隔一段时间调用切换页面方法

核心代码如下:

package com.dett.viewpagerautochange;

import java.util.ArrayList;

import java.util.Timer;

import java.util.TimerTask;

import android.os.Bundle;

import android.os.Handler;

import android.os.Message;

import android.support.v4.app.FragmentActivity;

import android.support.v4.view.ViewPager;

import android.support.v4.view.ViewPager.OnPageChangeListener;

import android.util.Log;

import android.view.MotionEvent;

import android.view.View;

import android.widget.ImageView;

import android.widget.LinearLayout;

public class ViewPageActivity extends FragmentActivity {

ViewPager pager = null;

/**

* 切換計時器

*/

public Timer autoGallery = new Timer();

public ImageTimerTask timeTaks = null;

public int currentpositon = 0;

public int oldpositon = 0;

private boolean stopAuto;

public static Integer[] imgs = { R.drawable.one, R.drawable.two,

R.drawable.three, R.drawable.four, R.drawable.one };

ArrayList<String> list;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_view_page);

pager = (ViewPager) findViewById(R.id.myViewPager);

list = new ArrayList<String>();

for (int i = 0; i < imgs.length; i++) {

list.add(imgs[i] + "");

}

ImagePagerAdapter adapter = new ImagePagerAdapter(

getSupportFragmentManager(), list);

pager.setAdapter(adapter);

startAutoChange();

}

/**

* 开启自动切换

* @since  1.0.0

*/

public void startAutoChange(){

// 设置左右缓存页面

pager.setOffscreenPageLimit(2);

// 保证起始页可以左滑

pager.setCurrentItem(list.size() * 1000);

// 可定义页面切换速度

//FixedSpeedScroller.setDurTime(1000, pager);

pager.setOnPageChangeListener(new OnPageChangeListener() {

@Override

public void onPageSelected(int index) {

int currentP = index % list.size();

// 更新小点点颜色

changePointView2(oldpositon, currentP);

oldpositon = currentP;

}

@Override

public void onPageScrolled(int arg0, float arg1, int arg2) {

}

@Override

public void onPageScrollStateChanged(int arg0) {

}

});

// 启动计时器

timeTaks = new ImageTimerTask();

autoGallery.scheduleAtFixedRate(timeTaks, 3000, 2000);

addPointView();

// 按下时停止自动滑动,弹起时继续定时滑动

pager.setOnTouchListener(new View.OnTouchListener() {

@Override

public boolean onTouch(View v, MotionEvent event) {

switch (event.getAction()) {

case MotionEvent.ACTION_MOVE:

stopAuto = true;

break;

case MotionEvent.ACTION_UP:

stopAuto = false;

break;

default:

stopAuto = true;

break;

}

return false;

}

});

}

/**

* 计时任务 ImageTimerTask

*/

class ImageTimerTask extends TimerTask {

@Override

public void run() {

if (stopAuto) {

return;

}

Message msg = Message.obtain();

msg.what = 1;

currentpositon = pager.getCurrentItem();

currentpositon++;

han.sendMessage(msg);

}

}

/**

* 设置选中item

*/

Handler han = new Handler() {

public void handleMessage(Message msg) {

if (msg.what == 1) {

Log.i("eeeeee", currentpositon + "");

pager.setCurrentItem(currentpositon, true);

}

}

};

/**

* 添加小点

*

* @exception

* @since 1.0.0

*/

public void addPointView() {

LinearLayout pointLinear = (LinearLayout) findViewById(R.id.gallery_point_linear);

pointLinear.setBackgroundColor(getResources().getColor(

android.R.color.transparent));// Color.argb(200, 135, 135, 152)

for (int i = 0; i < list.size(); i++) {

ImageView pointView = new ImageView(this);

if (i == 0) {

pointView.setBackgroundResource(R.drawable.feature_point_cur);

} else

pointView.setBackgroundResource(R.drawable.feature_point);

pointLinear.addView(pointView);

}

}

/**

* 改变小点

*

* @exception

* @since 1.0.0

*/

public void changePointView2(int oldposition, int currposition) {

LinearLayout pointLinear = (LinearLayout) findViewById(R.id.gallery_point_linear);

View oldview = pointLinear.getChildAt(oldposition);

View currview = pointLinear.getChildAt(currposition);

if (oldview != null && currview != null) {

ImageView pointView = (ImageView) oldview;

ImageView currView = (ImageView) currview;

pointView.setBackgroundResource(R.drawable.feature_point);

currView.setBackgroundResource(R.drawable.feature_point_cur);

}

}

}

完整demo下载地址

时间: 2024-10-11 15:18:35

ViewPager实现淘宝天面首页广告栏,支持左右滑动,自动滑动,带圆点指示器的相关文章

链云淘宝客优惠券网站免费源码下载 自动采集

链云淘宝客优惠券导购CMS 自动采集 PC端+手机端 微商淘客必备 链云优惠券CMS采用独立的程序+数据库,安全稳定性能优越,全自动操作,可自主设置自动或者手动采集,无需后期维护,一次建成,永久使用.自动采集优惠券和下单链接,自动转换成自己的PID,全部自动完成. 演示地址:http://5395.lianyunshop.com/ 手机浏览器直接访问进入手机端 开发环境:PHP语言和MySQL数据库. 服务器要求:支持PHP语言,支持MySQL数据库,支持Zend组件,支持Windows系统或L

做了一个淘宝内部优惠券分享平台支持微信公众号以及网站

关注微信公众号大家自己可以输入信息搜索淘宝内部优惠券 或者电脑访问 http://www.imaimaimai.cn 如果有企业需要提供相关技术也可以联系我哈

安卓首页图片轮播效果(淘宝、京东首页广告效果)

直奔主题: 1.主要原理就是利用定时任务器定时切换ViewPager的页面. 2.里面用了一个读取网络图片的插件.做client使用本地图片轮播的也非常少. 先上个效果图: 项目代码结构截图: 自己定义View 的布局文件layout_slideshow.xml: <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.and

Listview嵌套Viewpager实现仿淘宝搜狐广告主页,并实现listview的下拉刷新

Android实现功能:Listview嵌套viewpager仿淘宝搜狐视频主页面,和listview的下拉刷新. 什么都不说了:直接上图说效果 listview嵌套viewpager实现仿淘宝的广告滑动主页面 源码连接:(http://download.csdn.net/detail/qq_30000411/9528977) APK下载连接:(http://download.csdn.net/detail/qq_30000411/9528973) 下面给出我源码的主要文件构成: MyListV

聊一聊淘宝首页和它背后的一套

聊一聊淘宝首页和它背后的一套 作者: 小胡子哥 2016-06-02 12:00:00本文发布时间为2016年06月02日12时00分00秒 分类: 前端杂烩 标签: 淘宝首页 下面是正文内容评论数: 12条评论 从 14 年双十二结束开始接手淘宝首页,到如今差不多 1 年半时间,不久前完成了首页相关工作的交接.期间经历了两次改版和一次从 PHP 到 Node 的迁移,还是颇有感受,下面给大家分享下.我要说话 文章好像有点长,列个大纲会比较好:我要说话 一.相关背景介绍二.淘宝首页的整理变迁

从PHP到Node,聊一聊淘宝首页背后的技术

从 2014 年双十二结束开始接手淘宝首页,到如今差不多 1 年半时间了,不久前完成了首页相关工作的交接.经历了两次改版和一次从 PHP 到 Node 的迁移,还是颇有感受,下面给大家分享下. 一.相关背景介绍 淘宝首页是淘宝的门面,承载着几乎淘系所有业务的入口,流量很大,量级单位为亿.近几年无线端崛起,业务重点开始向无线终端偏移(目前不能叫偏移,基本以无线为主了),所以淘宝 PC 端首页的流量也有削减,不过即便如此,它的日均 PV 依然相当高. 淘宝首页一向是内部平台和技术的试验田,它一直在变

【热门APP用户体验分析】购物类APP之王——淘宝安卓版(二)

在上一篇的文章中,简单的介绍了一下淘宝客户端的首页的导航栏,还有一些小的细节问题,这一篇,我们还是继续剖析淘宝客户端安卓版. 我们首先还是先放出淘宝的主界面 在这个界面中,最上方是一个广告栏,可以点击进入对应的活动界面.广告栏可以手动的滑动,而且滑动体验非常好,在使用其他软件的时候,会发生左右广告栏的滑动和上下的刷新滑动出现冲突的情况,表现出来就是界面一直在颤动,但是淘宝的广告栏做的非常好,只要在广告栏的区域滑动,触摸焦点就会被锁定,不会发生手势冲突的情况,淘宝的开发者应该是重写了控件的触摸事件

互联网科普-淘宝的聚划算(团购C2B)

?? 一.团购市场概述1.团购市场占有率公开数据显示,2011年,聚划算交易额突破百亿,活跃用户达千万,占比当年团购市场份额就超过50%.仅过一年.2012年,聚划算交易额达208亿元,是2011年的2倍多,日客户访问峰值突破1600万.2013年,阿里巴巴招股书数据显示,聚划算GMV达到477亿元人民币.2.现在的聚划算还算是团购吗?虽然聚划算被定位为"中国最受欢迎的团购网站",不过,仅仅用团购平台去定义聚划算并不完整.他作为阿里运营淘宝的利剑,利用他的动态数据建立了各种模型,不仅能

从网易与淘宝的font-size思考前端设计稿与工作流 (转)

从网易与淘宝的font-size思考前端设计稿与工作流 阅读目录 1. 问题的引出 2. 简单问题简单解决 3. 网易的做法 4. 淘宝的做法 5. 比较网易与淘宝的做法 6. 如何与设计协作 7. 总结 本文结合自己对网易与淘宝移动端首页html元素上的font-size这个属性的思考与学习,讨论html5设计稿尺寸以及前端与设计之间协作流程的问题,内容较多,但对你的技术和工作一定有价值,欢迎阅读和点评:). 1. 问题的引出 最近阅读白树的博文<移动web资源整理>时,他在博文中有一段指出