您的位置:首页 > 其它

关于ViewPager的初步理解

2016-08-05 09:19 351 查看
  关于ViewPager我只是做了简单最基本的功能。我看了好多资料,关于ViewPager以后的用处会非常大,在这里先了解一下什么是ViewPager。

关于ViewPager就是手指滑动时,能从一个界面滑动到另一个界面。效果如下:

下面是Layoutde 的代码:

<?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.support.v4.view.ViewPager
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:id="@+id/pager"
>
<android.support.v4.view.PagerTabStrip
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="top"
android:id="@+id/tab"
>
</android.support.v4.view.PagerTabStrip>
</android.support.v4.view.ViewPager>
</LinearLayout>


下面是Activity的代码:
package com.example.viewpager;

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

import com.example.tab.R;

import android.graphics.Color;
import android.os.Bundle;
import android.support.v4.view.PagerTabStrip;
import android.support.v4.view.PagerTitleStrip;
import android.support.v4.view.ViewPager;
import android.support.v7.app.ActionBarActivity;
import android.view.View;

public class test_viewpager extends ActionBarActivity{

private List<View>viewList;
private ViewPager pager;
private List<String> titleList;
private PagerTabStrip tab;

@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.viewpager_main);

//定义一个类型为View型的数组
viewList = new ArrayList<View>();

//把相应的布局转化为View型
View view1 = View.inflate(getApplicationContext(), R.layout.viewpager1, null);
View view2 = View.inflate(getApplicationContext(), R.layout.viewpager2, null);
View view3 = View.inflate(getApplicationContext(), R.layout.viewpager3, null);

//把转化过的布局一个个添加到viewList数组里
viewList.add(view1);
viewList.add(view2);
viewList.add(view3);

//为每一个view定义标题,把这些标题放入到数组里面
titleList = new ArrayList<String>();
//为页卡增加标题
titleList.add("第一页");
titleList.add("第二页");
titleList.add("第三页");

//为PagerTabStrip设置一些属性,为标题设置一些属性
tab = (PagerTabStrip) findViewById(R.id.tab);
tab.setBackgroundColor(Color.GRAY);//为标题设置背景颜色
tab.setTextColor(Color.RED);//设置 标题的字体颜色
tab.setDrawFullUnderline(false);//标题框中没有最下面的一道线
tab.setTabIndicatorColor(Color.BLUE);//设置滑动时那个小线线
//创建pageradapter适配器
MyAdapter adapter = new MyAdapter(viewList,titleList);//这里用的适配器是我们自定义的适配器
//初始化ViewPager
pager = (ViewPager) findViewById(R.id.pager);

//ViewPager加载适配器
pager.setAdapter(adapter);

}
}


下面是自定义Adapter的代码:

package com.example.viewpager;

import java.util.List;

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

public class MyAdapter extends PagerAdapter{

private List<View>viewList;
private List<String>titleList;

public MyAdapter(List<View>viewList,List<String>titleList){
this.viewList = viewList;
this.titleList = titleList;
}

/*
* 返回的是页卡的数量
* */
@Override
public int getCount() {
// TODO Auto-generated method stub
return viewList.size();
}

@Override

/*
* View是否来自于对象
* */
public boolean isViewFromObject(View arg0, Object arg1) {
// TODO Auto-generated method stub
return arg0 == arg1;
}

/*
* 实例化一个页卡
*
* */
@Override
public Object instantiateItem(ViewGroup container, int position) {
// TODO Auto-generated method stub
container.addView(viewList.get(position));
return viewList.get(position);
}

@Override
/*
* 销毁一个页卡
* */
public void destroyItem(ViewGroup container, int position, Object object) {
// TODO Auto-generated method stub
container.removeView(viewList.get(position));

}

/*
* 设置ViewPager页卡的标题
*
* */
@Override
public CharSequence getPageTitle(int position) {
// TODO Auto-generated method stub
return titleList.get(position);
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: