今天新学知识总计,个人信息,仅供参考:

item设置:

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/viewpager1220"
        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:orientation="horizontal"
        android:layout_alignBottom="@id/viewpager1220"
        android:padding="10dp"
        >
        <LinearLayout
            android:id="@+id/point1220"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:gravity="center"
            android:orientation="horizontal">
        </LinearLayout>

    </LinearLayout>
</RelativeLayout>

adapter设置

package com.example.administrator.test_1216.adapter;

public class PagerAdapter1220 extends PagerAdapter {
   private List<ImageModel1220> list;
    private Context context;

    public PagerAdapter1220(List<ImageModel1220> list, Context context) {
        this.list = list;
        this.context = context;
    }

    @Override
    public int getCount() {
        return Integer.MAX_VALUE;
    }

    /**
     * 判断是否由对象生成页面
     * @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 view=View.inflate(context, R.layout.img1220_item,null);
        //声明控件并绑定id
        ImageView img1220= (ImageView) view.findViewById(R.id.img1220);
        //获取图片
        img1220.setBackgroundResource(list.get(position%list.size()).getImages());
        //将子布局添加到视图
        container.addView(view);
        return view;
    }

    /**
     * 销毁页面
     * @param container 将要销毁的页面
     * @param position 将要销毁的页面的位置
     * @param object
     */
    @Override
    public void destroyItem(ViewGroup container, int position, Object object) {

        container.removeView((View) object);
    }
}
activity设置:

package com.example.administrator.test_1216;
/**
 * Created by Administrator on 2016/12/20.
 */

public class PagerActivity1220 extends Activity implements ViewPager.OnPageChangeListener {
    private ViewPager viewPager;
    private LinearLayout point;
    private PagerAdapter adapter;
    private List<ImageModel1220> list;
    //图片数组
    private int[] imgs = {R.mipmap.main_page1, R.mipmap.main_page2, R.mipmap.main_page3, R.mipmap.main_page4, R.mipmap.main_page5};
 //handdle机制处理定时任务
    Handler handler=new Handler(){
     @Override
     public void handleMessage(Message msg) {
         viewPager.setCurrentItem(viewPager.getCurrentItem()+1);
         handler.sendEmptyMessageDelayed(0,3000); //设置时间间隔
     }
 };
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.viewpager1220_activity);
        viewPager = (ViewPager) findViewById(R.id.viewpager1220);
        point = (LinearLayout) findViewById(R.id.point1220);
        //设置图片滑动监听
        viewPager.setOnPageChangeListener(this);
        //初始化集合
        list = new ArrayList<ImageModel1220>();
        //遍历图片数组
        for (int i = 0; i < imgs.length; i++) {
            ImageModel1220 model = new ImageModel1220();
            model.setImages(imgs[i]);
            list.add(model);
        }
        //初始化小圆点
        for (int i = 0; i < list.size(); i++) {
            //新建视图
            View v = new View(this);
            //新建一个布局参数,设置小圆点宽,高
            LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(10, 10);
            //设置小圆点的间距
            if (i != 0) {
                params.leftMargin = 10;

            }
            //设置小圆点视图
            v.setLayoutParams(params);
            //给小圆点设置背景颜色
            v.setBackgroundResource(R.drawable.points);
            //将设置好的小圆点添加到布局文件里
            point.addView(v);

        }
        //初始化适配器
        adapter = new PagerAdapter1220(list, this);
        //设置适配器
        viewPager.setAdapter(adapter);
        //设置当前的图片位置
        //将有用的View放到所有view中间,并将有用的View的第一个视图放到第一个位置
        viewPager.setCurrentItem(Integer.MAX_VALUE/2-(Integer.MAX_VALUE/2)%list.size());
        changePoint();//动态改变小圆点
        //设置自动时间为3秒
            handler.sendEmptyMessageDelayed(0,3000);
    }

    //动态改变小圆点
    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) {

    }
}
效果图:

动态ViewPager导航页面的更多相关文章

  1. 爬虫再探实战(三)———爬取动态加载页面——selenium

    自学python爬虫也快半年了,在目前看来,我面临着三个待解决的爬虫技术方面的问题:动态加载,多线程并发抓取,模拟登陆.目前正在不断学习相关知识.下面简单写一下用selenium处理动态加载页面相关的 ...

  2. 7、网页制作Dreamweaver(悬浮动态分层导航)

    悬浮动态分层导航的制作: 1.首先在<head>里面引用一个JQUERY的文件以用来制作鼠标点击动画效果(从网站上下载即可) <script language="javas ...

  3. jQuery ui背景色动态渐变导航菜单

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  4. ios 导航页面

    //  AppDelegate.m#import "AppDelegate.h"#import "ViewController.h" @interface Ap ...

  5. Javascript动态生成的页面信息爬取和openpyxl包FAQ小记

    最近,笔者在使用Requests模拟浏览器发送Post请求时,发现程序返回的html与浏览器F12观察到的略有不同,经过观察返回的response.text,cookies确认有效,因为我们可以看到返 ...

  6. EntityFramework4.5使用Expression类创建动态查询及动态查询导航属性

    创建动态查询 想在项目中实现一个灵活的动态查询类,参考http://www.cnblogs.com/lyj/archive/2008/03/25/1122157.html和http://www.cnb ...

  7. Android开发之利用ViewPager实现页面的切换(仿微信、QQ)

    这里利用ViewPager实现页面的滑动,下面直接上代码: 1.首先写一个Activity,然后将要滑动的Fragment镶嵌到写好的Activity中. Activity的布局文件:activity ...

  8. Python+Selenium爬取动态加载页面(2)

    注: 上一篇<Python+Selenium爬取动态加载页面(1)>讲了基本地如何获取动态页面的数据,这里再讲一个稍微复杂一点的数据获取全国水雨情网.数据的获取过程跟人手动获取过程类似,所 ...

  9. Python+Selenium爬取动态加载页面(1)

    注: 最近有一小任务,需要收集水质和水雨信息,找了两个网站:国家地表水水质自动监测实时数据发布系统和全国水雨情网.由于这两个网站的数据都是动态加载出来的,所以我用了Selenium来完成我的数据获取. ...

随机推荐

  1. 2.b统计字符串长度

    import java.util.*;public class Main {    public static void main(String args[]){    String a;    Sc ...

  2. #MySQL for Python(MySQLdb) Note

    #MySQL for Python(MySQLdb) Note #切记不要在python中创建表,只做增删改查即可. #步骤:(0)引用库 -->(1)创建连接 -->(2)创建游标 -- ...

  3. 20151214下拉列表:DropDownList

    注意: .如果用事件的话就要把控件的AutoPostBack设置成true .防止网页刷新用一个判断 if (!IsPostBack)//判断是第一个开始还是取的返回值 { } 下拉列表:DropDo ...

  4. 用ABBYY提取文本和表格的方法

    在ABBYY FineReader 12 OCR文字识别软件中,有一个插件ABBYY Screenshot Reader,通常情况下与ABBYY FineReader 12一起安装到计算机中,它是一款 ...

  5. Android学习笔记(三)

    在手机应用中菜单是很重要的一部分,它能够以直观的界面让用户去选择,现在我们学习如何去新建一个菜单. 首先在res目录下新建一个menu文件夹,然后在menu文件夹下新建一个Android XML Fi ...

  6. 每天一个 Linux 命令(12):more命令

    more命令,功能类似 cat ,cat命令是整个文件的内容从上到下显示在屏幕上. more会以一页一页的显示方便使用者逐页阅读,而最基本的指令就是按空白键(space)就往下一页显示,按 b 键就会 ...

  7. Java中的代理模式

    代理模式在Java Web的框架中经常使用到.比如说在对数据库的访问中,核心功能是对数据库的增删改查,而连接数据库.处理事务等功能我们在开发中也要考虑到.所以我们将数据库的CRUD抽象到接口中,然后实 ...

  8. Python第十二章正则表达式

    1.今天学习的f=open("d:\testcase.xml","r")会报错 需要改成f=open("d:\\testcase.xml", ...

  9. DestroyWindow函数注意事项

    最近遇到这样一个问题:将一个窗口句柄以参数的形式传递给一个线程,在线程中使用完之后要将窗口销毁,调用DestroyWindow销毁窗口是返回false,GetLastError的结果为5:拒绝访问,而 ...

  10. python_day3

    一.set的基本操作 >>> s1=set("abc123abc") >>> s1 #把字符串转化为set,去重 set([']) >&g ...