Android如何实现图片轮播

实现图片导航界面的轮播,也可以用在app的引导图片实现

xml

  <android.support.v4.view.ViewPager
            android:id="@+id/viewPager"
            android:layout_width="fill_parent"
            android:layout_height="160dp" />

java

activity
viewPager = (ViewPager) mView.findViewById(R.id.viewPager);
        ImageView view1 = new ImageView(ctx);
        view1.setBackgroundResource(R.drawable.test1);
        mViewList.add(view1);
        ImageView view2 = new ImageView(ctx);
        view2.setBackgroundResource(R.drawable.test2);
        mViewList.add(view2);
        ImageView view3 = new ImageView(ctx);
        view3.setBackgroundResource(R.drawable.test3);
        mViewList.add(view3);
        //设置适配器
        adapter = new MhealthAdater(mViewList);
        viewPager.setAdapter(adapter);
        //默认显示的图片
        currentItem = (int) (Integer.MAX_VALUE * 0.5);
        viewPager.setCurrentItem((int) (Integer.MAX_VALUE * 0.5));
        //定时更新UI
        mhandler.sendEmptyMessageDelayed(0, 2000);
        viewPager.setOnPageChangeListener(new OnPageChangeListener() {

            @Override
            public void onPageSelected(int arg0) {
                changeIcon(arg0);
                currentItem = arg0;
            }

            @Override
            public void onPageScrolled(int arg0, float arg1, int arg2) {
            }
            //处于滑动状态时不轮播图片
            @Override
            public void onPageScrollStateChanged(int arg0) {
                if (arg0 == 0) {
                    isScroll = false;
                } else {
                    isScroll = true;
                }
            }
        });


    /*
     * 轮播图片
     */
    private Handler mhandler = new Handler() {

        @Override
        public void handleMessage(Message msg) {
            //递归调用自身
            mhandler.sendEmptyMessageDelayed(0, 2000);
            if (isScroll) {
            } else {
                currentItem = currentItem + 1;
                viewPager.setCurrentItem(currentItem);
                changeIcon(currentItem);
            }

        }

    };
适配器

import java.util.List;

import android.support.v4.view.PagerAdapter;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewParent;
import android.widget.ImageView;


public class MhealthAdater extends PagerAdapter {
    private List<ImageView> mViewList; 
    public MhealthAdater(List<ImageView> mViewList){
        this.mViewList=mViewList;
    }

    @Override
    public void destroyItem(ViewGroup container, int position, Object object) {
        // TODO Auto-generated method stub
//      container.removeView(mViewList.get(position));
    }
//初始化
    @Override
    public Object instantiateItem(ViewGroup container, int position) {
        position %= mViewList.size();  
        ImageView view = mViewList.get(position);  
        //如果View已经在之前添加到了一个父组件,则必须先remove,否则会抛出IllegalStateException。  
        ViewParent vp =view.getParent();  
        if (vp!=null){  
            ViewGroup parent = (ViewGroup)vp;  
            parent.removeView(view);  
        }  
        container.addView(view);    
        //add listeners here if necessary  
        return mViewList.get(position);    
    }


    @Override
    public int getCount() {
        // 设置view数量为最大值,实现左右无限轮播
        return Integer.MAX_VALUE;
    }

    @Override
    public boolean isViewFromObject(View arg0, Object arg1) {
    //推荐使用,View是否来自对象
        return arg0==arg1;
    }
    }  
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值