注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

告别迷茫

梦想与现实的差距,就是我们生活的意义。因为我们有差距,我们才会一直积累,在努力。

 
 
 

日志

 
 

ViewPage+使用详解  

2015-05-04 23:43:57|  分类: 疯狂Android 讲义 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
1.viewpage 可以使用的三个adapter
PagerAdapter
FragmentPagerAdapter
FragmentStatePagerAdapter
结合三种的使用的情况详解看看,我们在使用的过程中的不同的方式
PagerTabStrip
PagerTitleStrip
这两个小玩意的使用,给我带来了,看上去不错的感觉。


main.xml的布局文件

<?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:id="@+id/pager"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center" >

<android.support.v4.view.PagerTabStrip
android:id="@+id/tab"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
</android.support.v4.view.PagerTabStrip>
<!--任意使用一个就可以了-->
<android.support.v4.view.PagerTitleStrip
android:id="@+id/pagertitle"
android:layout_width="fill_parent"
android:layout_height="45dp"
android:layout_gravity="bottom"
/>
</android.support.v4.view.ViewPager>

</LinearLayout>



1.首先我们来看看pageAdapter的使用

public class MainActivity extends FragmentActivity implements OnPageChangeListener{

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

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

<!--对应的页面,直接加载 很暴力-->
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=new ArrayList<View>();
viewList.add(view1);
viewList.add(view2);
viewList.add(view3);
viewList.add(view4);
<!--页面的标题--->
titleList=new ArrayList<String>();
titleList.add("第一页");
titleList.add("第二页");
titleList.add("第三页");
titleList.add("第四页");

<!--设置这个的属性-->
tab=(PagerTabStrip) findViewById(R.id.tab);
tab.setBackgroundColor(Color.YELLOW);
tab.setTabIndicatorColor(Color.BLUE);
tab.setDrawFullUnderline(false);
tab.setTextColor(Color.RED);


pager=(ViewPager) findViewById(R.id.pager);


<!--传提数据额的-->
MyViewPagerAdapter adapter=new MyViewPagerAdapter(viewList, titleList);
pager.setAdapter(adapter);

fragList=new ArrayList<Fragment>();
fragList.add(new Fragment1());
fragList.add(new Fragment2());
fragList.add(new Fragment3());
fragList.add(new Fragment4());

fragList=new ArrayList<Fragment>();
fragList.add(new Fragment1());
fragList.add(new Fragment2());
fragList.add(new Fragment3());
fragList.add(new Fragment4());

// MyFragmentPagerAdapter adapter2=new MyFragmentPagerAdapter(getSupportFragmentManager(), fragList, titleList);
// pager.setAdapter(adapter2);

//
// MyFragmentPagerAdapter2 adapter3=new MyFragmentPagerAdapter2(getSupportFragmentManager(), fragList, titleList);
// pager.setAdapter(adapter3);
pager.setOnPageChangeListener(this);
}

@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
// TODO Auto-generated method stub

}

@Override
public void onPageSelected(int arg0) {
// TODO Auto-generated method stub

Toast.makeText(this, "这是第"+(arg0+1)+"个界面", Toast.LENGTH_SHORT).show();
}



}


pageadapter 但是直接使用pageadapter的方式感觉不是太好,建议使用伐啦个么他弄fragmentadapter


package com.example.android_viewpager;

import java.util.List;

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

public class MyViewPagerAdapter extends PagerAdapter{

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

public MyViewPagerAdapter(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
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));
}

@Override
public CharSequence getPageTitle(int position) {
// TODO Auto-generated method stub
return titleList.get(position);
}

}





2.FragmentAdapter没有直接销毁的过程。。。

public class MyFragmentPagerAdapter extends FragmentPagerAdapter{

private List<Fragment>fragList;
private List<String>titleList;
public MyFragmentPagerAdapter(FragmentManager fm,List<Fragment> fragList,List<String>titleList) {
super(fm);
// TODO Auto-generated constructor stub
this.fragList=fragList;
this.titleList=titleList;
}

@Override
public Fragment getItem(int arg0) {
// TODO Auto-generated method stub
return fragList.get(arg0);
}

@Override
public int getCount() {
// TODO Auto-generated method stub
return fragList.size();
}

@Override
public CharSequence getPageTitle(int position) {
// TODO Auto-generated method stub
return titleList.get(position);
}


}


FragmentStatePagerAdapter可以选择销毁的过程的

public class MyFragmentPagerAdapter2 extends FragmentStatePagerAdapter{

private List<Fragment>fragList;
private List<String>titleList;
public MyFragmentPagerAdapter2(FragmentManager fm,List<Fragment> fragList,List<String>titleList) {
super(fm);
// TODO Auto-generated constructor stub
this.fragList=fragList;
this.titleList=titleList;
}

@Override
public Fragment getItem(int arg0) {
// TODO Auto-generated method stub
return fragList.get(arg0);
}

@Override
public int getCount() {
// TODO Auto-generated method stub
return fragList.size();
}

@Override
public CharSequence getPageTitle(int position) {
// TODO Auto-generated method stub
return titleList.get(position);
}

@Override
public void destroyItem(ViewGroup container, int position, Object object) {
// TODO Auto-generated method stub
super.destroyItem(container, position, object);
}

@Override
public Object instantiateItem(ViewGroup arg0, int arg1) {
// TODO Auto-generated method stub
return super.instantiateItem(arg0, arg1);
}


}



总体上看,使用起来还是不错的。。。
  评论这张
 
阅读(0)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017