`
ch_kexin
  • 浏览: 898988 次
  • 性别: Icon_minigender_2
  • 来自: 青岛
社区版块
存档分类
最新评论

android图片轮播效果,RollViewPager的简单使用

 
阅读更多

图片轮播算是我们用的比较多的一个功能,我之前也写过类似的文章,但是说实话自己写并不是特别方便,而且往往bug会比较多。而在github上有一些大神专门写了viewpager的轮播框架并且开源,供大家学习参考,这篇博客就教大家如何简单地使用开源框架RollViewPager。

对RollViewPager有兴趣,或者希望更深入学习的可以直接去github下载源码学习:https://github.com/Jude95/RollViewPager

主要支持的一些功能:

1、图片无限自动轮播

2、触摸时会暂停播放,直到结束触摸一个延迟周期以后继续播放

3、只是其可以为普通圆点,数字及自定义图片,为职业可以改变

4、实现点击事件

主要操作过程:

1、在gradle中导入包(最新版本见github上的文档,这里使用1.2.9):

 

compile 'com.jude:rollviewpager:1.2.9'  

 效果如图:

 

 

2、设置播放时间间隔、透明度、指示器(指示器可以是默认原点,数字,也可以自定义图片)

3、设置适配器,本demo中是StaticPagerAdapter,这个比较简单,用的比较多,有其他需要的可以看github源码。

主要需要设置图片、图片数量等等。

编写布局文件activity_main.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"  
                xmlns:tools="http://schemas.android.com/tools"  
                android:layout_width="match_parent"  
                android:layout_height="match_parent"  
                tools:context=".MainActivity">  
  
    <com.jude.rollviewpager.RollPagerView  
        android:id="@+id/roll_view_pager"  
        android:layout_width="match_parent"  
        android:layout_height="180dp"  
        app:rollviewpager_play_delay="3000"/>  
</RelativeLayout>  

导入本地图片资源: 

MainActivity:

package com.example.double2.rollviewpagertest;  
  
import android.graphics.Color;  
import android.os.Bundle;  
import android.support.v7.app.AppCompatActivity;  
import android.view.Menu;  
import android.view.MenuItem;  
import android.view.View;  
import android.view.ViewGroup;  
import android.widget.ImageView;  
  
import com.jude.rollviewpager.RollPagerView;  
import com.jude.rollviewpager.adapter.StaticPagerAdapter;  
import com.jude.rollviewpager.hintview.ColorPointHintView;  
  
public class MainActivity extends AppCompatActivity {  
  
    private RollPagerView mRollViewPager;  
  
    @Override  
    protected void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
        setContentView(R.layout.activity_main);  
  
        mRollViewPager = (RollPagerView) findViewById(R.id.roll_view_pager);  
  
        //设置播放时间间隔  
        mRollViewPager.setPlayDelay(1000);  
        //设置透明度  
        mRollViewPager.setAnimationDurtion(500);  
        //设置适配器  
        mRollViewPager.setAdapter(new TestNormalAdapter());  
  
        //设置指示器(顺序依次)  
        //自定义指示器图片  
        //设置圆点指示器颜色  
        //设置文字指示器  
        //隐藏指示器  
        //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);  
    }  
  
    private class TestNormalAdapter extends StaticPagerAdapter {  
        private int[] imgs = {  
                R.drawable.img1,  
                R.drawable.img2,  
                R.drawable.img3,  
                R.drawable.img4,  
        };  
  
  
        @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));  
            view.setTag(position);
            view.setOnClickListener(new View.OnClickListener() { // 点击事件
                @Override
                public void onClick(View v) {
                    Toast.makeText(getActivity(), "点击了第" + v.getTag() + "张图片", Toast.LENGTH_SHORT).show();
                }

            });
            return view;  
        }  
  
  
        @Override  
        public int getCount() {  
            return imgs.length;  
        }  
    }  
  
}  

 加载网络图片资源(适配器用的是LoopPagerAdapter):

package edu.neu.steve.rollviewpagerdemo;

import android.graphics.Color;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.Toast;

import com.jude.rollviewpager.RollPagerView;
import com.jude.rollviewpager.adapter.LoopPagerAdapter;
import com.jude.rollviewpager.hintview.ColorPointHintView;

public class MainActivity extends AppCompatActivity
{

    private RollPagerView mRollViewPager;

    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        mRollViewPager = (RollPagerView) findViewById(R.id.roll_view_pager);
        mRollViewPager.setAnimationDurtion(500);     //设置切换时间
        mRollViewPager.setAdapter(new TestLoopAdapter(mRollViewPager)); //设置适配器
        mRollViewPager.setHintView(new ColorPointHintView(this, Color.WHITE, Color.GRAY));// 设置圆点指示器颜色
        // mRollViewPager.setHintView(new IconHintView(this, R.drawable.point_focus, R.drawable.point_normal));
    }

    private class TestLoopAdapter extends LoopPagerAdapter
    {
        private int[] imgs = {R.drawable.img0, R.drawable.img1, R.drawable.img2, R.drawable.img3, R.drawable.img4,};  // 本地图片  
        private int count = imgs.length;        // banner上图片的数量

        public TestLoopAdapter(RollPagerView viewPager)
        {
            super(viewPager);
        }

        @Override
        public View getView(ViewGroup container, int position)
        {
            final int picNo = position + 1;
            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));
            view.setOnClickListener(new View.OnClickListener()      // 点击事件
            {
                @Override
                public void onClick(View v)
                {
                    Toast.makeText(MainActivity.this, "点击了第" + picNo + "张图片", Toast.LENGTH_SHORT).show();
                }

            });

            return view;
        }

        @Override
        public int getRealCount()
        {
            return count;
        }

    }
}

 通常在我们的APP中banner的内容是从服务器端获取的。在Activity创建时(onCreate方法中)客户端要向服务器发送GET请求,目的是拿到banner图片的URL,当客户端拿到服务器返回的banner图片URL后通知banner更新图片(必须严格按照顺序进行)

mRollViewPager.setAdapter(new TestLoopAdapter(mRollViewPager)); // 设置适配器(请求网络图片,适配器要在网络请求完成后再设置)
mRollViewPager.getViewPager().getAdapter().notifyDataSetChanged();// 更新banner图片

  然后在自定义适配器TestLoopAdapter的getView方法中加载网络图片。这里使用Picasso,一行代码搞定!

Picasso.with(mContext).load(bannerPictureURLs.get(position)).into(view);  // 加载网络图片

  通过上述代码配合网络请求即可完成在轮播图中加载网络图片的功能,网络请求推荐使用OkHttp来实现,这里不再赘述。

 

 

分享到:
评论

相关推荐

    Android RollViewPager轮播图控件的使用

    总结,RollViewPager是一个强大且易用的Android轮播图控件,它简化了轮播图的实现过程,提供了丰富的定制化选项。开发者可以通过简单的步骤集成并使用这个控件,快速地在应用中实现高质量的轮播图功能。同时,其开源...

    RollViewPager图片轮播效果开源框架使用方法详解

    RollViewPager是一款专为Android平台设计的自动...总之,RollViewPager是一个强大且灵活的图片轮播组件,通过其丰富的自定义选项和内置的优化策略,可以帮助开发者轻松地在Android应用中实现专业级别的图片轮播效果。

    Android开发-图片轮播

    RollViewpager是一个轻量级的Android图片轮播库,它提供了简单的API来实现图片滑动和自动切换效果。通过30行代码就能快速集成,这使得开发者能够节省大量时间,专注于其他核心业务逻辑的开发。 首先,我们需要在...

    RollViewPager图片轮播

    在Android开发中,实现图片轮播功能可以借助多种方式,其中之一是使用第三方库,如本例中的"RollViewPager"。RollViewPager是一个专门用于图片轮播的组件,它能够提供平滑的过渡效果,使得图片的切换更为自然。 ...

    RollViewPager轮播图,文字 图片一起轮播,简单易懂

    本项目名为"RollViewPager",旨在实现一个包含文字和图片的轮播效果,使得开发者能够轻松地在应用中集成这种功能。RollViewPager基于ViewPager的扩展,增加了文字和图片结合的轮播能力,对于初学者或希望提升Android...

    RollViewPager无限轮播点击

    1. **无限轮播**:`RollViewPager`通过巧妙地设置适配器的数据源,实现了视觉上的无限循环效果。当用户滑动到最后一个页面时,会无缝跳转回第一个页面,反之亦然,从而营造出没有边界的效果。 2. **点击事件支持**...

    RollViewPager

    `RollViewPager`是专为此目的设计的一个自定义组件,它允许开发者创建一个可以自动滚动并支持无限翻页的图片轮播效果。本文将深入探讨`RollViewPager`的原理、实现方式以及如何在项目中应用。 1. **组件原理** `...

    RollViewPager轮播图

    RollViewPager是Android平台上的一个第三方库,它为开发者提供了一种高效、易用的方式来实现这种效果。本文将详细介绍RollViewPager的主要特性和使用方法。 ### 1. RollViewPager概述 RollViewPager是基于Android...

    Android RollPagerView实现轮播图

    android图片轮播效果,RollViewPager的简单使用  &lt;com android:id=@+id/mViewPager android:layout_width=match_parent android:layout_height=170dp app:rollviewpager_play_delay=3000&gt;  在build.gradle...

    [M]无限新闻轮播图(支持手动和自动两种方式)

    "无限新闻轮播图(支持手动和自动两种方式)"这个标题指出的是一个Android开发中的功能模块,通常用于应用的首页或者新闻资讯类应用,用来展示不断循环播放的新闻标题或者图片。"无限"意味着轮播图在达到最后一个...

    轮播控件RollPagerView的使用

    RollPagerView 是一个专为实现这种功能而设计的控件,它使得开发者可以轻松地在Android应用中添加图片轮播效果,无需编写大量的自定义代码。 RollPagerView 的核心特性在于其简洁易用的API,这使得开发者能够快速...

    RollViewPager无限轮播使用方法详解

    通过以上步骤,你就成功地在Android应用中实现了RollViewPager的无限轮播效果。当然,你还可以根据实际需求调整更多参数,如添加点击事件监听、自定义指示器样式等,以满足不同应用场景的需求。记得在实际项目中,要...

    新版代码RollViewPager

    总之,新版RollViewPager是Android开发中的一个实用工具,它为开发者提供了一种更加便捷的方式来实现滑动视图的效果,提升了用户体验,并且降低了开发成本。通过深入研究和实践,开发者可以充分利用这个组件,创造出...

    test_RollViewPager

    通过深入理解并正确使用"test_RollViewPager",开发者可以轻松实现具有专业级体验的循环轮转大图展示功能,提升应用的视觉效果和用户互动性。在实际开发中,根据项目需求,还可以进一步自定义样式、动画效果以及图片...

    ViewPager轮播图

    ViewPager是Android平台上一个强大的视图滑动容器,常用于实现页面间的滑动切换效果,比如在许多应用的启动页或广告展示中,我们经常会看到图片的无限轮播功能。本教程将详细介绍如何利用ViewPager实现网络图片的...

    viewpager无线轮播

    项目可能包括一个自定义的`PagerAdapter`类、布局文件以及展示无线轮播效果的Activity或Fragment。通过研究该项目的源代码,开发者可以学习如何实现无线轮播,并将其应用到自己的项目中。 总的来说,`ViewPager`的...

    Android代码-Swen

    3、RollViewPager循环轮播控件 4、Glide加载网络图片 5、jiecaovideoplayer加载网络视频 用到的控件有: 1、DrawerLayout Toolbar ActionBarDrawerToggle实现抽屉效果 2、TabLayout ViewPager Fragment实现页面切换 ...

Global site tag (gtag.js) - Google Analytics