站长工具seo综合查询方法,wordpress电商爬虫批量上产品,新泰网络推广公司,做网站运营还是翻译在android应用中#xff0c;多屏滑动是一种很常见的风格#xff0c;没有采用viewpager的代码实现会很长#xff0c;如果采用ViewPager#xff0c;代码就会短很多#xff0c;但是使用ViewPager也有弊端#xff1a;需要导入android-support-v4.jar、细节无法控制。不过现在…在android应用中多屏滑动是一种很常见的风格没有采用viewpager的代码实现会很长如果采用ViewPager代码就会短很多但是使用ViewPager也有弊端需要导入android-support-v4.jar、细节无法控制。不过现在情况已经不一样了android-support-v4中提供了很多实用的功能以至于现在新建一个android工程默认都会导入这个jar包。那我们就也采用viewpager来做滑动吧。另外一个概念就是Fragment和FragmentActivityFragment是一个特殊的类有着和activity一致的生命周期和view一致的界面也就是Fragment就等于具有生命周期的View但是要注意的是Fragment并不是View它和View没有继承关系。使用Fragment的好处是Fragment可以重用而且每个Fragment可以在内部处理自己的业务就像activity一样这样模块间耦合较低比把所有的业务都写在一个activity内部逻辑要清晰很多。还有就是由于每个模块的业务都在Fragment内部来实现这样activity只要管理好几个Fragment就行了不需要做和业务相关的事情最后Fragment可以用来做不同分辨率机型的适配。Fragment在sdk(android 3.0及更高)和android-support-v4里面都有但是由于兼容性的问题我们只能使用android-support-v4里面的Fragment除非你想你的apk只跑在3.0以后的android手机上FragmentActivity的情况和Fragment类似。关于Fragment和FragmentActivity其实有一些基本的用法需要了解一下但是考虑到Fragment不是本文的重点所以这里就不介绍了另外本文只用Fragment做了一个简单的界面大家应该一看就懂好了言归正传。ViewPager Fragment 经常用到 代码是从 actionbarsherlock 中提取出来的这个效果都知道是 滑动来切换的。直接上代码了在这里简单说明一下 FragmentStatePagerAdapter 和 FragmentPagerAdapter2个adapter第一种 fragment状态adapter - 在当前只会存在 前1个fragment 当前 fragment 和 下1个 fragment 其他销毁 适合加载多数据第二种 FragmentPagerAdapter - 全部存在所以不太适合加载 大量的数据 如图片什么的很容易内存溢出。工程结构1.activity adapter 在一起 (static类型的 Fragment)public class ViewPageFragment extends FragmentActivity {//这个是有多少个 fragment页面static final int NUM_ITEMS 5;private MyAdapter mAdapter;private ViewPager mPager;private int nowPage;Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.pagers_fragment_main);mAdapter new MyAdapter(getSupportFragmentManager() );mPager (ViewPager)findViewById(R.id.mypagers_pager);mPager.setAdapter(mAdapter);}/*** 有状态的 只会有前3个存在 其他销毁 前1个 中间 下一个*/public static class MyAdapter extends FragmentStatePagerAdapter {public MyAdapter(FragmentManager fm) {super(fm);}Overridepublic int getCount() {return NUM_ITEMS;}//得到每个itemOverridepublic Fragment getItem(int position) {return ArrayFragment.newInstance(position);}// 初始化每个页卡选项Overridepublic Object instantiateItem(ViewGroup arg0, int arg1) {// TODO Auto-generated method stubreturn super.instantiateItem(arg0, arg1);}Overridepublic void destroyItem(ViewGroup container, int position, Object object) {System.out.println( position Destory position);super.destroyItem(container, position, object);}}/*** 无状态的 会全部加载着 这个适合少量的 特别多的图片啊啥的 还是用 FragmentStatePagerAdapter* author lilei*/// public static class MyAdapter extends FragmentPagerAdapter {// public MyAdapter(FragmentManager fm ) {// super(fm);//// }//// Override// public int getCount() {// return NUM_ITEMS;// }//// Override// public Fragment getItem(int position) {// // 返回相应的 fragment// return ArrayFragment.newInstance(position);// }//// Override// public void destroyItem(ViewGroup container, int position, Object object) {// System.out.println( position Destory position);// super.destroyItem(container, position, object);// }// }/*** 所有的 每个Fragment*/public static class ArrayFragment extends Fragment {int mNum;static ArrayFragment newInstance(int num) {ArrayFragment array new ArrayFragment();Bundle args new Bundle();args.putInt(num, num);array.setArguments(args);return array;}Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);mNum getArguments() ! null ? getArguments().getInt(num) : 1;System.out.println(mNum Fragment create mNum);}Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {System.out.println(onCreateView );//在这里加载每个 fragment的显示的 ViewView v null;if(mNum 0){v inflater.inflate(R.layout.pagers_fragment1, container, false);((TextView)v.findViewById(R.id.textView1)).setText(mNum mNum);}else if(mNum 1){v inflater.inflate(R.layout.pagers_fragment1, container, false);((TextView)v.findViewById(R.id.textView1)).setText(mNum mNum);}else if(mNum 2){v inflater.inflate(R.layout.pagers_fragment1, container, false);((TextView)v.findViewById(R.id.textView1)).setText(mNum mNum);}else{v inflater.inflate(R.layout.pagers_fragment1, container, false);((TextView)v.findViewById(R.id.textView1)).setText(mNum mNum);}return v;}Overridepublic void onActivityCreated(Bundle savedInstanceState) {System.out.println(onActivityCreated );super.onActivityCreated(savedInstanceState);}Overridepublic void onDestroyView(){System.out.println(mNum mNumDestory);super.onDestroyView();}Overridepublic void onDestroy(){super.onDestroy();}}}2. 和 1也没什么太大区别( 个中用处 看个人了 )public class ViewPageFragmentCS extends FragmentActivity {//这个是有多少个 fragment页面private MyAdapter mAdapter;private ViewPager mPager;private List list new ArrayList();;Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.pagers_fragment_main);for (int i 0; i 7 ; i) {Entity ee new Entity();ee.name ll i;ee.age i;list.add(ee);}mAdapter new MyAdapter(getSupportFragmentManager(),list);mPager (ViewPager)findViewById(R.id.mypagers_pager);mPager.setAdapter(mAdapter);}private class Entity{public String name;public String age;}// 在这里你可以传 list 也可以传递 list数据public class MyAdapter extends FragmentStatePagerAdapter {List list_ee;public MyAdapter(FragmentManager fm, List ee) {super(fm);this.list_ee ee ;}Overridepublic int getCount() {return list_ee.size();}// 初始化每个页卡选项Overridepublic Object instantiateItem(ViewGroup arg0, int position) {ArrayFragment ff (ArrayFragment)super.instantiateItem(arg0, position);ff.setThings(list_ee.get(position),position);return ff;}Overridepublic void destroyItem(ViewGroup container, int position, Object object) {System.out.println( position Destory position);super.destroyItem(container, position, object);}Overridepublic Fragment getItem(int arg0) {// TODO Auto-generated method stubreturn new ArrayFragment();}}/*** 所有的 每个Fragment*/public class ArrayFragment extends Fragment {private Entity ee;private int position;public void setThings(Entity ee,int position){this.ee ee ;this.position position;}Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);}Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {System.out.println(onCreateView );//在这里加载每个 fragment的显示的 ViewView v inflater.inflate(R.layout.pagers_fragment1, container, false);((TextView)v.findViewById(R.id.textView1)).setText(ee.name ee.Name -age ee.age);return v;}Overridepublic void onActivityCreated(Bundle savedInstanceState) {System.out.println(onActivityCreated );super.onActivityCreated(savedInstanceState);}Overridepublic void onDestroyView(){System.out.println(onDestroyView position);super.onDestroyView();}Overridepublic void onDestroy(){System.out.println(onDestroy position);super.onDestroy();}}}直接复制过去就可以看效果了 别忘记 V4包xml 布局文件 自己随便整个吧。滑动到第3个页面的时候可以看到第1个页面销毁第4个生成当前存在2、3、4更多Android App中使用ViewPagerFragment实现滑动切换效果相关文章请关注PHP中文网声明本文原创发布php中文网转载请注明出处感谢您的尊重如有疑问请联系adminphp.cn处理