package com.bwie.view; import java.util.ArrayList; import java.util.List; import android.app.Activity; import android.os.Bundle; import android.os.Handler; import android.support.v4.view.PagerAdapter; import android.support.v4.view.ViewPager; import android.support.v4.view.ViewPager.OnPageChangeListener; import android.view.MotionEvent; import android.view.View; import android.view.View.OnTouchListener; import android.view.ViewGroup; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.LinearLayout.LayoutParams; public class MainActivity extends Activity { List<View> views=new ArrayList<View>(); private ViewPager vp; private LinearLayout ll_dot; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); vp = (ViewPager) findViewById(R.id.vp); ll_dot=(LinearLayout)findViewById(R.id.ll_dot); init(); loaddot(); vp.setAdapter(adapter); vp.setCurrentItem(views.size()*100000); sendmesg(); vp.setOnPageChangeListener(listener); } Handler handler=new Handler(){ public void handleMessage(android.os.Message msg) { int item=vp.getCurrentItem(); item++; vp.setCurrentItem(item); sendEmptyMessageDelayed(0, 2000); } }; private void sendmesg() { handler.sendEmptyMessageDelayed(0, 2000); } OnPageChangeListener listener=new OnPageChangeListener() { @Override public void onPageSelected(int arg0) { for (int i = 0; i < imgs.size(); i++) { if(arg0%imgs.size()==i){ imgs.get(i).setImageResource(R.drawable.dot_fouces); }else{ imgs.get(i).setImageResource(R.drawable.dot_normal); } } } @Override public void onPageScrolled(int arg0, float arg1, int arg2) { } @Override public void onPageScrollStateChanged(int arg0) { } }; public void init(){ View v1=View.inflate(this, R.layout.v1, null); View v2=View.inflate(this, R.layout.v2, null); View v3=View.inflate(this, R.layout.v3, null); View v4=View.inflate(this, R.layout.v4, null); View v5=View.inflate(this, R.layout.v5, null); views.add(v1); views.add(v2); views.add(v3); views.add(v4); views.add(v5); } public void loaddot(){ imgs = new ArrayList<ImageView>(); imgs.clear(); for (int i = 0; i < views.size(); i++) { ImageView iView=new ImageView(this); if(i==0){ iView.setImageResource(R.drawable.dot_fouces); }else{ iView.setImageResource(R.drawable.dot_normal); } LayoutParams params=new LayoutParams(20, 20); params.setMargins(5, 0, 5, 0); ll_dot.addView(iView, params); imgs.add(iView); } } PagerAdapter adapter=new PagerAdapter() { @Override public boolean isViewFromObject(View arg0, Object arg1) { return arg0==arg1; } @Override public int getCount() { return Integer.MAX_VALUE; } @Override public Object instantiateItem(ViewGroup container, int position) { View view= views.get(position%views.size()); view.setOnTouchListener(new OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { switch (event.getAction()) { case MotionEvent.ACTION_DOWN: handler.removeCallbacksAndMessages(null); break; case MotionEvent.ACTION_UP: handler.sendEmptyMessageDelayed(0, 2000); break; case MotionEvent.ACTION_CANCEL: handler.sendEmptyMessageDelayed(0, 2000); break; default: break; } return true; } }); container.addView(view); return views.get(position%views.size()); } @Override public void destroyItem(ViewGroup container, int position, Object object) { container.removeView((View) object); } }; private List<ImageView> imgs; }
<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> <corners android:radius="8dp"></corners> <solid android:color="#fff"></solid> </shape>
<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> <corners android:radius="8dp"></corners> <solid android:color="#88000000"></solid> </shape>
相关推荐
在Android开发中,实现一个美观且功能完善的...以上就是使用`ViewPager`实现图片轮播,包括自动轮播和左右无限制滑动的详细步骤。这个解决方案已经经过验证,可以放心使用。记得根据实际需求调整代码,以适应你的项目。
通过上述步骤,我们就能实现一个功能完备的ViewPager无限轮播效果。无论是自定义的适配器,还是自动轮播机制,都是为了提供流畅且无边界的用户体验。在实际开发中,可以根据项目需求灵活调整和扩展这些实现。
本教程将详细讲解如何利用ViewPager实现图片自动轮播并做到无限循环,同时确保流畅性。 首先,我们需要理解ViewPager的基本用法。ViewPager是Android Support Library的一部分,它可以让你在水平方向上滑动浏览多个...
本知识点将详细介绍如何利用ViewPager实现图片自动轮播和无限循环的效果,使得用户体验更加流畅。 首先,ViewPager的自动轮播功能主要依赖于一个定时器(Timer)和一个定时任务(TimerTask)。定时器负责定期触发...
这个是是修正版,之前那个资源有bug,完美仿照网易云音乐首页图片无限轮播,触摸停止轮播,松开几秒后继续播放,非常好的实例。
总之,实现ViewPager无限循环轮播的关键在于理解ViewPager的工作原理,以及如何通过自定义适配器和监听器来控制页面的加载和切换。在实际开发中,可以根据具体需求调整和优化这些步骤,以实现更加复杂或定制化的功能...
在这个自定义的ViewPager实现中,我们着重讨论如何让它具备无限轮播功能,支持手动滑动和自动播放。 1. **无限轮播**: 为了实现无限轮播,我们需要在数据源中添加首尾元素的副本。当用户向左滑动到最后一个页面时...
在这个主题中,我们将深入探讨如何自定义一个`ViewPager`实现自动轮播组件。下面将详细讲解相关知识点。 首先,我们来看`ViewPager`的基本用法。`ViewPager`继承自` ViewGroup`,它允许用户通过左右滑动来切换不同...
通过研究和理解这段代码,你将能够掌握如何在Android应用中构建一个高效且用户友好的无限循环ViewPager自动轮播功能。这个实例不仅可以应用于音乐应用,还可以广泛应用于新闻、广告等需要轮播效果的场景。
本Demo重点展示了如何实现ViewPager的自动轮播功能,结合无限循环和手动滑动时的智能暂停,同时还有底部动态小圆点的显示,来指示当前展示的页面。以下将详细介绍这些知识点。 **1. ViewPager自动轮播** 要实现...
【标题】:ViewPager无限自动循环实现教程 在Android开发中,`ViewPager`是一个非常常用的组件,它用于展示可滑动的页面,常用于实现类似轮播图的效果。本教程将详细讲解如何创建一个无限自动循环的`ViewPager` ...
在这个“安卓ViewPager广告轮播图实现无限轮播”的示例中,我们将深入探讨如何利用ViewPager创建一个能够自动无限循环的广告轮播效果。 首先,ViewPager的核心在于其`PagerAdapter`的实现。在这里,我们需要创建一...
在本篇文章中,我们将深入探讨如何利用`ViewPager`实现无限自动轮播图,以及与之相关的技术点。 首先,我们要明白`ViewPager`的核心原理。`ViewPager`通过`PagerAdapter`来管理页面,它会根据用户滑动的行为加载或...
在这个"ViewPager无限轮播Demo"中,我们将探讨如何利用ViewPager实现一个自动循环播放的效果,这在很多应用场景中都非常常见,如广告轮播、图片展示等。以下是关于这个主题的详细解释: 1. **ViewPager基本概念**:...
`ViewPager`是Android提供的一个用于展示多个页面并可滑动切换的视图,而`Handler`则用于处理消息循环和延迟执行任务,它们结合可以实现广告图片的自动轮播效果。下面我们将详细探讨如何利用这两者来构建这样的功能...
为了实现自动轮播,我们可以使用Handler和Runnable。在Runnable中,我们改变ViewPager的当前位置,并在处理完一次自动滑动后重新调度自身。同时,需要在Activity的生命周期方法中管理这个Runnable,防止内存泄漏。 ...
在这个“Android viewpager网络加载图片无限自动轮播demo”中,开发者已经实现了一个功能强大的轮播器,它不仅可以从网络上加载图片,还能自动进行无限循环播放,为用户带来流畅的视觉体验。以下将详细介绍这个demo...
"Android 使用 ViewPager 实现自动无限轮播图" Android 中的 ViewPager 是一个非常实用的控件,可以用来实现各种类型的滑动效果,而自动无限轮播图正是其中的一种常见应用场景。下面将详细介绍如何使用 ViewPager ...
支持自动轮播 支持一屏三页 支持自定义Indicator 支持自定义view 支持垂直滚动 支持任意RecyclerView.adapter 目前就4个类,良好的代码封装,更多请参考代码实现。 ViewPager2是androidx中的 还在使用support请使用...
1. **ViewPager无限循环**:常规的ViewPager会在达到最后一个页面后停止,但为了实现轮播效果,我们需要让它能从第一个页面无缝过渡到最后一个页面,反之亦然,即实现无限循环。这通常通过复制数据集并在两端添加...