用ViewPager实现轮播效果

public class SamplePagerView extends RelativeLayout{

public SamplePagerView(Context context, AttributeSet attrs, int defStyle) {

super(context, attrs, defStyle);

// TODO Auto-generated constructor stub

LayoutInflater.from(context).inflate(R.layout.viewpager_in, this);

}

public SamplePagerView(Context context, AttributeSet attrs) {

super(context, attrs);

// TODO Auto-generated constructor stub

LayoutInflater.from(context).inflate(R.layout.viewpager_in, this);

}

public SamplePagerView(Context context) {

super(context);

// TODO Auto-generated constructor stub

this.mContext = (FragmentActivity) context;

LayoutInflater.from(context).inflate(R.layout.viewpager_in, this);

}

private FragmentActivity mContext;

public FragmentActivity getmContext() {

return mContext;

}

public void setmContext(FragmentActivity mContext) {

this.mContext = mContext;

}

private CoustomViewPager viewPager;

private ImageView[] imageViews;

private TestFragmentAdapter mAdapter;

private ArrayList<ImageBean> imageBeans = new ArrayList<ImageBean>();

public ArrayList<ImageBean> getImageBeans() {

return imageBeans;

}

public void setImageBeans(ArrayList<ImageBean> imageBeans) {

this.imageBeans = imageBeans;

}

/**

* 每隔多长时间执行一次

*/

private int interval_time = 5000;

public int getInterval_time() {

return interval_time;

}

/**

* 设置轮播间隔时间

* @param interval_time

*/

public void setInterval_time(int interval_time) {

this.interval_time = interval_time;

}

/**

* 判断是否正在手势滑动

*/

private boolean isOnTouchMove = false;

public boolean isOnTouchMove() {

return isOnTouchMove;

}

public void setOnTouchMove(boolean isOnTouchMove) {

this.isOnTouchMove = isOnTouchMove;

}

public boolean isOpen() {

return isOpen;

}

public void setOpen(boolean isOpen) {

this.isOpen = isOpen;

}

/**

* 控制开启和关闭自动轮播,默认关闭

*/

private boolean isOpen = false;

public void init(){

initArrayList();

initCircle();

initData();

mHandler.postDelayed(mRunnable, interval_time);

}

/**

* 初始化viewpager数据

*/

private void initData() {

mAdapter = new TestFragmentAdapter(mContext.getSupportFragmentManager(), imageBeans);

viewPager = (CoustomViewPager)findViewById(R.id.viewPager);

viewPager.setPagerView(this);

viewPager.setAdapter(mAdapter);

viewPager.setOnPageChangeListener(new MyListener(imageBeans, imageViews));

viewPager.setCurrentItem(MyListener.num);

}

private void initArrayList(){

ImageBean imageBean2 = new ImageBean("2", "http://pic2.ooopic.com/11/75/33/20bOOOPIC41.jpg", R.drawable.p1);

ImageBean imageBean3 = new ImageBean("3", "http://pic.58pic.com/58pic/10/95/82/54q58PICeI2.jpg", R.drawable.p1);

ImageBean imageBean6 = new ImageBean("6", "http://pic.58pic.com/58pic/11/15/98/26T58PICCa3.jpg", R.drawable.p1);

ImageBean imageBean7 = new ImageBean("7", "http://pic.58pic.com/01/05/43/43bOOOPIC1e.jpg", R.drawable.p1);

ImageBean imageBean8 = new ImageBean("8", "http://pic.58pic.com/58pic/11/15/47/91u58PICpYF.jpg", R.drawable.p1);

ImageBean imageBean9 = new ImageBean("9", "http://pic.58pic.com/10/19/41/49bOOOPIC03.jpg", R.drawable.p1);

ImageBean imageBean10 = new ImageBean("10", "http://pic.58pic.com/58pic/11/12/92/87k58PICVwj.jpg", R.drawable.p1);

imageBeans.add(imageBean2);

imageBeans.add(imageBean3);

imageBeans.add(imageBean6);

imageBeans.add(imageBean7);

imageBeans.add(imageBean8);

imageBeans.add(imageBean9);

imageBeans.add(imageBean10);

}

/**

* 初始化底部圆点

*/

private void initCircle() {

int imageSize = imageBeans.size();

imageViews = new ImageView[imageSize];

LinearLayout linearLayout = (LinearLayout) findViewById(R.id.viewGroup);

for (int i = 0; i < imageSize; i++) {

imageViews[i] = new ImageView(mContext);

imageViews[i].setLayoutParams(new LayoutParams(12,12));

if (i == 0) {

imageViews[i].setBackgroundResource(R.drawable.hollow_circle);

} else {

imageViews[i].setBackgroundResource(R.drawable.solid_circle);

}

linearLayout.addView(imageViews[i]);

}

}

private Handler mHandler =  new Handler() {

@Override

public void handleMessage(Message msg) {

viewPager.setCurrentItem(msg.what);

super.handleMessage(msg);

}

};

private Runnable mRunnable = new Runnable() {

public void run() {

//每隔多长时间执行一次

mHandler.postDelayed(mRunnable, interval_time);

int length = imageBeans.size();

//如果手指没有滑动并且集合长度>1,同时开关是开的开启自动轮播

if(!isOnTouchMove && isOpen && length > 1){

MyListener.num++;

mHandler.sendEmptyMessage(MyListener.num);

}

}

};

具体的demo下载地址:http://download.csdn.net/detail/u010820846/8592653

时间: 2024-10-10 09:55:11

用ViewPager实现轮播效果的相关文章

Android中使用ViewPager实现屏幕页面切换和页面轮播效果

之前关于如何实现屏幕页面切换,写过一篇博文<Android中使用ViewFlipper实现屏幕切换>,相比ViewFlipper,ViewPager更适用复杂的视图切换,而且Viewpager有自己的adapter,这也让其适应复杂对象,实现数据的动态加载. ViewPager是谷歌官方给我们提供的一个兼容低版本安卓设备的软件包,里面包囊了只有在安卓3.0以上可以使用的api.而viewpager就是其中之一,利用它,我们可以做很多事情,从最简单的导航,到页面菜单等等. 下面我们就展示下Vie

Android开发之ViewPager实现轮播图(轮播广告)效果的自定义View

最近开发中需要做一个类似京东首页那样的广告轮播效果,于是采用ViewPager自己自定义了一个轮播图效果的View. 主要原理就是利用定时任务器定时切换ViewPager的页面. 效果图如下: 主页面布局实现如下: <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android&

ViewPager手势切换页面+图片左右轮播效果(精简版本)

效果图是:手势可以左右滑动界面,并且自动从第一张开始轮播到最后一张图片,紧接着开始从最后一张图片开始向反方向第一张轮播 如果你需要轮播效果,(我这个是精简版本的)  如果你需要手势来回切换图片  如果你不需要ui提供定位圆点 那么这篇博客  值得你看看 源码地址就不传了,代码已经贴出,你可以随便放5张图片即可 activity_main.xml <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android

viewPager+Handler+Timer简单实现广告轮播效果

基本思想是在Avtivity中放一个ViewPager,然后通过监听去实现联动效果,代码理由详细的解释,我就不说了. MainActivity.java 1 package com.example.administrator.imageviewlunbodemo; 2 3 import android.app.Activity; 4 import android.os.Bundle; 5 import android.os.Handler; 6 import android.os.Message

Android使用ViewPager实现左右循环滑动及轮播效果

ViewPager是一个常用的android组件,不过通常我们使用ViewPager的时候不能实现左右无限循环滑动,在滑到边界的时候会看到一个不能翻页的动画,可能影响用户体验.此外,某些区域性的ViewPager(例如展示广告或者公告之类的ViewPager),可能需要自动轮播的效果,即用户在不用滑动的情况下就能够看到其他页面的信息. 为此我查阅了网络上现有的一些关于实现这样效果的例子,但都不是很满意,经过反复实验,在这里总结并分享给大家,希望能有所帮助. 循环滑动效果的实现:PagerAdap

Android使用ViewPager做轮播

ViewPager.html div.oembedall-githubrepos { border: 1px solid #DDD; list-style-type: none; margin: 0 0 10px; padding: 8px 10px 0; font: 13.34px/1.4 helvetica, arial, freesans, clean, sans-serif; width: 452px; background-color: #fff } div.oembedall-git

Android UI - 实现广告Banner轮播效果

Android UI - 实现广告Banner轮播效果 前言 本篇博客要分享的一个效果是实现广告Banner轮播效果,这个效果也比较常见,一些视频类应用就经常有,就拿360影视大全来举例吧: 用红框框住的那个效果就是小巫今天要分享的,先来思考一下会用到什么控件?有什么用户体验? 控件我们可能一下子就可以想到的自然是ViewPager,没错!用到的就是ViewPager,那么它会有什么用户体验呢,它可能有以下几个体验: 1. 间隔不停的切换图片,指示器也跟着变 2. 点击图片可以跳转到指定的页面

CSS3图片轮播效果

原文:CSS3图片轮播效果 在网页中用到图片轮播效果,单纯的隐藏.显示,那再简单不过了,要有动画效果,如果是自己写的话(不用jquery等),可能要费点时间.css3的出现,让动画变得不再是问题,而且简单易用.下面介绍我用css3与js写的一个图片轮播效果. 一般图片轮播就是三四张图片: <div class="wrap"> <div class="carousel"> <div><img src="http://

网站——如何实现轮播效果

实现轮播效果需要运用到的知识: DOM操作 定时器 事件运用 Js动画 函数递归 无限滚动 原理:控制图片列表的“left”值来显示相应的图片 组成部分<div id="container">: <div id="list">//图片列表 <div id="list" style="left:-600px">//当图片的宽度全部为600px时 <img src=""