无线轮播ViewPager封装类
来源:互联网 发布:linux永久挂载硬盘 编辑:程序博客网 时间:2024/06/08 16:04
package bw.com.yunifangstore.view;import android.content.Context;import android.os.Handler;import android.os.Message;import android.support.v4.view.PagerAdapter;import android.support.v4.view.ViewPager;import android.util.AttributeSet;import android.view.MotionEvent;import android.view.View;import android.view.ViewGroup;import android.widget.ImageView;import com.nostra13.universalimageloader.core.DisplayImageOptions;import com.nostra13.universalimageloader.core.ImageLoader;import java.util.ArrayList;import bw.com.yunifangstore.R;import bw.com.yunifangstore.interfaceclass.OnPageClickListener;import bw.com.yunifangstore.utils.CommonUtils;import bw.com.yunifangstore.utils.ImageLoaderUtils;/** * 无线轮播封装类类 */public class RoolViewPager extends ViewPager { private DisplayImageOptions imageOptions; private ArrayList<String> imageUrlList; private ArrayList<ImageView> dotList; private int[] pic; private RoolViewPagerAdapter adapter; private static final int RoolZERO = 0; private Handler handler = new Handler() { @Override public void handleMessage(Message msg) { //获取当前的ViewPager页 int currentItem = RoolViewPager.this.getCurrentItem(); currentItem++; //设置当前 RoolViewPager.this.setCurrentItem(currentItem); //发送消息 this.sendEmptyMessageDelayed(RoolZERO, 2000); } }; private OnPageClickListener onPageClickListener; public RoolViewPager(Context context) { super(context); init(); } public RoolViewPager(Context context, AttributeSet attrs) { super(context, attrs); init(); } private void init() { imageOptions = ImageLoaderUtils.initOptions(); } /** * 调用者也就是其他类的ViewPager传送的数据 * * @param imageUrlList 显示图片的集合 * @param dotList 联动小点的集合(ImageView) * @param pic 存放小点的数组 * @param onPageClickListener 自己设置的回调监听获取索引值 */ public void initData(final ArrayList<String> imageUrlList, final ArrayList<ImageView> dotList, final int[] pic, OnPageClickListener onPageClickListener) { this.imageUrlList = imageUrlList; this.dotList = dotList; this.pic = pic; this.onPageClickListener = onPageClickListener; /** * 小点随之滑动 * 页面滑动监听 */ this.setOnPageChangeListener(new OnPageChangeListener() { @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { } @Override public void onPageSelected(int position) { for (int i = 0; i < dotList.size(); i++) { if (position % imageUrlList.size() == i) { dotList.get(i).setImageResource(pic[0]); } else { dotList.get(i).setImageResource(pic[1]); } } } @Override public void onPageScrollStateChanged(int state) { } }); } /** * 设置适配器 */ public void setRoolAdapter() { if (adapter == null) { adapter = new RoolViewPagerAdapter(); } this.setAdapter(adapter); //发送消息 handler.sendEmptyMessageDelayed(RoolZERO, 2000); } /** * 内部适配器类 */ public class RoolViewPagerAdapter extends PagerAdapter { @Override public int getCount() { return Integer.MAX_VALUE; } @Override public boolean isViewFromObject(View view, Object object) { return view == object; } @Override public Object instantiateItem(ViewGroup container, final int position) { //加载布局视图 View view = CommonUtils.inflate(R.layout.roolviewpager_item); ImageView iv_roolviewpager = (ImageView) view.findViewById(R.id.iv_roolviewpager); //ImageLoader进行异步加载图片 ImageLoader.getInstance().displayImage(imageUrlList.get(position % imageUrlList.size()), iv_roolviewpager, imageOptions); container.addView(view); //点击冲突事件 view.setOnTouchListener(new OnTouchListener() { private long downTime; private float downY; private float downX; @Override public boolean onTouch(View v, MotionEvent event) { switch (event.getAction()) { case MotionEvent.ACTION_DOWN: downX = event.getX(); downY = event.getY(); //按下时间 downTime = System.currentTimeMillis(); handler.removeCallbacksAndMessages(null); break; case MotionEvent.ACTION_UP: float upX = event.getX(); float upY = event.getY(); //抬起时间 long upTime = System.currentTimeMillis(); if (downX == upX && downY == upY && upTime - downTime < 1000) { //自定义监听(下方有) if (onPageClickListener != null) { onPageClickListener.setOnPage(position % imageUrlList.size()); } } handler.sendEmptyMessageDelayed(RoolZERO, 2000); break; } return true; } }); return view; } @Override public void destroyItem(ViewGroup container, int position, Object object) { container.removeView((View) object); } } /** * 当不在当前屏幕时停止轮播 */ @Override protected void onDetachedFromWindow() { super.onDetachedFromWindow(); //停止发送消息 handler.removeCallbacksAndMessages(null); }}//加载布局视图
==============================================================<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" > <ImageView android:id="@+id/iv_roolviewpager" android:layout_width="580px" android:layout_height="350px" android:background="@drawable/sharp_activity_info" android:layout_centerInParent="true" android:layout_centerVertical="true" android:layout_marginBottom="5px" /></RelativeLayout>自定义监听事件 =========================================================================public interface OnPageClickListener { void setOnPage(int position);}
0 0
- 无线轮播ViewPager封装类
- ViewPager 无线轮播
- ViewPager无线轮播
- ViewPager无线轮播
- ViewPager无线轮播
- Viewpager自动无线轮播
- ViewPager+侧滑+无线轮播
- 关于ViewPager的简单无线轮播
- PullToRefreshScrollView+ViewPager无线轮播+ListView展示
- viewpager+自动轮播+无线轮播+小圆点
- android:使用viewpager实现自动无线轮播
- ViewPager无线轮播(图片为n个网址)
- Android---------使用ViewPager无线轮播获得接口的图片(小圆点无线轮播图片)
- 无线轮播
- 无线轮播
- 图片无线轮播
- 无线轮播
- 无线轮播
- [数据结构]第七章-集合与符号表
- 17.单例模式
- java的自定义异常类
- css3中skew与rotateX(),rotateY()的用法
- SQLite数据库简介
- 无线轮播ViewPager封装类
- GCD
- Hibernate4.0取消hibernate template的原因
- 经典排序算法的设计与实现
- GitHub for Windows
- java 递归获取一个目录下的所有文件路径
- 设置控件背景为透明或者半透明 - Android
- 一名设计师,要具备的知识管理思维(二)
- 数据库的增删改查