非常简单的方法实现ViewPager自动循环轮播,见红色代码部分,其它的代码可以忽略不看。

简洁高效是我解决问题的首要出发点。

package com.shuivy.happylendandreadbooks.fragment;

import android.app.Activity;
import android.app.Fragment;
import android.os.Bundle;
import android.os.Handler;
import android.support.v4.view.ViewPager;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView; import com.shuivy.happylendandreadbooks.R;
import com.shuivy.happylendandreadbooks.adapter.MyViewPagerAdapter; import java.util.ArrayList;
import java.util.List; /**
* Created by stk on 2016/7/22 0022.
*/
public class HomeFragment extends Fragment { private View mRootView;
private Activity mContext;
private LayoutInflater mLayoutInflater;
private int[] mImageIdArray;
private static final int TIME = 1700;
private List<View> mLayouts;
private List<View> mDots;
private ViewPager mViewPager;
private int mCount = 3;
private Handler mHandler = new Handler();
private int itemPosition; @Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
mContext = getActivity();
if (mRootView == null) {
mRootView = inflater.inflate(R.layout.fragment_home, container, false);
mLayoutInflater = inflater;
initView();
} else {
ViewGroup parent = (ViewGroup) mRootView.getParent();
if (parent != null) {
parent.removeView(mRootView);
}
} return mRootView;
} private void initView() {
mImageIdArray = new int[]{
R.mipmap.book_viewpager1,
R.mipmap.book_viewpager2,
R.mipmap.book_viewpager3,
};
TextView textView = (TextView) mRootView.findViewById(R.id.titleView);
textView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
mViewPager.setCurrentItem(1);
}
}); initIndex();
} private void initIndex() {
viewPager();
mHandler.postDelayed(runnableForViewPager, TIME);
} /**
* 首页上方的viewpager图片展示
*/
private void viewPager() {
ViewGroup viewGroup = (ViewGroup) mRootView.findViewById(R.id.viewGroup);
mViewPager = (ViewPager) mRootView.findViewById(R.id.viewPager);
//mCount是订单数量,是从订单处得到的数据,我们默认设为3 mLayouts = new ArrayList<>();
mDots = new ArrayList<>();
for (int i = 0; i < mCount; i++) {
//下面两句必须放在for里面
View layoutView = mLayoutInflater.inflate(R.layout.viewpager_item, null);
View dotView = mLayoutInflater.inflate(R.layout.dot, null); ImageView imageView = (ImageView) layoutView.findViewById(R.id.viewpager_image);
imageView.setImageResource(mImageIdArray[i]);
if (i == 0) {
dotView.setBackgroundResource(R.drawable.dot_select);
} else {
dotView.setBackgroundResource(R.drawable.dot_no_select);
}
LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(
new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,
ViewGroup.LayoutParams.WRAP_CONTENT));
layoutParams.setMargins(20, 0, 20, 0);
viewGroup.addView(dotView, layoutParams); mLayouts.add(layoutView);
mDots.add(dotView); } mViewPager.setAdapter(new MyViewPagerAdapter(mLayouts));
mViewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { } @Override
public void onPageSelected(int position) {
for (int i = 0; i < mCount; i++) {
if (i == position) {
mDots.get(i).setBackgroundResource(R.drawable.dot_select);
} else {
mDots.get(i).setBackgroundResource(R.drawable.dot_no_select);
}
}
} @Override
public void onPageScrollStateChanged(int state) { }
});
} /**
* ViewPager的定时器
*/
Runnable runnableForViewPager = new Runnable() {
@Override
public void run() {
try {
itemPosition++;
mHandler.postDelayed(this, TIME);
mViewPager.setCurrentItem(itemPosition % mCount);
} catch (Exception e) {
e.printStackTrace();
}
}
};
}

非常简单的方法实现ViewPager自动循环轮播的更多相关文章

  1. JS-特效 ~ 01. 事件对象、offset偏移/检测、无缝滚动、自动循环轮播图

    Math.round ( ) :正书四舍五入,负数五舍六入 用定时器,先清除定时器 事件对象 event event:事件被触动时,鼠标和键盘的状态,通过属性控制 Offset:偏移,检测 1. 获取 ...

  2. Android RecyclerView 水平滚动+自动循环轮播

    主要处理的地方: 1.RecyclerView中Adapter的item个人可以无限轮询. 2.RecyclerView自动滑动 3.手指按下时滑动停止,手指抬起后继续自动滑动 public clas ...

  3. 用jquery或js实现三个div自动循环轮播

    //3个div的统一class = 'div' var index =0; //3秒轮播一次 var timer = setInterval(function(){     index = (inde ...

  4. Android自动滚动 轮播循环的ViewPager

    主要介绍如何实现ViewPager自动播放,循环滚动的效果及使用.顺便解决ViewPager嵌套(ViewPager inside ViewPager)影响触摸滑动及ViewPager滑动速度设置问题 ...

  5. 解析SwiftUI布局细节(二)循环轮播+复杂布局

    前言 上一篇我们总结的主要是VStack里面的东西,由他延伸到 @ViewBuilder, 接着我们上一篇总结的我们这篇内容主要说的是下面的几点,在这些东西说完后我准备解析一下苹果在SiwftUI文档 ...

  6. Android高仿京东淘宝自动无限循环轮播控件的实现思路和过程

    在App的开发中,很多的时候都需要实现类似京东淘宝一样的自动无限轮播的广告栏,所以就自己写了一个,下面是我自定义控件的实现思路和过程. 一.自定义控件属性 新建自定义控件SliderLayout继承于 ...

  7. Android无限循环轮播广告位Banner

     Android无限循环轮播广告位Banner 现在一些app通常会在头部放一个广告位,底部放置一行小圆圈指示器,指示广告位当前的页码,轮播展示一些图片,这些图片来自于网络.这个广告位banner ...

  8. ios之无限 自动 图片轮播器的实现

    比较之前发布的手动无限图片轮播器进行了改进.实现了自动无限轮播的功能.比较适合团购标题分类下面的轮播器功能. 实现思路: * 开启一个定时器,把操作放入消息循环池.每隔一定时间,操作执行一次. * 注 ...

  9. ViewPager实现无限轮播踩坑记

    最近笔者想通过ViewPager来实现一个广告Banner,并实现无限轮播的效果,但是在这个过程中踩了不少的坑,听我慢慢道来.如果大家有遇到和我一样的情况,可以参考我的解决方法,没有那就更好,如果针对 ...

随机推荐

  1. aiohttp分流处理

    # -*- coding: utf-8 -*- # @Time : 2018/12/26 9:55 PM # @Author : cxa # @Software: PyCharm import asy ...

  2. mysql重置登录密码

    1.停止mysql服务. services.msc进入服务界面 停止mysql服务 2.打开一个cmd窗口. 输入mysqld --skip-grant-tables 启动了一个新的mysql服务 跳 ...

  3. Jenkins实现定时、顺序编译

    1      Jenkins实现定时.顺序编译 l  Jenkins 编译流程:更新代码,编译公共服务,编译普通服务(普通服务依赖于公共服务).以下图为例,首先执行 update,再执行 icto_c ...

  4. 修改centos和ubuntu ssh远程连接端口提升系统安全性

    #修改centos服务器ssh端口 sed -i 's/#Port 22/Port 38390/' /etc/ssh/sshd_config sed -i 's/^GSSAPIAuthenticati ...

  5. centos6.5环境基于conga的web图形化界面方式配置rhcs集群

    一.简介 RHCS 即 RedHat Cluster Suite ,中文意思即红帽集群套件.红帽集群套件(RedHat Cluter Suite, RHCS)是一套综合的软件组件,可以通过在部署时采用 ...

  6. 前端web服务器数据同步方案

    概述: 网站采用了web和mysql数据库分离的架构,前端有web1.web2.web3需要对他们进行上传文件同步 方案: 在web2的windows服务器上安装GoodSync软件,利用其双向同步特 ...

  7. 解决Idea运行testng套件无testoutput文件夹问题

    说明:testNG的工程我是使用eclipse创建的,直接导入到idea中,运行test时不会生产test-output,只能在idea的控制台中查看运行结果,然后到处报告,经过不懈的百度终于找到怎么 ...

  8. 为什么在python中推荐使用多进程而不是多线程(转载)

    最近在看Python的多线程,经常我们会听到老手说:"Python下多线程是鸡肋,推荐使用多进程!",但是为什么这么说呢? 要知其然,更要知其所以然.所以有了下面的深入研究: GI ...

  9. php高级工程师面试题,行不行对照看下自己的实力

    在网上看到一些高级php 的面试题目.. 最近接连面试了几家公司,有些重要问题记录一下,督促自己学习提高,同时希望给朋友们一些帮助.内容很多,一点点完善,一步步学习..有些是面试被问,有些是招聘要求, ...

  10. 上传本地文件到github仓库基本操作

    上传文件到github时老师忘记指令,或者总是出一些错,每次都要百度浪费时间,因此将常用操作指令归纳卸载这里,以后再也不要担心百度找帖子了... 第一步:新建仓库 新建仓库步骤省略,最后我们得到一个仓 ...