Android之 Viewpager
2016-04-16 12:17
661 查看
Viewpager 可以使视图左右滑动
Viewpager在.xml声明的时候,需要加上前缀android.support.v4.view.
这个是谷歌公司为了让低版本的android系统也能使用viewpager而添加的库
加载显示的页卡
将Layout布局转换为View对象LayoutInflater lf = getLayoutInflater().from(this);
View.inflate(context,resource,root);
配置Adapter
pagerAdater 数据源:List<View>
FragmentpagerAdater 数据源 : Lst<Fragment>
FragmentStatepagerAdater 数据源 : List<Fragment>
PagerAdater:该适配器通常要自定义一个子类,然后让子类去继承PagerAdapter
再实现其中的以下基本方法:
//判断view是否来自于对象
public boolean isViewFromObject(View arg0, Object arg1)
//返回页卡的数量
public int getCount()
//实例化一个页卡
public Object instantiateItem(ViewGroup container, int position)
//其中在实例化中,用container.addView(listview.get(position));即可实例化
//销毁一个页卡
public void destroyItem(ViewGroup container, int position, Object object)
//其中在销毁中,用container.removeView(listview.get(position));方法即可销毁
example:
---------------------------------------------------------------------------------------------------------------------\
/*
* 首先先建立几个 布局文件,再用View.inflate将布局文件传换成View对象
* 将转换成的View对象放入List<View>中通过对象的.add方法
* 要创建一个继承PagerAdapter的子类,一般子类的构造器的参数为数据源(就像上面所做的一样)
* 之后在main函数中将数PagerAdapter声明出来
* 然后让viewpager加载适配器
*/
//MypagerAdapter.java
package com.example.viewpagertest;
import java.util.List;
import android.support.v4.view.PagerAdapter;
import android.view.View;
import android.view.ViewGroup;
public class MyPagerAdapter extends PagerAdapter{
private List<View>viewlist;
public MyPagerAdapter(List<View> listview) {
// TODO Auto-generated constructor stub
this.viewlist=listview;
}
//返回页卡的数量
@Override
public int getCount() {
// TODO Auto-generated method stub
return viewlist.size();
}
//判断view是否来自于对象
@Override
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));
}
}
//MainActivity.java部分代码
private List<View> viewList;
private ViewPager viewpager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
viewpager = (ViewPager) findViewById(R.id.pager);
viewList = new ArrayList<View>();
/*
*通过View对象作为PagerAdapter 的适配源
*/
View view1=View.inflate(this, R.layout.view1, null);
View view2=View.inflate(this, R.layout.view2, null);
View view3=View.inflate(this, R.layout.view3, null);
View view4=View.inflate(this, R.layout.view4, null);
viewList.add(view1);
viewList.add(view2);
viewList.add(view3);
viewList.add(view4);
//创建pagerAdapter
MyPagerAdapter pageradapter =new MyPagerAdapter(viewList);
//让Viewpager 加载适配器
viewpager.setAdapter(pageradapter);
}
-----------------------------------------------------------------------------------------------------
给Viewpager添加标题
在MainActivity中
private PagerTabStrip tab;
private List<String> titlelist;
//为PagerTabstrip设置一些属性
tab = (PagerTabStrip) findViewById(R.id.tab);
tab.setBackgroundColor(Color.BLUE);
tab.setTextColor(Color.YELLOW);
tab.setDrawFullUnderline(false);
tab.setTabIndicatorColor(Color.GREEN);
在MypagerAdapter中
private List<String>titlelist;
//构造器
public MyPagerAdapter(List<View> listview,List<String> titlelist) {
// TODO Auto-generated constructor stub
this.viewlist=listview;
this.titlelist=titlelist;
}
//返回标题
public CharSequence getPageTitle(int position) {
// TODO Auto-generated method stub
return titlelist.get(position);
}
在ViewPager中添加PagerTabStrip时前面也需要添加android.support.v4.view
PagerTitleStrip和PagerTabStrip用法一样
Viewpager在.xml声明的时候,需要加上前缀android.support.v4.view.
这个是谷歌公司为了让低版本的android系统也能使用viewpager而添加的库
加载显示的页卡
将Layout布局转换为View对象LayoutInflater lf = getLayoutInflater().from(this);
View.inflate(context,resource,root);
配置Adapter
pagerAdater 数据源:List<View>
FragmentpagerAdater 数据源 : Lst<Fragment>
FragmentStatepagerAdater 数据源 : List<Fragment>
PagerAdater:该适配器通常要自定义一个子类,然后让子类去继承PagerAdapter
再实现其中的以下基本方法:
//判断view是否来自于对象
public boolean isViewFromObject(View arg0, Object arg1)
//返回页卡的数量
public int getCount()
//实例化一个页卡
public Object instantiateItem(ViewGroup container, int position)
//其中在实例化中,用container.addView(listview.get(position));即可实例化
//销毁一个页卡
public void destroyItem(ViewGroup container, int position, Object object)
//其中在销毁中,用container.removeView(listview.get(position));方法即可销毁
example:
---------------------------------------------------------------------------------------------------------------------\
/*
* 首先先建立几个 布局文件,再用View.inflate将布局文件传换成View对象
* 将转换成的View对象放入List<View>中通过对象的.add方法
* 要创建一个继承PagerAdapter的子类,一般子类的构造器的参数为数据源(就像上面所做的一样)
* 之后在main函数中将数PagerAdapter声明出来
* 然后让viewpager加载适配器
*/
//MypagerAdapter.java
package com.example.viewpagertest;
import java.util.List;
import android.support.v4.view.PagerAdapter;
import android.view.View;
import android.view.ViewGroup;
public class MyPagerAdapter extends PagerAdapter{
private List<View>viewlist;
public MyPagerAdapter(List<View> listview) {
// TODO Auto-generated constructor stub
this.viewlist=listview;
}
//返回页卡的数量
@Override
public int getCount() {
// TODO Auto-generated method stub
return viewlist.size();
}
//判断view是否来自于对象
@Override
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));
}
}
//MainActivity.java部分代码
private List<View> viewList;
private ViewPager viewpager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
viewpager = (ViewPager) findViewById(R.id.pager);
viewList = new ArrayList<View>();
/*
*通过View对象作为PagerAdapter 的适配源
*/
View view1=View.inflate(this, R.layout.view1, null);
View view2=View.inflate(this, R.layout.view2, null);
View view3=View.inflate(this, R.layout.view3, null);
View view4=View.inflate(this, R.layout.view4, null);
viewList.add(view1);
viewList.add(view2);
viewList.add(view3);
viewList.add(view4);
//创建pagerAdapter
MyPagerAdapter pageradapter =new MyPagerAdapter(viewList);
//让Viewpager 加载适配器
viewpager.setAdapter(pageradapter);
}
-----------------------------------------------------------------------------------------------------
给Viewpager添加标题
在MainActivity中
private PagerTabStrip tab;
private List<String> titlelist;
//为PagerTabstrip设置一些属性
tab = (PagerTabStrip) findViewById(R.id.tab);
tab.setBackgroundColor(Color.BLUE);
tab.setTextColor(Color.YELLOW);
tab.setDrawFullUnderline(false);
tab.setTabIndicatorColor(Color.GREEN);
在MypagerAdapter中
private List<String>titlelist;
//构造器
public MyPagerAdapter(List<View> listview,List<String> titlelist) {
// TODO Auto-generated constructor stub
this.viewlist=listview;
this.titlelist=titlelist;
}
//返回标题
public CharSequence getPageTitle(int position) {
// TODO Auto-generated method stub
return titlelist.get(position);
}
在ViewPager中添加PagerTabStrip时前面也需要添加android.support.v4.view
PagerTitleStrip和PagerTabStrip用法一样
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件
- SourceProvider.getJniDirectories