• 图片自动轮转


    首先定义两layout:

    <?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.administrator.myviewpager_1220.MainActivity">

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

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_alignBottom="@+id/viewpager"
            android:padding="10dp">

            <LinearLayout
                android:id="@+id/point"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_gravity="center"
                android:gravity="center"
                android:orientation="horizontal"></LinearLayout>
        </LinearLayout>
    </RelativeLayout>
    -------2-----------

    然后写activity、adapter,model类

    package com.example.administrator.myviewpager_1220;

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

    import java.util.List;

    /**
     * Created by Administrator on 2016/12/20.
     */
    public class MyAdapter extends PagerAdapter{

        private Context context;
        private List<ImgModel> list;

        /**
         * 构造方法
         * @param context
         * @param list
         */
        public MyAdapter(Context context, List<ImgModel> list) {
            this.context = context;
            this.list = list;
        }

        /**
         * 获取总数目
         * @return
         */
        @Override
        public int getCount() {
            return Integer.MAX_VALUE;//2的31次方减1,默认为无限大
        }
        /**
         * 判断是否由对象生成页面
         * @param view:应该生成的页面
         * @param object:待检测的页面
         * @return
         */
        @Override
        public boolean isViewFromObject(View view, Object object) {
            return view==object;
        }
        /**
         * 添加页面
         * @param container:将要显示的页面
         * @param position:将要显示的页面对应的位置
         * @return
         */
        @Override
        public Object instantiateItem(ViewGroup container, int position) {
            //添加子布局
            View v = View.inflate(context,R.layout.img_item,null);
            //声明控件并绑定id
            ImageView img = (ImageView) v.findViewById(R.id.img);
            //获取图片
            img.setBackgroundResource(list.get(position%list.size()).getImgid());
            //将图片子布局添加到视图
            container.addView(v);

            return v;
        }

        /**
         * 销毁页面
         * @param container:
         * @param position:将要销毁的页面对应的位置
         * @param object:instantiateItem方法返回的对象
         */
        @Override
        public void destroyItem(ViewGroup container, int position, Object object) {
            //移除视图
            container.removeView((View) object);
        }
    }
    --------------------------

    package com.example.administrator.myviewpager_1220;

    import android.os.Bundle;
    import android.os.Handler;
    import android.os.Message;
    import android.support.v4.view.ViewPager;
    import android.support.v7.app.AppCompatActivity;
    import android.view.View;
    import android.widget.LinearLayout;
    import android.widget.LinearLayout.LayoutParams;

    import java.util.ArrayList;
    import java.util.List;

    public class MainActivity extends AppCompatActivity implements ViewPager.OnPageChangeListener {

        //声明控件
        private ViewPager viewPager;
        private LinearLayout point;
        //集合
        private List<ImgModel> list;
        //图片数组
        private int[] imgid = {R.mipmap.welcome, R.mipmap.welcome1, R.mipmap.welcome2, R.mipmap.welcome3};
        //适配器
        private MyAdapter adapter;

        //handler 机制处理定时任务
        Handler handler = new Handler() {
            @Override
            public void handleMessage(Message msg) {
                viewPager.setCurrentItem(viewPager.getCurrentItem() + 1);
                handler.sendEmptyMessageDelayed(0, 500);//设置事件间隔
            }
        };


        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            //绑定id
            viewPager = (ViewPager) findViewById(R.id.viewpager);
            point = (LinearLayout) findViewById(R.id.point);
            //设置监听
            viewPager.setOnPageChangeListener(this);
            //初始化
            list = new ArrayList<ImgModel>();
            //遍历图片数组
            for (int i = 0; i < imgid.length; i++) {
                ImgModel adimg = new ImgModel();
                adimg.setImgid(imgid[i]);
                list.add(adimg);
            }
            //初始化小圆点,遍历集合
            for (int i = 0; i < list.size(); i++) {
                //新建视图
                View view = new View(this);
                //新建一个布局参数,设置小圆点:LayoutParams(小圆点的宽,小圆点的高);
                LayoutParams params = new LayoutParams(10, 10);
                //设置小圆点的间距
                if (i != 0) {//第一个小圆点不用设置间距,所以从第二个小圆点开始设置间距
                    params.leftMargin = 10;
                }
                //设置小圆点视图
                view.setLayoutParams(params);
                //给小圆点设置背景颜色
                view.setBackgroundResource(R.drawable.points);
                //将设置好的小圆点添加到布局控件里
                point.addView(view);

            }

            //初始化适配器
            adapter = new MyAdapter(this, list);
            //设置适配器
            viewPager.setAdapter(adapter);

            //设置当前的图片位置
            //将有用的View放到所有的View的中间,并将有用的View的第一个视图放到第一张的位置
            viewPager.setCurrentItem(Integer.MAX_VALUE / 2 - (Integer.MAX_VALUE / 2) % list.size());
            changePoint();//动态改变小圆点
            //设置自动跳转时间为5秒
            handler.sendEmptyMessageDelayed(0, 500);

        }

        //动态改变小圆点
        private void changePoint() {
            //获取当前页面的位置
            int currentPager = viewPager.getCurrentItem() % list.size();
            //遍历圆点
            for (int i = 0; i < point.getChildCount(); i++) {
                //设置Enabled,获取小圆点的焦点,当i==currentPager,小圆点是白色
                point.getChildAt(i).setEnabled(i == currentPager);
            }
        }

        /**
         * 此方法在页面滑动结束调用
         *
         * @param position:选中页面的位置
         */
        @Override
        public void onPageSelected(int position) {
            changePoint();//动态改变小圆点
        }

        /**
         * 此方法在页面滑动的时候调用
         *
         * @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) {

        }
    }

  • 相关阅读:
    sort exam
    一个简单的爬虫
    php双色球
    计算水果的总价格
    jquery三级导航,级联菜单精简
    判断学生成绩
    服务器信息展示
    服务器信息(二)一些常量名和时间戳的简单了解
    天气预报ajax+php(可惜用的是已经失效的api)
    mysql基础(二)
  • 原文地址:https://www.cnblogs.com/ll-ouyang/p/6282110.html
Copyright © 2020-2023  润新知