zoukankan      html  css  js  c++  java
  • ViewPager图片轮转带点的

    布局页面设置:

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical" 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="match_parent">

        </android.support.v4.view.ViewPager>

        
            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:orientation="vertical"
                android:layout_alignParentBottom="true"
                android:layout_marginBottom="30dp"
                android:layout_alignParentLeft="true">
                <Button
                    android:id="@+id/btn"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center"
                    android:text="点击进入"
                    android:textColor="#ffffff"
                    android:textSize="15sp"
                    android:visibility="invisible"/>
                <LinearLayout
                    android:id="@+id/point"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center"
                    android:layout_marginTop="30dp"
                    android:gravity="center"

                    android:orientation="horizontal"
                    >

                </LinearLayout>
            </LinearLayout>
    </RelativeLayout>

    adapter适配器设置:

    package com.example.administrator.test_1216.adapter;

    import android.content.Context;
    import android.support.v4.view.PagerAdapter;
    import android.view.View;
    import android.view.ViewGroup;

    import java.util.List;

    /**
     * Created by Administrator on 2016/12/19.
     */

    public class MyPagerAdapter extends PagerAdapter {

        Context context;
        List<View> views;

        public MyPagerAdapter(Context context, List<View> views) {
            this.context = context;
            this.views = views;
        }

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

        /**
         *判断是否由对象生成界面
         * @param view  应该显示的界面
         * @param object  被检查的界面
         * @return
         */
        @Override
        public boolean isViewFromObject(View view, Object object) {
            return view==object;
        }

        /**
         * 初始化position处的界面
         * @param container 将要显示的页面
         * @param position 将要显示的页面对应的位置
         * @return
         */
        @Override
        public Object instantiateItem(ViewGroup container, int position) {
            //添加视图
            container.addView(views.get(position));
            return views.get(position);

        }

        /**
         * 销毁postion位置的界面
         * @param container 将被销毁的界面
         * @param position 将被销毁界面所在的位置
         * @param object instantiateItem返回的对象
         */
        @Override
        public void destroyItem(ViewGroup container, int position, Object object) {

            //移除视图
            container.removeView((View) object);
        }
    }
    activity设置页面:

    public class MyPagerActivity extends AppCompatActivity implements View.OnClickListener, ViewPager.OnPageChangeListener {
        //声明控件
        private ViewPager viewPager;
        private Button btn;
        private LinearLayout point;

        //声明集合
        private  List<View> views;
        //点数组
        private ImageView[] points=null;
        // 适配器
        private MyPagerAdapter adapter;
        //声明图片数组
        private int[] images = {R.mipmap.welcome, R.mipmap.welcome1,
                R.mipmap.welcome2, R.mipmap.welcome3};

        @Override
        protected void onCreate(@Nullable Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.viewpager_activity);
            //绑定id
            viewPager= (ViewPager) findViewById(R.id.viewpager);
            btn= (Button) findViewById(R.id.btn);
            point= (LinearLayout) findViewById(R.id.point);
            //设置监听
            btn.setOnClickListener(this);
            //初始化集合
            views=new ArrayList<View>();
            //初始化小圆点集合
            points=new ImageView[images.length];
            //遍历图片数组
            for (int i = 0; i <images.length ; i++) {
                ImageView imageView=new ImageView(this);
                imageView.setBackgroundResource(images[i]);
                //将图片添加到集合中
                views.add(imageView);
                //循环加入指示器
                points[i]=new ImageView(this);
                //设置首次启动时圆点的状态
                if(i==0){
                    points[i].setBackgroundResource(R.mipmap.point_cuttent);
                }else {
                    points[i].setBackgroundResource(R.mipmap.point_go);
                }
                //将小圆点放在布局里
                point.addView(points[i]);
            }
            //初始化适配器
            adapter=new MyPagerAdapter(this,views);
            viewPager.setAdapter(adapter);
            //设置页面滚动监听
            viewPager.setOnPageChangeListener(this);
        }

        @Override
        public void onClick(View v) {
            switch (v.getId()) {
                case R.id.btn:
                    Toast.makeText(this, "点击成功", Toast.LENGTH_SHORT).show();
                    break;
            }

        }
        /**
         * 此方法在页面跳转完成后调用
         * @param position:当前选中页面对应的位置
         */
        @Override
        public void onPageSelected(int position) {
            if(position==points.length-1){
                btn.setVisibility(View.VISIBLE);
            }else {
                btn.setVisibility(View.INVISIBLE);
            }
            // 更改小圆点的变化
            for (int i = 0; i <points.length ; i++) {
                if(position==i){//当前页面
                    points[i].setBackgroundResource(R.mipmap.point_cuttent);
                }else {
                    points[i].setBackgroundResource(R.mipmap.point_go);
                }
            }
        }

        /**
         * 此方法滑动的时候调用
         * @param position:当前页面对应的位置
         * @param positionOffset:当前页面偏移的百分比
         * @param positionOffsetPixels:当前页面偏移的像素位置
         */
        @Override
        public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

        }
        /**
         * 此方法在状态改变时调用
         * @param state:state==0:表示什么都没做
         *                state==1:表示正在滑动
         *                state==2:表示滑动完毕
         *
         */
        @Override
        public void onPageScrollStateChanged(int state) {

        }
    }

    效果图:

  • 相关阅读:
    Ubuntu 系统装机指南
    java读取配置文件属性
    反转单链表 递归与非递归
    迟到的2013年终总结
    2014年阅读资料总结
    程序人生的四个象限和两条主线
    查找单链表中倒数第k个结点
    技术人员应真正学会的第二课程
    Linux“七大蠢”收录
    postman测试方法,出现400错误码
  • 原文地址:https://www.cnblogs.com/ll-ouyang/p/6197848.html
Copyright © 2011-2022 走看看