Android之 Viewpager
16lz
2021-01-26
Viewpager可以使视图左右滑动 Viewpager在.xml声明的时候,需要加上前缀android.support.v4.view. 这个是谷歌公司为了让低版本的android系统也能使用viewpager而添加的库
加载显示的页卡
PagerAdater:该适配器通常要自定义一个子类,然后让子类去继承PagerAdapter 再实现其中的以下基本方法:
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用法一样
加载显示的页卡
- 将Layout布局转换为View对象LayoutInflaterlf=getLayoutInflater().from(this);
- View.inflate(context,resource,root);
- 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用法一样
更多相关文章
- ListView的OnItemClickListener事件被其内部Button点击事件屏蔽
- Android(安卓)Notification详解
- (转载)Android(安卓)之最新最全的Intent传递数据方法
- Android中Spinner下拉列表(使用ArrayAdapter和自定义Adapter实现)
- Android图片放大缩小实现方式(一)
- 总结 使用PHP作为中间介来实现android链接远程数据库。
- ObjectHttp使用介绍篇 —— 基础使用
- Android(安卓)编程下图片的内存优化
- Android(安卓)Jetpack(二)ViewModel 组件原理剖析