动态ViewPager导航页面
今天新学知识总计,个人信息,仅供参考:
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导航页面的更多相关文章
- 爬虫再探实战(三)———爬取动态加载页面——selenium
自学python爬虫也快半年了,在目前看来,我面临着三个待解决的爬虫技术方面的问题:动态加载,多线程并发抓取,模拟登陆.目前正在不断学习相关知识.下面简单写一下用selenium处理动态加载页面相关的 ...
- 7、网页制作Dreamweaver(悬浮动态分层导航)
悬浮动态分层导航的制作: 1.首先在<head>里面引用一个JQUERY的文件以用来制作鼠标点击动画效果(从网站上下载即可) <script language="javas ...
- jQuery ui背景色动态渐变导航菜单
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- ios 导航页面
// AppDelegate.m#import "AppDelegate.h"#import "ViewController.h" @interface Ap ...
- Javascript动态生成的页面信息爬取和openpyxl包FAQ小记
最近,笔者在使用Requests模拟浏览器发送Post请求时,发现程序返回的html与浏览器F12观察到的略有不同,经过观察返回的response.text,cookies确认有效,因为我们可以看到返 ...
- EntityFramework4.5使用Expression类创建动态查询及动态查询导航属性
创建动态查询 想在项目中实现一个灵活的动态查询类,参考http://www.cnblogs.com/lyj/archive/2008/03/25/1122157.html和http://www.cnb ...
- Android开发之利用ViewPager实现页面的切换(仿微信、QQ)
这里利用ViewPager实现页面的滑动,下面直接上代码: 1.首先写一个Activity,然后将要滑动的Fragment镶嵌到写好的Activity中. Activity的布局文件:activity ...
- Python+Selenium爬取动态加载页面(2)
注: 上一篇<Python+Selenium爬取动态加载页面(1)>讲了基本地如何获取动态页面的数据,这里再讲一个稍微复杂一点的数据获取全国水雨情网.数据的获取过程跟人手动获取过程类似,所 ...
- Python+Selenium爬取动态加载页面(1)
注: 最近有一小任务,需要收集水质和水雨信息,找了两个网站:国家地表水水质自动监测实时数据发布系统和全国水雨情网.由于这两个网站的数据都是动态加载出来的,所以我用了Selenium来完成我的数据获取. ...
随机推荐
- register_chrdev_region/alloc_chrdev_region和cdev注册字符设备驱动
内核提供了三个函数来注册一组字符设备编号,这三个函数分别是 register_chrdev_region().alloc_chrdev_region() 和 register_chrdev(). (1 ...
- javascript 中的 true 或 false
JavaScript中奇葩的假值 通常在以下语句结构中需要判断真假 if分支语句 while循环语句 for里的第二个语句 如 1 2 3 4 5 6 7 if (boo) { // do somet ...
- .net中常用的几种页面间传递参数的方法
转自:http://www.cnblogs.com/lxshanye/archive/2013/04/11/3014207.html 参考:http://www.cnblogs.com/zhangka ...
- FullCalendar只可以从外部拖入,内部不能互相拖动
startDrag: function(ev) { if(ev.originalEvent.initEvent){ return; } if (!this.isListening) { // star ...
- C语言中数据类型取值范围的计算的理解与总结
c语言中,数据类型有short,int,long,char,float,double,然后除了浮点型只有 有符号数(signed)外,其他的数据类型都分为有符号(signed)和无符号(unsigne ...
- 关于JS中的JSON
早期,一般是使用XML作为互联网上传输结构化数据的,但由于它解析麻烦,字符冗长,因此被轻量级的JSON所逐渐替代.JSON是JavaScript的一个严格子集,利用了JavaScript中一些模式来表 ...
- Hadoop on Yarn 各组件详细原理
运行在独立的节点上的ResourceManager和NodeManager一起组成了yarn的核心,构建了整个平台.ApplicationMaster和相应的container一起组成了一个Yarn的 ...
- RPM方式安装MySQL5.6和windows下安装mysql解压版
下载地址: http://cdn.MySQL.com/archives/mysql-5.6/MySQL-server-5.6.13-1.el6.x86_64.rpmhttp://cdn.mysql.c ...
- Linux进程切换代码分析
朱宇轲 + 原创作品转载请注明出处 + <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 这次我们来分析L ...
- Release时error c1083 无法打开包括文件
Release时error c1083 无法打开包括文件, 但Debug时没事. 项目里面包含了其实项目的头文件, 头文件目录就放在项目下面, 这个头文件里面调用其它头文件, 采用的是<xx/y ...