android 图片轮播

来源:互联网 发布:我睡过的那些知乎女神 编辑:程序博客网 时间:2024/05/18 22:56

android 图片轮播

1.在XML文件中,添加ViewPager控件。

<android.support.v4.view.ViewPager        android:id="@+id/adv_viewPager"        android:layout_width="match_parent"        android:layout_height="180dp" />

2.自定义类继承PagerAdapter

public class MyPagerAdapter extends PagerAdapter {    private static final String TAG = MyPagerAdapter.class.getSimpleName();    private final Context mContext;    private final List<ImageView> images;    public MyPagerAdapter(Context context, @NotNull List<ImageView> images) {        this.images = images;        mContext = context;    }    @Override    public int getCount() {        return images.size();    }    @Override    public boolean isViewFromObject(View view, Object object) {        return view.equals(object);    }    /**     * @param container viewpager     * @param position  当前位置     */    @Override    public Object instantiateItem(ViewGroup container, int position) {        Log.i(TAG, "================instantiateItem: " + position);        ImageView imageView = images.get(position);        ViewParent parent = imageView.getParent();        ViewGroup group = (ViewGroup) parent;        if (group != null) { // 判断imageView的父容器中是否包含该控件,包含的话则移除。否则会报IllegalStateException            group.removeView(imageView);        }        container.addView(imageView);        return imageView;    }    @Override    public void destroyItem(ViewGroup container, int position, Object object) {        Log.i(TAG, "================destroyItem: " + position);    }}

3.MainActivity中,使用handler延时实现图片轮播效果

    private ViewPager pager;    private int[] advImages = new int[]{R.mipmap.a, R.mipmap.b, R.mipmap.c, R.mipmap.d, R.mipmap.e};    private List<ImageView> lists;    private int curItem = 0; // 当前页面    boolean isAutoPlay = true;    private MyPagerAdapter myPagerAdapter;    private Handler handler = new Handler() {        @Override        public void handleMessage(Message msg) {            switch (msg.what) {                case 1:                    if (curItem == 0) {                        pager.setCurrentItem(curItem, false); // 从末跳到首页时,不显示翻页动画                    } else {                        pager.setCurrentItem(curItem);                    }                    curItem = (curItem + 1) % advImages.length;                    handler.sendEmptyMessageDelayed(1, 3000);                    break;            }        }    };    @Nullable    @Override    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {        View view = inflater.inflate(R.layout.fragment_viewpager, container, false);        pager = (ViewPager) view.findViewById(R.id.adv_viewPager);        lists = new ArrayList<>();        for (int i = 0; i < advImages.length; i++) {            ImageView imageView = new ImageView(getContext());            imageView.setImageResource(advImages[i]);            lists.add(imageView);        }        myPagerAdapter = new MyPagerAdapter(getContext(), lists);        pager.setAdapter(myPagerAdapter);        handler.sendEmptyMessage(1);        return view;    }
1 0
原创粉丝点击