ViewPager(新手篇----热身版)

ViewPager就是实现实现屏幕间的切换,现在我们就先只是先屏幕间切换,了解下ViewPager的使用流程,热下身,下一篇我们再给它添加标题以及点击响应和随着屏幕切换随着滑动的下划线(指示器)。

先大概说下使用ViewPager的三个步骤:

1.在布局中加入ViewPager(ViewPager是自定义view,不会像其他控件一样,打出一部分会弹出自动匹配的所有项,所以没出来别怀疑自己写错了,嘻嘻~~)<android.support.v4.ViewPager  />

2.准备要显示的页卡并加载

3.在Activity里实例化ViewPager组件,并设置它的Adapter

 

main.xml    总布局很简单就是一个ViewPager

<?xml version="1.0" encoding="UTF-8"?>
<RelativeLayout  xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
    <android.support.v4.view.ViewPager 
        android:id="@+id/viewPager"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"/>
 
</RelativeLayout>

layout1.xml  这是第一个页卡的布局,其他两个类似,只是text有所不同,所以就不贴了

<?xml version="1.0" encoding="UTF-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
    
    <ImageView 
        android:id="@+id/image1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:background="@drawable/ic_launcher"/>
    <TextView
        android:text="i am the text11111111"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/image1"
        android:layout_centerHorizontal="true"/>
    
</RelativeLayout>


下面看java代码

 主函数代码:

package com.example.viewpagertest;

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

import android.app.Activity;
import android.os.Bundle;
import android.support.v4.view.ViewPager;
import android.view.LayoutInflater;
import android.view.View;

public class MainActivity extends Activity {

	ViewPager viewpager;
	viewPagerAdapter myAdapter;
	View view1,view2,view3;
	List<View> views;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		//实例化页卡
		view1=findViewById(R.layout.layout1);
		view2=findViewById(R.layout.layout2);
		view3=findViewById(R.layout.layout3);
		//从xml中取出view
		LayoutInflater lf=LayoutInflater.from(this);
		view1=lf.inflate(R.layout.layout1, null);
	    view2=lf.inflate(R.layout.layout2, null);
	    view3=lf.inflate(R.layout.layout3, null);
		//把各个页卡的view添加到列表中
	    views=new ArrayList<View>();
	    views.add(view1);
	    views.add(view2);
	    views.add(view3);
	    //实例化ViewPager
		viewpager=(ViewPager)this.findViewById(R.id.viewPager);
		//实例化适配器
		myAdapter=new viewPagerAdapter(views);
		//给ViewPager添加适配器
		viewpager.setAdapter(myAdapter);
	}

}


 

适配器代码

package com.example.viewpagertest;

import java.util.List;

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

public class viewPagerAdapter extends PagerAdapter{

	//界面列表
	private List<View> views;
	
	public viewPagerAdapter(List<View> views){
		this.views=views;
	}
	
	@Override
	public void destroyItem(ViewGroup container, int position, Object object) {
		// TODO Auto-generated method stub
	        container.removeView(views.get(position));
	}

	@Override
	public int getCount() {
		// TODO Auto-generated method stub
		if(views!=null){
			return views.size();
		}
		return 0;
	}

	@Override
	public Object instantiateItem(ViewGroup container, int position) {
		// TODO Auto-generated method stub
		container.addView(views.get(position)); 
		return views.get(position);              
	}

	@Override
	public boolean isViewFromObject(View arg0, Object arg1) {
		// TODO Auto-generated method stub
		return (arg0==arg1);
	}

}


 


看主函数,思路应该很简单吧,就这样就可以实现屏幕间的滑动了哦~~

代码很简单,主要是让像我一样的新手对ViewPager大概熟悉下,主函数我就不详细讲解了,给大家介绍下PagerAdapter的几个重要的函数吧:

destroyItem()这个函数是将不再显示的视图从ViewPager的视图集合中移除掉

isViewFromObject()用于判断View和Object是否是为同一个View

instantiateItem()类似于BaseAdapter里面的getView()

 

好啦,今天就先对ViewPager大概有个了解,下一篇我们将实现贴合实际应用的Demo(效果图如下):

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值