我的编程空间,编程开发者的网络收藏夹
学习永远不晚

RollViewPager如何实现图片轮播效果

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

RollViewPager如何实现图片轮播效果

这篇文章将为大家详细讲解有关RollViewPager如何实现图片轮播效果,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

RollViewPager是一个自动轮播的Viewpager,支持无限循环。 触摸时会暂停播放,直到结束触摸一个延迟周期以后继续播放。 看起来就像这样。指示器可以为点可以为数字还可以自定义,位置也可以变。

附上RollViewPager Github地址:https://github.com/Jude95/RollViewPager

使用Android Studio开发在gradle添加依赖:

compile 'com.jude:rollviewpager:1.4.5'

在布局文件当中使用:

<com.jude.rollviewpager.RollPagerView  android:layout_width="match_parent"  android:layout_height="180dp"  app:rollviewpager_play_delay="3000"/>

要使用到RollViewPager自定义属性的时候,在布局文件当中我们必须添加:

xmlns:app="http://schemas.android.com/apk/res-auto

RollPagerView自定义属性:

app:rollviewpager_play_delay="3000" 播放间隔时间,单位ms。填0则不播放。默认为0 app:rollviewpager_hint_gravity="center" 指示器位置,提供left,center,right。默认center
app:rollviewpager_hint_color="#7c7c7c" 指示器背景颜色.默认黑色
app:rollviewpager_hint_alpha="80" 指示器背景透明度。0全透明,255不透明。默认0.
app:rollviewpager_hint_paddingLeft="16dp" 指示器左边距
app:rollviewpager_hint_paddingRight="16dp" 指示器右边距
app:rollviewpager_hint_paddingTop="16dp" 指示器上边距
app:rollviewpager_hint_paddingBottom="16dp" 指示器下边距

一般指定一下间隔时间。

RollViewPager提供了自定义指示器的类:HintView 用法

参数说明:上下文,当前轮播图指示器图片 默认指示器图片
mRollViewPager.setHintView(new IconHintView(this,R.drawable.point_focus,R.drawable.point_normal));
mRollViewPager.setHintView(new ColorPointHintView(this, Color.YELLOW,Color.WHITE));
mRollViewPager.setHintView(new TextHintView(this));
mRollViewPager.setHintView(null);//隐藏指示器

设置点击事件:

pagerView.setOnItemClickListener(new OnItemClickListener() {      @Override      public void onItemClick(int position) {        Toast.makeText(MainActivity.this,""+position,Toast.LENGTH_SHORT).show();      }    });

提供以下三种种方便的PagerAdapter供使用。

本ViewPager也可以使用其他任意PagerAdapter。

StaticPagerAdapter:

存储页面的Adapter。view添加进去就存储不会再次getView,减少页面创建消耗,消耗内存。一般自动播放的情况这种方案比较好。不然会大量构造View。 概念参照FragmentPagerAdapter。可以用于其他ViewPager。

class MyPagerAdapter extends StaticPagerAdapter {    private int[] image = {R.mipmap.one, R.mipmap.two, R.mipmap.three, R.mipmap.four};    // SetScaleType(ImageView.ScaleType.CENTER_CROP);    // 按比例扩大图片的size居中显示,使得图片长(宽)等于或大于View的长(宽)    @Override    public View getView(ViewGroup container, int position) {      ImageView imageView = new ImageView(container.getContext());      imageView.setImageResource(image[position]);      imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);      imageView.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));      return imageView;    }    @Override    public int getCount() {      return image.length;    }  }

DynamicPagerAdapter (跟以上Adapter用法一样)
动态的Adapter。当创建3号view时会销毁1号view(递推),会时常调用getView。增加页面创建消耗,减小内存消耗。 概念参照FragmentStatePagerAdapter。可以用于其他ViewPager。

LoopPagerAdapter

无限循环的Adapter。无限循环上采用的是getCount返回int大数的方法(并没有什么缺点,另外估计1s的间隔时间你在有生之年看不到他播放到底)。实测比第N页跳转到第1页的效果好。

数据采用StaticPagerAdapter的方案。节省创建View开销。 本Adapter只能用于本RollViewPager;

无需其他设置,很简单。

mRollViewPager.setAdapter(new TestLoopAdapter(mRollViewPager));private class TestLoopAdapter extends LoopPagerAdapter{  private int[] imgs = {      R.drawable.img1,      R.drawable.img2,      R.drawable.img3,      R.drawable.img4,  };  public TestLoopAdapter(RollPagerView viewPager) {    super(viewPager);  }  @Override  public View getView(ViewGroup container, int position) {    ImageView view = new ImageView(container.getContext());    view.setImageResource(imgs[position]);    view.setScaleType(ImageView.ScaleType.CENTER_CROP);    view.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));    return view;  }  @Override  public int getRealCount() {    return imgs.length;  }}

播放控制

rollViewPager.pause()rollViewPager.resume()rollViewPager.isPlaying()

MainActivity代码:

public class MainActivity extends AppCompatActivity {  private RollPagerView pagerView;  @Override  protected void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentView(R.layout.activity_main);    pagerView = (RollPagerView) findViewById(R.id.rollPagerView);    //设置适配器    pagerView.setAdapter(new MyPagerAdapter());    pagerView.setOnItemClickListener(new OnItemClickListener() {      @Override      public void onItemClick(int position) {        Toast.makeText(MainActivity.this,""+position,Toast.LENGTH_SHORT).show();      }    });    //对指示器的自定义 参数说明:上下文,当前轮播图指示器图片 默认指示器图片//    pagerView.setHintView(new IconHintView(this,R.mipmap.ic_launcher,R.mipmap.fouse));  }  class MyPagerAdapter extends StaticPagerAdapter {    private int[] image = {R.mipmap.one, R.mipmap.two, R.mipmap.three, R.mipmap.four};    // SetScaleType(ImageView.ScaleType.CENTER_CROP);    // 按比例扩大图片的size居中显示,使得图片长(宽)等于或大于View的长(宽)    @Override    public View getView(ViewGroup container, int position) {      ImageView imageView = new ImageView(container.getContext());      imageView.setImageResource(image[position]);      imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);      imageView.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));      return imageView;    }    @Override    public int getCount() {      return image.length;    }  }}

xml代码:

<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"  xmlns:app="http://schemas.android.com/apk/res-auto"  android:layout_width="match_parent"  android:layout_height="match_parent">  <!--rollviewpager_play_delay 播放时间间隔默认为0-->  <com.jude.rollviewpager.RollPagerView    android:layout_width="match_parent"    android:layout_height="150dp"    android:id="@+id/rollPagerView"    app:rollviewpager_play_delay="3000"    >  </com.jude.rollviewpager.RollPagerView></RelativeLayout>

附上效果图:

RollViewPager如何实现图片轮播效果

关于“RollViewPager如何实现图片轮播效果”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

RollViewPager如何实现图片轮播效果

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

RollViewPager如何实现图片轮播效果

这篇文章将为大家详细讲解有关RollViewPager如何实现图片轮播效果,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。RollViewPager是一个自动轮播的Viewpager,支持无限循环。 触摸时
2023-05-30

Android实现图片轮播效果

本文实例讲述了JaAndroid实现图片轮播效果代码,分享给大家供大家参考。具体如下: 运行效果截图如下:具体代码如下: 首先看下一下布局文件:2022-06-06

JavaScript如何实现首页图片轮播图效果

这篇文章主要介绍“JavaScript如何实现首页图片轮播图效果”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“JavaScript如何实现首页图片轮播图效果”文章能帮助大家解决问题。一、轮番图效果展
2023-07-02

jquery如何实现图片自动轮播效果

这篇文章主要介绍“jquery如何实现图片自动轮播效果”,在日常操作中,相信很多人在jquery如何实现图片自动轮播效果问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”jquery如何实现图片自动轮播效果”的疑
2023-06-29

Android ViewPager实现图片轮播效果

在app中图片的轮播显示可以说是非常常见的实现效果了,其实现原理不过是利用ViewPager,然后利用handler每隔一定的时间将ViewPager的currentItem设置为当前item的position+1即可。先来看看效果图吧:
2022-06-06

React如何实现轮播图效果

这篇文章主要介绍“React如何实现轮播图效果”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“React如何实现轮播图效果”文章能帮助大家解决问题。效果:轮播功能用到了react-slick组件,安装
2023-07-02

css如何实现轮播图效果

本文小编为大家详细介绍“css如何实现轮播图效果”,内容详细,步骤清晰,细节处理妥当,希望这篇“css如何实现轮播图效果”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。1、准备了3张大小相同的图片,将图片的文件名命
2023-07-04

Android实现广告图片轮播效果

本文实例介绍了Android广告轮播图效果实现方法,分享给大家供大家参考,具体内容如下 首先看下一下布局文件:2022-06-06

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录