banner轮播图的实现

来源:互联网 发布:淘宝做床垫好做吗 编辑:程序博客网 时间:2024/06/05 09:17
<?xml version="1.0" encoding="utf-8"?><RelativeLayout    xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    tools:context="com.example.sc.banner_demo.MainActivity">    <android.support.v4.view.ViewPager        android:id="@+id/viewpager"        android:layout_width="match_parent"        android:layout_height="300dp"        />        <!-- 这个线性布局是放图片下标位置的 -->    <LinearLayout        android:layout_width="match_parent"        android:layout_height="20dp"        android:orientation="horizontal"        android:layout_gravity="center_horizontal"        android:id="@+id/linearlayout"        android:layout_alignBottom="@+id/viewpager"        android:layout_alignParentLeft="true"        android:gravity="center"        android:layout_alignParentStart="true"        android:layout_marginBottom="50dp"/></RelativeLayout>
public class MainActivity extends AppCompatActivity implements ViewPager.OnPageChangeListener {    private ViewPager viewPager;    private LinearLayout linearLayout;    private int[] imagesPath;//五张图片路径    private int currentIndex=300;//当前页面的下标    private List<ImageView> views;    private MyPagerAdapter adapter;    private long lasttime;    private Handler handler=new Handler();    private Runnable run=new Runnable() {        @Override        public void run() {            //主线程            if (System.currentTimeMillis()-lasttime>4000){                currentIndex++;                viewPager.setCurrentItem(currentIndex);                lasttime=System.currentTimeMillis();            }            handler.postDelayed(run,4000);        }    };    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        requestWindowFeature(Window.FEATURE_NO_TITLE);        setContentView(R.layout.activity_main);        initView();    }    private void initView() {        viewPager=(ViewPager)findViewById(R.id.viewpager);        linearLayout=(LinearLayout)findViewById(R.id.linearlayout);        imagesPath=new int[]{R.mipmap.gril1,R.mipmap.gril2,R.mipmap.gril3,R.mipmap.gril4,R.mipmap.gril5};        views=new ArrayList<>();        //广告图片        for (int i = 0; i < imagesPath.length; i++) {            ImageView img = new ImageView(this);            img.setImageResource(imagesPath[i]);            views.add(img);            //圈的图片            ImageView img_circle=new ImageView(this);            img_circle.setImageResource(R.mipmap.login_point);//默认没被选中            img_circle.setPadding(10,5,10,5);            linearLayout.addView(img_circle);        }        //适配器        adapter=new MyPagerAdapter(views,MainActivity.this);        viewPager.setAdapter(adapter);        viewPager.setCurrentItem(300);        viewPager.setOnPageChangeListener(this);        handler.postDelayed(run,2000);    }    @Override    public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {    }    @Override    public void onPageSelected(int position) {        currentIndex=position;        int index=position%views.size();        setcurrentSelector(index);        lasttime=System.currentTimeMillis();    }    //根据选中图片的下标,设置该下标的按钮改变    private void setcurrentSelector(int index) {        for (int i = 0; i < linearLayout.getChildCount(); i++) {            ImageView child=(ImageView)linearLayout.getChildAt(i);//每个圆圈            if (i==index){                child.setImageResource(R.mipmap.login_point_select);            }else{                child.setImageResource(R.mipmap.login_point);            }        }    }    @Override    public void onPageScrollStateChanged(int state) {    }    @Override    protected void onDestroy() {        super.onDestroy();        handler.removeCallbacks(run);    }}
public class MyPagerAdapter extends PagerAdapter{    private List<ImageView> views;    private Context mContext;    public MyPagerAdapter(List<ImageView> views, Context mContext) {        this.views = views;        this.mContext = mContext;    }    @Override    public int getCount() {        return Integer.MAX_VALUE;    }    @Override    public boolean isViewFromObject(View view, Object object) {        return view==object;    }    @Override    public Object instantiateItem(View container, int position) {        int index=position%views.size();        ((ViewPager)container).addView(views.get(index));        return views.get(index);    }    @Override    public void destroyItem(View container, int position, Object object) {        ((ViewPager)container).removeView(views.get(position%views.size()));    }}
0 0
原创粉丝点击