Android ViewPager初探:让页面滑动起来

本文详细介绍了如何使用 Android 的 ViewPager 控件实现滑动页面展示,并提供了完整的代码示例,包括布局设置、适配器实现及关键函数重写。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

下一篇: 《Android ViewPager再探:增加滑动指示条》

 

ViewPager需要用到适配器PagerAAdapter,以下四个函数需要重写:

instantiateItem(ViewGroup container, int position):创建指定位置的页面视图。适配器增加即将创建的View视图到这里给定的container中。
destroyItem(ViewGroup container, int position, Object object):移除一个给定位置的页面。
getCount():返回当前有效视图的个数。
isViewFromObject(View view, Object object):判断instantiateItem(ViewGroup, int)函数所返回来的Key与一个页面视图是否是代表的同一个视图。

 

主界面的布局只要加上

<android.support.v4.view.ViewPager />

即可:

activity_main.xml:

 1 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
 2                 xmlns:tools="http://schemas.android.com/tools"
 3                 android:layout_width="match_parent"
 4                 android:layout_height="match_parent"
 5                 tools:context=".MainActivity">
 6 
 7     <android.support.v4.view.ViewPager
 8         android:id="@+id/viewpager"
 9         android:layout_width="wrap_content"
10         android:layout_height="wrap_content"
11         android:layout_gravity="center"/>
12 
13 </RelativeLayout>

 

决定ViewPager有3个页面,每个页面都要写布局:

以第一个first_page.xml为例:

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
 3               android:layout_width="match_parent"
 4               android:layout_height="match_parent">
 5     <TextView
 6         android:layout_width="match_parent"
 7         android:layout_height="match_parent"
 8         android:gravity="center"
 9         android:text="这是第一页"
10         android:textSize="20sp"/>
11 
12 </RelativeLayout>

 

MainActivity需要在onCreate里对其初始化,并调用适配器:

 1 package com.example.hopecapital.myapplication;
 2 
 3 import android.app.Activity;
 4 import android.os.Bundle;
 5 import android.support.v4.view.ViewPager;
 6 import android.view.LayoutInflater;
 7 import android.view.View;
 8 
 9 import java.util.ArrayList;
10 import java.util.List;
11 
12 
13 public class MainActivity extends Activity {
14     private View first,second,third;
15     private ViewPager viewPager;//对应 <android.support.v4.view.ViewPager/>控件
16     private List<View> viewList;//View数组
17 
18     @Override
19     protected void onCreate(Bundle savedInstanceState) {
20         super.onCreate(savedInstanceState);
21         setContentView(R.layout.activity_main);
22 
23         /*初始化*/
24         viewPager = (ViewPager)findViewById(R.id.viewpager);
25         LayoutInflater inflater = getLayoutInflater();
26         first = inflater.inflate(R.layout.first_page,null);
27         second = inflater.inflate(R.layout.second_page,null);
28         third = inflater.inflate(R.layout.third_page,null);
29 
30         viewList = new ArrayList<View>();// 将要分页显示的View装入数组中
31         viewList.add(first);
32         viewList.add(second);
33         viewList.add(third);
34 
35         /*适配器部分*/
36         NewPagerAdapter pagerAdapter = new NewPagerAdapter(viewList);
37         viewPager.setAdapter(pagerAdapter);
38     }
39 
40 }

 

最后也是最重要的,继承自PagerAdapter的适配器:

NewPagerAdapter.java:

 1 package com.example.hopecapital.myapplication;
 2 
 3 import android.support.v4.view.PagerAdapter;
 4 import android.view.View;
 5 import android.view.ViewGroup;
 6 
 7 import java.util.List;
 8 
 9 /**
10  * Created by LT on 2015/7/27.
11  */
12 public class NewPagerAdapter extends PagerAdapter{
13     public List<View> viewList;
14 
15     public NewPagerAdapter(List<View> viewList){
16         this.viewList = viewList;
17     }
18 
19     /*下面四个函数是一定要重写的*/
20     @Override
21     public boolean isViewFromObject(View arg0,Object arg1){
22     //判断instantiateItem(ViewGroup, int)函数所返回来的Key与一个页面视图是否是代表的同一个视图(判断key)
23         // TODO Auto-generated method stub
24         return arg0 == arg1;
25     }
26 
27     @Override
28     public int getCount() {//返回要滑动的VIew的个数
29         // TODO Auto-generated method stub
30         return viewList.size();
31     }
32 
33     @Override
34     public void destroyItem(ViewGroup container, int position,
35                             Object object) {//从当前container中删除指定位置(position)的View;
36         // TODO Auto-generated method stub
37         container.removeView(viewList.get(position));
38     }
39 
40     @Override
41     public Object instantiateItem(ViewGroup container, int position) {
42     //实例化:将当前视图添加到container中,并返回当前View(传送key)
43         // TODO Auto-generated method stub
44         container.addView(viewList.get(position));
45 
46         return viewList.get(position);
47     }
48 }

 

以上,便完成了简单的ViewPager。

内容概要:该PPT详细介绍了企业架构设计的方法论,涵盖业务架构、数据架构、应用架构和技术架构四大核心模块。首先分析了企业架构现状,包括业务、数据、应用和技术四大架构的内容和关系,明确了企业架构设计的重要性。接着,阐述了新版企业架构总体框架(CSG-EAF 2.0)的形成过程,强调其融合了传统架构设计(TOGAF)和领域驱动设计(DDD)的优势,以适应数字化转型需求。业务架构部分通过梳理企业级和专业级价值流,细化业务能力、流程和对象,确保业务战略的有效落地。数据架构部分则遵循五大原则,确保数据的准确、致和高效使用。应用架构方面,提出了分层解耦和服务化的设计原则,以提高灵活性和响应速度。最后,技术架构部分围绕技术框架、组件、平台和部署节点进行了详细设计,确保技术架构的稳定性和扩展性。 适合人群:适用于具有定企业架构设计经验的IT架构师、项目经理和业务分析师,特别是那些希望深入了解如何将企业架构设计与数字化转型相结合的专业人士。 使用场景及目标:①帮助企业和组织梳理业务流程,优化业务能力,实现战略目标;②指导数据管理和应用开发,确保数据的致性和应用的高效性;③为技术选型和系统部署提供科学依据,确保技术架构的稳定性和扩展性。 阅读建议:此资源内容详尽,涵盖企业架构设计的各个方面。建议读者在学习过程中,结合实际案例进行理解和实践,重点关注各架构模块之间的关联和协同,以便更好地应用于实际工作中。
资 源 简 介 独立分量分析(Independent Component Analysis,简称ICA)是近二十年来逐渐发展起来的种盲信号分离方法。它是种统计方法,其目的是从由传感器收集到的混合信号中分离相互独立的源信号,使得这些分离出来的源信号之间尽可能独立。它在语音识别、电信和医学信号处理等信号处理方面有着广泛的应用,目前已成为盲信号处理,人工神经网络等研究领域中的个研究热点。本文简要的阐述了ICA的发展、应用和现状,详细地论述了ICA的原理及实现过程,系统地介绍了目前几种主要ICA算法以及它们之间的内在联系, 详 情 说 明 独立分量分析(Independent Component Analysis,简称ICA)是近二十年来逐渐发展起来的种盲信号分离方法。它是种统计方法,其目的是从由传感器收集到的混合信号中分离相互独立的源信号,使得这些分离出来的源信号之间尽可能独立。它在语音识别、电信和医学信号处理等信号处理方面有着广泛的应用,目前已成为盲信号处理,人工神经网络等研究领域中的个研究热点。 本文简要的阐述了ICA的发展、应用和现状,详细地论述了ICA的原理及实现过程,系统地介绍了目前几种主要ICA算法以及它们之间的内在联系,在此基础上重点分析了种快速ICA实现算法FastICA。物质的非线性荧光谱信号可以看成是由多个相互独立的源信号组合成的混合信号,而这些独立的源信号可以看成是光谱的特征信号。为了更好的了解光谱信号的特征,本文利用独立分量分析的思想和方法,提出了利用FastICA算法提取光谱信号的特征的方案,并进行了详细的仿真实验。 此外,我们还进行了进步的研究,探索了其他可能的ICA应用领域,如音乐信号处理、图像处理以及金融数据分析等。通过在这些领域中的实验和应用,我们发现ICA在提取信号特征、降噪和信号分离等方面具有广泛的潜力和应用前景。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值