MainActivity.java

package com.qf.day20_viewpager_demo3;

import java.util.ArrayList;
import java.util.List; import android.app.Activity;
import android.os.Bundle;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v4.view.ViewPager.OnPageChangeListener;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.LinearLayout.LayoutParams; public class MainActivity extends Activity {
private ViewPager viewPager;
List<ImageView> list;
private int[] imags = { R.drawable.txt_theme26, R.drawable.txt_theme29, R.drawable.txt_theme30 }; // 指示器图片
private ImageView[] icons; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
viewPager = (ViewPager) findViewById(R.id.viewPager); // 数据源
initData(); // 获取指示器 initIcon(); // adapter
MyAdapter adapter = new MyAdapter();
viewPager.setAdapter(adapter); // setOnPageChangeListener
// addOnPageChangeListener
// ViewPager的监听事件
viewPager.setOnPageChangeListener(new OnPageChangeListener() { /**
* 当前界面被选中时调用 position:当前位置
* 刚开始时此方法不会被回调
*/
@Override
public void onPageSelected(int position) {
// TODO Auto-generated method stub
// 首先把所有图片改成 一样的图片
for (int i = 0; i < icons.length; i++) {
icons[i].setImageResource(R.drawable.icon01);
}
// 当前位置的图片 改成不一致的
icons[position].setImageResource(R.drawable.icon02);
Log.e("==", "==onPageSelected"+position);
} /**
* 界面滚动的回调方法 参数1:当前界面的下标 参数2:当前界面的滚动偏移量 参数3:当前界面滚动偏移量的像素值
*
*/
@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
// TODO Auto-generated method stub
Log.e("==", "==onPageScrolled 参数1 "+arg0);
Log.e("==", "==onPageScrolled 参数2 "+arg1);
Log.e("==", "==onPageScrolled 参数3 "+arg2 );
} /**
* 当前界面滑动状态改变时调用
* SCROLL_STATE_IDLE 停止滑动
* SCROLL_STATE_SETTLING 当用户有自然滑动的时候调用 比如说向左滑动然后放手
* 如果滑动的时候再回动回原来的位置不会触发 当然你能放回原位
* SCROLL_STATE_DRAGGING 正在滑动的状态
*/
@Override
public void onPageScrollStateChanged(int arg0) { }
});
} // 初始化指示器
public void initIcon() {
// 获取指示器的父容器
LinearLayout layout = (LinearLayout) findViewById(R.id.layout_id);
icons = new ImageView[imags.length];
for (int i = 0; i < icons.length; i++) {
// icons[i] = (ImageView) layout.getChildAt(i);
icons[i] = new ImageView(getApplicationContext());
// 设置图片的布局大小 也可在此设定marging
//使用的包为此元素在布局文件中的父元素
LayoutParams params = new LayoutParams(20, 20);
params.setMargins(0, 0, 20, 0);
icons[i].setLayoutParams(params); // 容器里含有指示器
layout.addView(icons[i]); icons[i].setImageResource(R.drawable.icon01);
icons[i].setTag(i);// 保存当前位置
icons[i].setOnClickListener(new OnClickListener() { @Override
public void onClick(View v) {
// TODO Auto-generated method stub
// 滑动到指定的界面
// viewPager.setCurrentItem((Integer)v.getTag());
viewPager.setCurrentItem((Integer) v.getTag(), false);
}
});
}
// 设置第一个图片和其余图片不一致
icons[0].setImageResource(R.drawable.icon02);
} // 初始化数据源
public void initData() {
list = new ArrayList<ImageView>();
for (int i = 0; i < imags.length; i++) {
ImageView iv = new ImageView(getApplicationContext());
iv.setImageResource(imags[i]);
list.add(iv);
}
} public class MyAdapter extends PagerAdapter { @Override
public int getCount() {
// TODO Auto-generated method stub
return list.size();
} @Override
public Object instantiateItem(ViewGroup container, int position) {
// TODO Auto-generated method stub
container.addView(list.get(position));
return list.get(position);
} @Override
public void destroyItem(ViewGroup container, int position, Object object) {
// TODO Auto-generated method stub
// super.destroyItem(container, position, object);
container.removeView(list.get(position));
} @Override
public boolean isViewFromObject(View arg0, Object arg1) {
// TODO Auto-generated method stub
return arg0 == arg1;
} } }

布局文件

<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"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" > <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:id="@+id/layout_id"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="49dp"
android:layout_centerHorizontal="true"
android:layout_alignParentBottom="true"
android:orientation="horizontal" > </LinearLayout> </RelativeLayout>

20 ViewPager Demo3指示器的更多相关文章

  1. 20 ViewPager总结

    V4:兼容到1.6,V7:兼容到 2.1,V13:兼容到3.2(平板) 兼容包 ViewPager 父类: android.support.v4.view.ViewPager ViewPager:滑动 ...

  2. 20 ViewPager demo5,6:FragmentAdapter 导航数据

    Demo5 文件结构: MainActivity.java package com.qf.day20_viewpager_demo5; import java.util.ArrayList; impo ...

  3. 20 ViewPager Demo4自动轮播

    MainActivity.java 思想:才用非常大的数 让其看起来可以循环轮播图片并且用户可以从尽头滑到首图的特点 . package com.qf.day20_viewpager_demo4; i ...

  4. Android ViewPager使用详解

    这是谷歌官方给我们提供的一个兼容低版本安卓设备的软件包,里面包囊了只有在安卓3.0以上可以使用的api.而viewpager就是其中之一利用它,我们可以做很多事情,从最简单的导航,到页面菜单等等.那如 ...

  5. 【Android 界面效果21】Android ViewPager使用详解

    这是谷歌官方给我们提供的一个兼容低版本安卓设备的软件包,里面包囊了只有在安卓3.0以上可以使用的api.而viewpager就是其中之一利用它,我们可以做很多事情,从最简单的导航,到页面菜单等等.那如 ...

  6. Android ViewPager使用具体解释

    这是谷歌官方给我们提供的一个兼容低版本号安卓设备的软件包,里面包囊了仅仅有在安卓3.0以上能够使用的api.而viewpager就是当中之中的一个利用它,我们能够做非常多事情,从最简单的导航,到页面菜 ...

  7. Android Tab -- 使用ViewPager、PagerTitleStrip/PagerTabStrip来实现

    原文地址:http://blog.csdn.net/crazy1235/article/details/42678877 效果:滑动切换:点击标签切换. 代码:https://github.com/l ...

  8. Android ViewPager使用详解(转)

    这是谷歌官方给我们提供的一个兼容低版本安卓设备的软件包,里面包囊了只有在安卓3.0以上可以使用的api.而viewpager就是其中之一利用它,我们可以做很多事情,从最简单的导航,到页面菜单等等.那如 ...

  9. ViewPager实现页卡的3种方法(谷歌组件)

    ----方法一:---- 效果图: 须要的组件: ViewPager+PagerTabStrip 布局文件代码: <!--xmlns:android_custom="http://sc ...

随机推荐

  1. [NOI 2007]货币兑换Cash

    Description 题库链接 (按我的语文水平完全无 fa♂ 概括题意,找了 hahalidaxin 的题意简述... 有 \(AB\) 两种货币,每天可以可以付 \(IP_i\) 元,买到 \( ...

  2. 【BZOJ2241】【Sdoi2011R1D1】打地鼠

    原题传送门 Description 打地鼠是这样的一个游戏:地面上有一些地鼠洞,地鼠们会不时从洞里探出头来很短时间后又缩回洞中.玩家的目标是在地鼠伸出头时,用锤子砸其头部,砸到的地鼠越多分数也就越高. ...

  3. Polya计数

    Let it Bead Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 5365   Accepted: 3585 Descr ...

  4. hdu 5476 (计算几何)

    题意:求三角形内∠MPB+∠APC=∠MPC+∠APB的轨迹长度- - 1.基于M的中垂线       2.三角形内的圆弧(比赛只有看自己能否猜中),ps.以下是别人家的证明 #include < ...

  5. [BZOJ]1023 cactus仙人掌图(SHOI2008)

    NOIP后的第一次更新嗯. Description 如果某个无向连通图的任意一条边至多只出现在一条简单回路(simple cycle)里,我们就称这张图为仙人掌图(cactus).所谓简单回路就是指在 ...

  6. Ubuntu 16.04 LTS(入门一)国内快速更新软件源

    一.源文件位置 备份并替换/etc/apt/sources.list的源内容: 二.更改源文件内容 sudo gedit /etc/apt/sources.list deb http://mirror ...

  7. 一起来Fit TDMA over WiFi(3)

    4 TDMA调度者 TDMA调度者为Fit-TDMA的决策功能体,属于新开发功能模块,分调度员和被调度者2种角色,其中前者运行在AP等汇聚设备上,后者运行在CPE等接入类设备上:后者必须与前者配合才能 ...

  8. 文本分类学习 (五) 机器学习SVM的前奏-特征提取(卡方检验续集)

    前言: 上一篇比较详细的介绍了卡方检验和卡方分布.这篇我们就实际操刀,找到一些训练集,正所谓纸上得来终觉浅,绝知此事要躬行.然而我在躬行的时候,发现了卡方检验对于文本分类来说应该把公式再变形一般,那样 ...

  9. 5步做一个 TensorFlow 聊天机器人:DeepQA

    项目截图: 实测截图: 一步一步教程: 1.下载这个项目: https://github.com/Conchylicultor/DeepQA 2.下载训练好的模型: https://drive.goo ...

  10. VMWare - Ubuntu 64 (16.04)之扩容介绍

    背景 貌似是一个老生常谈的问题哈,由于自己之前也没有弄过,今天正好有时间稍微折腾了一下. 这里就选择最简单的方式来为大家呈现. VMWare 的设置 没有什么可以过多说的,完全是图形操作.这里直接上图 ...