android 图片轮播 viewpager

效果如下。






1,一个activity.代码有注释。直接用。



package com.example.lenovo.bean.retrofit;

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.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.Toast;

import com.example.lenovo.bean.R;

import java.util.ArrayList;

public class ViewPageActivity extends Activity {

    private ViewPager viewpager;
    private ArrayList<View> list=new ArrayList<>();
    private ArrayList<RadioButton> radioButtons = new ArrayList<>();//下标
    private RadioGroup radioGroup;
    private int currentItem;//当前图片
    public static final int TIME=2000;
    private Handler handler=new Handler();
    private Runnable runnable=new Runnable() {
        @Override
        public void run() {
            if(currentItem==list.size()){
                currentItem=0;
            }
            viewpager.setCurrentItem(currentItem,false);
            currentItem++;
            handler.postDelayed(runnable,TIME);//间隔轮播
        }
    };
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_view_page);
        viewpager= (ViewPager) findViewById(R.id.viewpager);
        radioGroup= (RadioGroup) findViewById(R.id.radioGroup);
        int resources[]={R.drawable.ab,R.drawable.abc,R.drawable.abcd,R.drawable.abcde};
        //数据
        for (int i = 0; i < 4; i++) {
            Button button=new Button(this);
            button.setBackgroundResource(resources[i]);
            button.setOnClickListener(new View.OnClickListener() {//各个轮播图跳转
                @Override
                public void onClick(View v) {
                    Toast.makeText(ViewPageActivity.this, ""+currentItem, Toast.LENGTH_SHORT).show();
                }
            });
            list.add(button);

            //下标
            RadioButton rd = new RadioButton(this);
            RadioGroup.LayoutParams params_rb = new RadioGroup.LayoutParams(80, 80);
            params_rb.setMargins(10,0,10,0);
            rd.setLayoutParams(params_rb);
            radioButtons.add(rd);
            radioGroup.addView(rd);
            radioButtons.get(0).setChecked(true);
        }



        MyPagerAdapter adapter=new MyPagerAdapter(list);
        viewpager.setAdapter(adapter);
        handler.postDelayed(runnable, TIME);

        //添加手动滑动viewpager
        viewpager.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View v, MotionEvent event) {
                switch (event.getAction()) {
                    case MotionEvent.ACTION_DOWN|MotionEvent.ACTION_MOVE: //停止轮播
                        handler.removeCallbacks(runnable);
                        break;

                    case MotionEvent.ACTION_UP://继续轮播
                        handler.postDelayed(runnable, TIME);
                        break;
                }
                return false;
            }
        });
        //记住手动滑动的位置,并设置当前的下标
        viewpager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
            @Override
            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

            }

            @Override
            public void onPageSelected(int position) {
                currentItem=position;
                radioButtons.get(position).setChecked(true);
            }

            @Override
            public void onPageScrollStateChanged(int state) {

            }
        });


    }




    //设配器
    class MyPagerAdapter extends PagerAdapter{

        private ArrayList<View> list;
        public MyPagerAdapter(ArrayList<View> list2){
            list=list2;
        }

        @Override
        public int getCount() {
            return list.size();
        }

        @Override
        public boolean isViewFromObject(View view, Object object) {
            return view==object;
        }

        @Override
        public void destroyItem(ViewGroup container, int position, Object object) {
           container.removeView(list.get(position));
        }

        @Override
        public Object instantiateItem(ViewGroup container, int position) {
            View view=list.get(position);
            container.addView(view);
            return view;
        }
    }
}


2,一个xml布局


<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">


    <android.support.v4.view.ViewPager
        android:id="@+id/viewpager"
        android:layout_width="match_parent"
        android:layout_height="200dp" />
    <RadioGroup
        android:layout_below="@+id/viewpager"
        android:orientation="horizontal"
        android:layout_marginTop="-20dp"
        android:layout_width="match_parent"
        android:gravity="center"
        android:id="@+id/radioGroup"
        android:layout_height="20dp"></RadioGroup>

</RelativeLayout>


最后,一个简单的图片轮播就搞定。


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值