标签:
最近项目中要实现一个滚动banner,效果大体如下图
这个自己写实在是不方便,而且写出来也很难保证没有bug和性能缺陷,好在网上有人开源了一个实现滚动banner的RollViewPager框架,亲测方便可行。这篇博文简单记录一下如何使用开源框架RollViewPager实现Android滚动banner,想要深入学习可以去github下载源码:https://github.com/Jude95/RollViewPager
这里主要实现的效果有:1. 图片无限轮播
2. 触摸时暂停轮播
3. 指示器可以为普通原点、数字以及自定义图片
4. 实现点击事件
操作流程:
1. 在gradle中添加依赖(最新版本见github上的文档,这里使用1.3.2),然后同步gradle
2. 编写布局文件activity_main.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" xmlns:app="http://schemas.android.com/apk/res-auto" tools:context="edu.neu.steve.rollviewpagerdemo.MainActivity"> <com.jude.rollviewpager.RollPagerView android:id="@+id/roll_view_pager" android:layout_width="match_parent" android:layout_height="210dp" app:rollviewpager_play_delay="3000" app:rollviewpager_hint_paddingBottom="8dp" /> </LinearLayout>
3. 编写MainActivity.java
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; 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; } } }
4. 导入图片资源
一般应用里banner内容是从服务器获取的,这部分随后我会补充进来。。。
用RollViewPager实现Android滚动banner
标签:
原文地址:http://www.cnblogs.com/eniac12/p/5700158.html