轮播图Demo

  • Z6_208430
    了解作者
  • 2.3MB
    文件大小
  • zip
    文件格式
  • 0
    收藏次数
  • VIP专享
    资源类型
  • 0
    下载次数
  • 2022-06-06 02:55
    上传日期
Android ViewPager 实现轮播图的Demo
AutoShowPager.zip
内容介绍
package com.hong.autoshowpager; import android.os.Handler; import android.os.Message; import android.support.v4.view.PagerAdapter; import android.support.v4.view.ViewPager; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; 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; public class MainActivity extends AppCompatActivity { ViewPager viewPager; private MyViewPager adapter; private ArrayList<String> showImages;//网络数据(图片的url) private DisplayImageOptions options;//加载图片的option设置(universal-imageloader框架) /** * 自动轮播效果; */ private Handler handler = new Handler() { @Override public void handleMessage(Message msg) { switch (msg.what) { case 1: int currentItem = viewPager.getCurrentItem();//获取当前pager的position viewPager.setCurrentItem(currentItem + 1);//收到消息后,播放下一张 removeCallbacksAndMessages(null);//移除消息回调 sendEmptyMessageDelayed(1, 3000);//再次发送播放下一张的消息; break; } } }; private MyOnPageChangeListener myOnPageChangeListenr; int currentPosition; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); options = new DisplayImageOptions.Builder()//option的设置 .showImageOnLoading(R.drawable.ic_launcher) .cacheOnDisk(true) .cacheInMemory(true) .build(); viewPager = (ViewPager) findViewById(R.id.viewpager); currentPosition = showImages.size() * 2000;//设置初始化时显示第 currentPosition 页;可以设置很大显示position值 adapter = new MyViewPager(); showImages = ContentUtils.getShowImages();//从数据类里面获得播放的图片数据 viewPager.setCurrentItem(currentPosition);//设置到 currentPosition 的页面 myOnPageChangeListenr = new MyOnPageChangeListener(); viewPager.setAdapter(adapter); viewPager.addOnPageChangeListener(myOnPageChangeListenr);//给viewPager设置监听事件 handler.sendEmptyMessageDelayed(1, 3000);//发送延迟消息,每3秒播放下一张 } /** * 适配器 */ private class MyViewPager extends PagerAdapter { @Override public void destroyItem(ViewGroup container, int position, Object object) { container.removeView((View) object); } @Override public Object instantiateItem(ViewGroup container, int position) { View pager1 = View.inflate(getApplicationContext(), R.layout.item_pager, null); ImageView imageView = (ImageView) pager1.findViewById(R.id.item_imageview); //对Position进行取模,因为 getCount() 方法里面返回的数量是很大的;否则会 OutOfIndexException 错误 ImageLoader.getInstance().displayImage(showImages.get(position % showImages.size()), imageView, options); container.addView(pager1); return pager1; } @Override public int getCount() { return showImages.size() * 5000;//当然也可以写成:Integer.MAX_VALUE; 随你心情; } @Override public boolean isViewFromObject(View view, Object object) { return object == view; } } /** * 实现监听的类 * 在拖拽状态时不进行轮播 */ private class MyOnPageChangeListener implements ViewPager.OnPageChangeListener { @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { } @Override public void onPageSelected(int position) { } @Override public void onPageScrollStateChanged(int state) { if (state == ViewPager.SCROLL_STATE_DRAGGING) {//在 拖拽 的时候移除消息回调 handler.removeCallbacksAndMessages(null); } else if (state == ViewPager.SCROLL_STATE_SETTLING) {//在 松手复位 的时候重新发送消息 handler.sendEmptyMessageDelayed(1, 3000); } else if (state == ViewPager.SCROLL_STATE_IDLE) {//在 空闲 时候发送消息 handler.sendEmptyMessageDelayed(1, 3000); } } } }
评论
    相关推荐
    • android
      掌握Android Studio开发环境的搭建步骤,能够独立搭建 Android Studio开发环境
    • android
      android
    • android
      Android回购
    • android
      android
    • android课件
      清华老师上课的android课件。ch_01android概述ch_02android开发基础ch_03资源的访问ch_04android用户界面ch_05Ativity和Intent。其他自己看。
    • androidandroid
      androidandroidandroidandroidandroidandroidandroid
    • Android 教程
      Android 案例 教程,Android 案例 教程,Android 案例 教程,Android 案例 教程,Android 案例 教程,Android 案例 教程,Android 案例 教程,Android 案例 教程,Android 案例 教程,Android 案例 教程,Android ...
    • Android
      Android
    • Android
      Android