前一篇已经简单介绍了ViewPager实现界面左右滑动的简单实现方法。可以该方法实现方式虽说简单,但是存在很大的问题——界面虽然随左右滑动而切换了,但是实际所在的操作类还同一个(即在同一个Activity中),这一问题将导致程序的逻辑变得复杂时,界面控件变多时该Activity中实现的代码迅速的增加,最终将会使用程序后期维护、他人的阅读变得更加困难。 本篇将介绍如何实现几个独立的Activity之间实现滑动切换效果。以下将讲述实现过程: 1.实现原理:ViewPager + ActivityGroup。 2.建立工程ViewPagerDemo2 编写的类有:MainActivity(主界面窗口)、MYPagerAdapter(和上篇讲述的一样),FirstActivity,SecondActivity,ThirdActivity(这三个对应上篇所讲的三个滑动切换界面) 编写的布局文件:main.xml,layout1.xml,layout2.xml,layout3.xml(这四个布局文件与上篇所讲完全一样) 本实例实现只有主界面窗口类与上篇所讲实现不同,这里的主界面窗口是继承自ActivityGroup,而非直接继承成Activity,其他类均一样,这里我们着重介绍该类的实现。 这是上篇所讲的初始化ViewPager方法 private void initViewPager(){ ViewPager viewPager = (ViewPager)findViewById(R.id.viewPager); View view1 = LayoutInflater.from(this).inflate(R.layout.layout1, null); View view2 = LayoutInflater.from(this).inflate(R.layout.layout2, null); View view3 = LayoutInflater.from(this).inflate(R.layout.layout3, null); ArrayList<View> views = new ArrayList<View>(); views.add(view1); views.add(view2); views.add(view3); MYViewPagerAdapter adapter = new MYViewPagerAdapter(); adapter.setViews(views); viewPager.setAdapter(adapter); } 这是改进的初始化ViewPager方法: private void initViewPager(){ view1 = getLocalActivityManager().startActivity("activity01", new Intent(this, FirstActivity.class)).getDecorView();view2 = getLocalActivityManager().startActivity("activity02", new Intent(this, SecondActivity.class)).getDecorView();view3 = getLocalActivityManager().startActivity("activity03", new Intent(this, ThirdActivity.class)).getDecorView();
ArrayList<View> views = new ArrayList<View>(); views.add(view1); views.add(view2); views.add(view3); MYViewPagerAdapter adapter = new MYViewPagerAdapter(); adapter.setViews(views); viewPager.setAdapter(adapter); } 以上两段代码实现方式唯一不同的是得到子View的方式不同,第一种方法原理是:从一个布局文件得到一个最终的View,然后添加到ViewPager中,从而实现多页的效果,多个页面各自的逻辑将写在同一个类中进行操作,而第二种方法是通过ActivityGroup这个类,得到另一个独立Activity界面的根View,将其添加到ViewPager对象中去,每个View仍然保持有各自的独立的逻辑。 示例代码下载地址:http://115.com/file/e75f18k7#ViewPagerDemo2.rar








更多相关文章

  1. 在Skobbler中完成导航时,确定“街边”的最佳方法是什么?
  2. 仿微信公众号界面实现
  3. 【Camera】Android平台Camera实时滤镜实现方法
  4. Fragment的setUserVisibleHint方法实现视频音频播放暂停
  5. Android-SDK-Manager 不能更新最有效的解决方法
  6. [置顶] android MultiDex multidex原理下超出方法数的限
  7. 关于Android的阅读界面设计问题
  8. android 关于读取SD卡或者U盘的一些方法
  9. 【Android笔记】Activity涉及界面全屏的方法

随机推荐

  1. Linux编程(8)_文件IO
  2. 用cmake与OpenCV对ARM进行交叉编译
  3. Fatal error: Call to undefined functio
  4. Linux环境下通过pdb调试Python程序
  5. linux 下的时间获取函数
  6. 像wget-like bittorrent客户端还是库?
  7. Android(安卓)照相机实现方式
  8. 疯狂了,Archlinux+Openbox+Rox+fbpanel我
  9. Linux 常用命令使用英文全称
  10. 【Azure】两台Linux虚拟机挂载共享文件