非常简单的方法实现ViewPager自动循环轮播
非常简单的方法实现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自动循环轮播的更多相关文章
- JS-特效 ~ 01. 事件对象、offset偏移/检测、无缝滚动、自动循环轮播图
Math.round ( ) :正书四舍五入,负数五舍六入 用定时器,先清除定时器 事件对象 event event:事件被触动时,鼠标和键盘的状态,通过属性控制 Offset:偏移,检测 1. 获取 ...
- Android RecyclerView 水平滚动+自动循环轮播
主要处理的地方: 1.RecyclerView中Adapter的item个人可以无限轮询. 2.RecyclerView自动滑动 3.手指按下时滑动停止,手指抬起后继续自动滑动 public clas ...
- 用jquery或js实现三个div自动循环轮播
//3个div的统一class = 'div' var index =0; //3秒轮播一次 var timer = setInterval(function(){ index = (inde ...
- Android自动滚动 轮播循环的ViewPager
主要介绍如何实现ViewPager自动播放,循环滚动的效果及使用.顺便解决ViewPager嵌套(ViewPager inside ViewPager)影响触摸滑动及ViewPager滑动速度设置问题 ...
- 解析SwiftUI布局细节(二)循环轮播+复杂布局
前言 上一篇我们总结的主要是VStack里面的东西,由他延伸到 @ViewBuilder, 接着我们上一篇总结的我们这篇内容主要说的是下面的几点,在这些东西说完后我准备解析一下苹果在SiwftUI文档 ...
- Android高仿京东淘宝自动无限循环轮播控件的实现思路和过程
在App的开发中,很多的时候都需要实现类似京东淘宝一样的自动无限轮播的广告栏,所以就自己写了一个,下面是我自定义控件的实现思路和过程. 一.自定义控件属性 新建自定义控件SliderLayout继承于 ...
- Android无限循环轮播广告位Banner
Android无限循环轮播广告位Banner 现在一些app通常会在头部放一个广告位,底部放置一行小圆圈指示器,指示广告位当前的页码,轮播展示一些图片,这些图片来自于网络.这个广告位banner ...
- ios之无限 自动 图片轮播器的实现
比较之前发布的手动无限图片轮播器进行了改进.实现了自动无限轮播的功能.比较适合团购标题分类下面的轮播器功能. 实现思路: * 开启一个定时器,把操作放入消息循环池.每隔一定时间,操作执行一次. * 注 ...
- ViewPager实现无限轮播踩坑记
最近笔者想通过ViewPager来实现一个广告Banner,并实现无限轮播的效果,但是在这个过程中踩了不少的坑,听我慢慢道来.如果大家有遇到和我一样的情况,可以参考我的解决方法,没有那就更好,如果针对 ...
随机推荐
- Vue.js——循环(Java、JSTL标签库、数据库)
一.Vue.js循环 Vue.js循环要使用 v-for 指令. v-for 指令需要以 student in StudentList 形式的特殊语法使用, StudentList 是源数据数组并且s ...
- 使用光盘搭建本地yum源
刚装好的系统,想安装一些常用软件和一些包组的时候,就可以使用安装光盘搭建本地yum 第一步:挂载安装光盘 mount /dev/cdrom /mnt 第二步:编辑repo yum源文件 [root@l ...
- 输入一个数,求1到他 的和(for循环)
- Tronado
Tornado 是 FriendFeed 使用的可扩展的非阻塞式 web 服务器及其相关工具的开源版本.这个 Web 框架看起来有些像web.py 或者 Google 的 webapp,不过为了能有效 ...
- Luogu P2426 【删数】
状态定义: 一眼区间$DP$,从左右两边删不好定义状态,不如定义$dp[i][j]$表示$[i,j]$未删的最大值,转移就很自然了 转移: 从左边删$dp[i][j]=max(dp[i][j],dp[ ...
- poj1177 矩形周长并
线段树扫描线的模板题,一个月前写的发现忘了一些还是要看看以前的博客呀! /* 思路:数据小不用离散化处理,线段树叶子结点维护一个区间 */ #include<iostream> #incl ...
- 多行文字溢出[...]的实现(text-overflow: ellipsis)
声明:此文章为转载(点击查看原文),如有侵权24小时内删除.联系QQ:1522025433. 对于单行文字, 很简单.(详见css3产考手册 进入) css: .oneLine { width: 20 ...
- jmeter打开其他设备转过来的历史脚本出现报错
报错大概如下 missing class com.thoughtworks.xstream.converters.ConversionException Debugging information 还 ...
- checkbox简单例子
写个简单的例子,如下:html页面部分:<input type="checkbox" value="1" name="check"/& ...
- Type in Chakra
Type in Chakra Javascript是一个无类型的语言. 我们要讨论的类型是指Chakra内置的一些数据结构,这些结构维护了Object的信息. Type在一类Object中共享数据,使 ...