(六十九)ViewPager的使用方法解析

一、ViewPager组件是用来显示左右滑动界面的控件。它的一般实现步骤是:1、在布局中加入ViewPager 2、加载要显示的页卡 3、设置适配器

二、通过使用ViewPager来实现APP的引导页面的例子,来大概知道ViewPager的使用方法

2.1 welcome_vp.xml文件

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

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

</RelativeLayout>

2.2 加载要显示的页卡内容,WelcomeActivity.java文件的代码如下所示:

package com.qf.springtourist;

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

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.support.v4.view.ViewPager;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

import com.qf.adapter.GuideAdapter;

/*
 * 第一次运行时的引导界面
 */
public class WelcomeActivity extends Activity {
    private ViewPager mVp;
    private List<View> list;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.welcome_vp);
        mVp = (ViewPager) findViewById(R.id.welcome_vp_item);
        setDatas();
        mVp.setAdapter(new GuideAdapter(list));
    }
        //要显示的页卡内容
    private void setDatas() {
        list = new ArrayList<View>();
        View fistWelcome = getLayoutInflater().inflate(
                R.layout.welcome_first_activity, null);
        View twoWelcome = getLayoutInflater().inflate(
                R.layout.welcome_two_activity, null);
        View threeWelcome = getLayoutInflater().inflate(
                R.layout.welcome_three_activity, null);
        View fourWelcome = getLayoutInflater().inflate(
                R.layout.welcome_four_activity, null);
        View fiveWelcome = getLayoutInflater().inflate(
                R.layout.welcome_five_activity, null);
        list.add(fistWelcome);
        list.add(twoWelcome);
        list.add(threeWelcome);
        list.add(fourWelcome);
        list.add(fiveWelcome);
    }
}

2.2 welcome_first_activity.xml文件如下:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/guide_icon1" >

</RelativeLayout>

2.3 welcome_two_activity.xml文件如下:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:background="@drawable/guide_icon2">

</LinearLayout>

2.4 welcome_three_activity.xml文件如下:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:background="@drawable/guide_icon3">

</LinearLayout>

2.5 welcome_four_activity.xml文件如下:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:background="@drawable/guide_icon4" >

</LinearLayout>

2.6 welcome_five_activity.xml文件如下:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/guide_icon5"
     >

    <Button
        android:id="@+id/press_entermain_btn"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_marginBottom="15dp"
        android:textColor="@android:color/white"
        android:text="开启美妙之旅"
        android:background="@drawable/first_login_btn" />

</RelativeLayout>

2.7guide_icon1.jpg、guide_icon2.jpg、guide_icon3.jpg、guide_icon4.jpg和guide_icon5.jpg分别如下所示

3、定义适配器

package com.qf.adapter;

import java.util.List;

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

/*
 * 第一次运行时的引导页适配器
 */
public class GuideAdapter extends PagerAdapter {
    private List<View> mList;

    public GuideAdapter(List<View> list) {
        mList = list;
    }

    @Override
    public int getCount() { // 获得size
        return mList != null ? mList.size() : 0;
    }

    @Override
    public boolean isViewFromObject(View arg0, Object arg1) { // 官方提示这样写
        return arg0 == arg1;
    }

    @Override
    public Object instantiateItem(ViewGroup container, int position) { // 添加页卡
        container.addView(mList.get(position));
        return mList.get(position);
    }

    @Override
    public void destroyItem(ViewGroup container, int position, Object object) { // 删除页卡
        // TODO Auto-generated method stub
        container.removeView(mList.get(position));
    }
}
时间: 2024-10-07 09:11:47

(六十九)ViewPager的使用方法解析的相关文章

六十九、for循环、while循环、break跳出循环、continue结束本次循环、exit退出整

六十九.for循环.while循环.break跳出循环.continue结束本次循环.exit退出整个脚本 一.for循环 语法:for 变量名 in 条件; do -; done 案例1 # vim for1.sh #!/bin/bash sum=0 for i in `seq 1 100` do sum=$[$sum+$i]     //核心语句 echo $i done echo $sum //最后再echo $sum,不能在for循环里echo,不然每次的sum都打印出来了.让它每次都打

C#编程(六十九)----------DLR简介

DLR 一.近年来,在TIOBE公司每个月发布的编程语言排行榜中,C#总是能挤进前十名,而在最近十年来,C#总体上呈现上升的趋势.C#能取得这样的成绩,有很多因素,其中它在语言特性上的锐意进取让人印象深刻. C#4动态功能是Dynamic Language Runtime(动态语言运行时,DLR)的一部分.DLR是添加到CLR的一系列服务,它允许添加动态语言,如Ruby和Python,并使C#具备和这些动态语言相同的某些功能. 动态编程语言并非什么新鲜事物,早在面向对象编程语言成为主流之前,人们

一起talk C栗子吧(第一百六十九回:C语言实例--再谈内置宏)

各位看官们,大家好,上一回中咱们说的是C语言中的布尔–bool类型的例子,这一回咱们说的例子是:再谈内置宏 .闲话休提,言归正转.让我们一起talk C栗子吧! 看官们,我们在第一百二十四回中介绍了C语言中的内置宏,当时介绍了常用的内置宏_LINE_和_FILE_.并且介绍了如何使用它们来输出它们所在位置的行号和所在的文件名.大家都知道,这两个内置宏经常被用来在文件中添加调试信息.因为我们写的程序难免会有错误,所以需要对程序进行调试.在文件中加入内置宏后,我们通过调试可以快速地找到错误发生在哪个

第二百六十九节,Tornado框架-Session登录判断

Tornado框架-Session登录判断 Session需要结合cookie来实现 Session的理解 1.用户登录系统时,服务器端获取系统当前时间,进行nd5加密,得到加密后的密串 2.将密串作为一个字典的键,值为一个字典,也就是嵌套字典,键为密串的字典里保存用户信息 3.将这个密串当做cookie值写入浏览器 4.当用户访问时,判断值为密串的cookie是否存在,如果存在,获取cookie的值也就是密串,将这个密串在服务端的字典里查找是否存在,如果存在就可以拿到用户保存的各种信息,判断用

一个屌丝程序猿的人生(六十九)

"同学们,这次的项目演示已经结束了.对于这一次演示的结果,我非常满意.特别是最后的提问环节,大家都回答的非常出色.看的出来,这次同学们都是下了功夫的,这十分难得.为此,我请同学们举起双手,为你们的努力献上热烈的掌声." "啪啪啪......" 台下一阵雷鸣般的掌声响起,众人的眼中都充满了斗志. 看得出来,郑忠科再一次成功的给大家灌输了一管鸡血. 不过,就在掌声逐渐消失以后,郑忠科突然话锋一转说道:"好了.接下来,就到了今天最后一个环节了.那就是,宣布今天的

(六十九)使用block进行消息传递

在两个类之间进行消息传递,一般通过代理或者block进行,代理写起来较为麻烦,block较为简单,但是block需要特别注意内存泄漏问题,注意self和block之间要为弱引用,下面介绍使用block进行消息传递的方法. 先来复习一下block的结构: 返回类型 (^block名称)(参数1类型,参数2类型...) 下面以XMPP的用户登录为例来说明block消息传递方法. 网络操作在AppDelegate中进行,而登录界面视图控制器类中,由于登录按钮点击之后需要在授权完成时让网络操作类通知登录

three.js 源码注释(六十九)extras/geometries/CircleGeometry.js

商域无疆 (http://blog.csdn.net/omni360/) 本文遵循"署名-非商业用途-保持一致"创作公用协议 转载请保留此句:商域无疆 -  本博客专注于 敏捷开发及移动和物联设备研究:数据可视化.GOLANG.Html5.WEBGL.THREE.JS,否则,出自本博客的文章拒绝转载或再转载,谢谢合作. 俺也是刚开始学,好多地儿肯定不对还请见谅. 以下代码是THREE.JS 源码文件中extras/geometries/CircleGeometry.js文件的注释. 更

第六十二条:每个方法抛出的异常都要有文档

花点时间仔细为每个方法抛出的异常建立文档是特别重要的. 始终要单独的声明受检的异常,并且利用Javadoc的@throws标记,准确的记录下抛出每个异常的条件. 如果一个方法可能抛出多个受检异常,则不要使用"快捷方式"声明这个方法会抛出这些异常类的超类,如永远不要声明一个方法"throws Exception", 或者更糟糕的是声明这个方法"throws Throwable".因为这样的声明不仅没有为程序员提供关于"这个方法能够抛出哪些

Linux 学习总结(六十九) docker -1

参考资料http://baijiahao.baidu.com/s?id=1585063200948693359&wfr=spider&for=pchttps://blog.csdn.net/u012299594/article/details/52343910https://www.cnblogs.com/heyanan/p/7800284.html 一 docker概述 官网 www.docker.comgithub https://github.com/docker/docker.gi