可自动切换的轮播图(包含位置指示)

来源:互联网 发布:java游戏服务端源码 编辑:程序博客网 时间:2024/05/22 03:40
public class CarouselView extends RelativeLayout {public CarouselView(Context context, AttributeSet attrs) {super(context, attrs);init();}private ScheduledExecutorService executor;private CirclePageIndicator indicator;private ViewPager viewPager;ArrayList<ImageView> list;private ArrayList<? extends View> views;private void init() {LayoutInflater.from(getContext()).inflate(R.layout.layout_carouseview,this);viewPager = (ViewPager) findViewById(R.id.carouseview);indicator = (CirclePageIndicator) findViewById(R.id.carouseview_indicator);}float start_x = 0, start_y = 0, end_x = 0, end_y = 0;public void setData(ArrayList<? extends View> views,ViewPagerAdapter adapter) {this.views = views;viewPager.setOnTouchListener(new View.OnTouchListener() {@Overridepublic boolean onTouch(View v, MotionEvent event) {int action = event.getAction();if (action == MotionEvent.ACTION_DOWN) {// toast("down");// Log.i("zhuxu", "down");start_x = event.getX();start_y = event.getY();} else if (action == MotionEvent.ACTION_UP) {// toast("up");// Log.i("zhuxu", "up");end_x = event.getX();end_y = event.getY();} else if (action == MotionEvent.ACTION_MOVE) {// Log.i("zhuxu", "move : " + "start_x : " + start_x// + "start_y : " + start_y + "end_x : " + end_x// + "end_y : " + end_y);// toast("move");// if (Math.abs(end_x - start_x) > 50 && Math.abs(end_y -// start_y) < 100) {if (Math.abs(end_x - start_x) > Math.abs(end_y - start_y)) {// Log.i("zhuxu", "横向移动!");//此句代码是为了通知他的父View 现在进行的是本控件的操作,不要对我的操作进行干扰v.getParent().requestDisallowInterceptTouchEvent(true);return false; // 是否需要View继续处理} else {//接近垂直滑动,交给父控件处理v.getParent().requestDisallowInterceptTouchEvent(false);// Log.i("zhuxu", "纵向移动!");return true;  // 是否需要View继续处理}}return false;}});viewPager.setAdapter(adapter);indicator.setOnPageChangeListener(new OnPageChangeListener() {@Overridepublic void onPageSelected(int arg0) {isChanged = true;}@Overridepublic void onPageScrolled(int arg0, float arg1, int arg2) {}@Overridepublic void onPageScrollStateChanged(int arg0) {}});indicator.setViewPager(viewPager);}public ViewPager getCarouselView() {return viewPager;}public void startCarouse() {executor = Executors.newSingleThreadScheduledExecutor();executor.scheduleWithFixedDelay(new ViewpagerTask(),2,3, TimeUnit.SECONDS);}public void cancleCarouse() {if (executor != null)executor.shutdown();}private int currentItem = 0;private boolean isChanged = false;private class ViewpagerTask implements Runnable {@Overridepublic void run() {if (isChanged) {isChanged = !isChanged;} else {currentItem = (viewPager.getCurrentItem() + 1) % views.size();post(new Runnable() {public void run() {viewPager.setCurrentItem(currentItem);}});}}}}

0 1
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 小孩吃饭少挑食怎么办 小孩吃饭太少怎么办 孩子不正经吃饭怎么办 月经少卵巢早衰怎么办 四个月婴儿厌食怎么办 孩子读书成绩差怎么办 小孩学习记不住怎么办 儿童不爱吃菜怎么办 10儿童不爱吃饭怎么办 儿童不爱吃蔬菜怎么办 婴儿不爱吃饭怎么办啊 初中不爱写作业怎么办 老是不想写作业怎么办 一年级孩子不爱学怎么办 一年级孩子不爱学习怎么办 我不想读书了怎么办 孩子读书读不懂怎么办 一岁多宝宝不吃奶粉怎么办 小孩不讲话怎么办 舌头 看书记不住内容怎么办 看不下去书怎么办 职高读不下去怎么办 小孩不主动说话怎么办 不喜欢自己的儿子怎么办 生了儿子不喜欢怎么办 孩子不愿意去幼儿园怎么办 内向妈妈带孩子怎么办 从小就不爱学习怎么办 孩子老爱玩不爱学习怎么办? 孩子不爱做题怎么办 看书静不下心怎么办 孩子不自觉学习怎么办 不自觉的孩子怎么办 不学习的孩子怎么办 电脑不受老师控制怎么办 儿子不尊重老师怎么办 小孩不喜欢吃蔬菜怎么办 小孩不愿练钢琴怎么办 孩子不喜欢幼儿园老师怎么办 孩子不主动思考怎么办 我初一不想读书怎么办