引用:http://www.apkbus.com/android-18384-1-1.html

为ViewFlipper视图切换增加动画Android中实现视图随手势移动中实现了视图随手势切换,现在Android中Compatibility Package提供了ViewPager可以更简便的实现视图切换,实现的效果如下:

<ignore_js_op>

效果和ViewGroup一样,但是实现过程更简单.新版的Android Market和Google+都是用了ViewPager.

<ignore_js_op>

说一下实现过程:

工程目录如下:

<ignore_js_op>

MyPagerActivity的onCreate方法如下:

  1. @Override
  2. public void onCreate(Bundle savedInstanceState) {
  3. super.onCreate(savedInstanceState);
  4. setContentView(R.layout.main);
  5. initPageContent();
  6. awesomeAdapter = new MyPagerAdapter();
  7. awesomePager = (ViewPager) findViewById(R.id.awesomepager);
  8. awesomePager.setAdapter(awesomeAdapter);
  9. }

复制代码

其中main.xml布局文件引入了ViewPager:

  1. <linearlayout xmlns:android="http://schemas.android.com/apk/res/android"
  2. android:orientation="vertical"
  3. android:layout_width="fill_parent"
  4. android:layout_height="fill_parent"
  5. android:background="#a4c639">
  6. <android.support.v4.view.viewpager
  7. android:layout_width="match_parent"
  8. android:layout_height="match_parent"
  9. android:id="@+id/awesomepager"/>

复制代码

MyPagerAdapter继承了PagerAdapter:

  1. private class MyPagerAdapter extends PagerAdapter{
  2. @Override
  3. public int getCount() {
  4. return imageS.length;
  5. }
  6. /**
  7. * Create the page for the given position.  The adapter is responsible
  8. * for adding the view to the container given here, although it only
  9. * must ensure this is done by the time it returns from
  10. * {@link #finishUpdate()}.
  11. *
  12. * @param container The containing View in which the page will be shown.
  13. * @param position The page position to be instantiated.
  14. * @return Returns an Object representing the new page.  This does not
  15. * need to be a View, but can be some other container of the page.
  16. */
  17. @Override
  18. public Object instantiateItem(View collection, int position) {
  19. View view = getLayoutInflater().inflate(R.layout.page,null);
  20. ImageView imageView =(ImageView) view.findViewById(R.id.imageId);
  21. imageView.setImageDrawable(imageS[position]);
  22. ((ViewPager) collection).addView(view,0);
  23. return view;
  24. }
  25. /**
  26. * Remove a page for the given position.  The adapter is responsible
  27. * for removing the view from its container, although it only must ensure
  28. * this is done by the time it returns from {@link #finishUpdate()}.
  29. *
  30. * @param container The containing View from which the page will be removed.
  31. * @param position The page position to be removed.
  32. * @param object The same object that was returned by
  33. * {@link #instantiateItem(View, int)}.
  34. */
  35. @Override
  36. public void destroyItem(View collection, int position, Object view) {
  37. ((ViewPager) collection).removeView((View) view);
  38. }
  39. @Override
  40. public boolean isViewFromObject(View view, Object object) {
  41. return view==((View)object);
  42. }
  43. /**
  44. * Called when the a change in the shown pages has been completed.  At this
  45. * point you must ensure that all of the pages have actually been added or
  46. * removed from the container as appropriate.
  47. * @param container The containing View which is displaying this adapter’s
  48. * page views.
  49. */
  50. @Override
  51. public void finishUpdate(View arg0) {}
  52. @Override
  53. public void restoreState(Parcelable arg0, ClassLoader arg1) {}
  54. @Override
  55. public Parcelable saveState() {
  56. return null;
  57. }
  58. @Override
  59. public void startUpdate(View arg0) {}
  60. }

复制代码

其中红色代码部分负责加载Layout和想layout中填充View.这样就实现了视图的随手势切换.源代码见: <ignore_js_op> android-viewpager0.1.rar (375.4 KB, 下载次数: 813)

viewpaper 抽屉的更多相关文章

  1. 浅谈DrawerLayout(抽屉效果)

    DrawerLayout是V4包下提供的一种左滑右滑抽屉布局效果. 实现效果如下: 因为是官方提供的,所以使用起来也相对的比较简单. DrawerLayout 提供 1.当界面弹出的时候,主要内容区会 ...

  2. 【IOS】模仿"抽屉新热榜"动态启动页YFSplashScreen

    IOS最好要设置系统默认启动页面,不然进入应用就会突然闪现黑色画面 下图是我们要实现的效果: 总体思路:设置一个系统默认启动页面,在进入didFinishLaunchingWithOptions时, ...

  3. iOS开发之抽屉效果实现

    说道抽屉效果在iOS中比较有名的第三方类库就是PPRevealSideViewController.一说到第三方类库就自然而然的想到我们的CocoaPods,今天的博客中用CocoaPods引入PPR ...

  4. Xamarin.Android之简单的抽屉布局

    0x01 前言 相信对于用过Android版QQ的,应该都不会陌生它那个向右滑动的菜单(虽说我用的是Lumia) 今天就用Xamarin.Android实现个比较简单的抽屉布局.下面直接进正题. 0x ...

  5. ToolBar和DrawerLayout的使用实现侧拉栏抽屉的开闭

    1.如图可以看到textColorPrimary,colorPrimary,colorPrimaryDark,navigationBarColor等颜色属性代表的相应位置,如下图 2.具体属性在res ...

  6. Zookeeper(一)从抽屉算法到Quorum (NRW)算法

    一.抽屉算法 抽屉算法,又名鸽巢原理,它是德国数学家狄利克雷首先明确的提出来并用以证明一些数论中的问题,因此,也称为狄利克雷原则.它是组合数学中一个重要的原理. 具体算法讲的是: 第一抽屉算法: 如果 ...

  7. [UI]抽屉菜单DrawerLayout分析(一)

    本文转载于:http://www.cnblogs.com/avenwu/archive/2014/04/16/3669367.html 侧拉菜单作为常见的导航交互控件,最开始在没有没有android官 ...

  8. Android笔记:DrawerLayout抽屉布局的使用

    DrawerLayout(抽屉布局),在各种app中经常出现,比如csdn.. 如下示,只要从屏幕侧边滑一下,或者点击左上角的图标,抽屉就会出来. DrawerLayout要点: 1.使用Drawer ...

  9. Android 抽屉效果的导航菜单实现

    Android 抽屉效果的导航菜单实现 抽屉效果的导航菜单 看了很多应用,觉得这种侧滑的抽屉效果的菜单很好. 不用切换到另一个页面,也不用去按菜单的硬件按钮,直接在界面上一个按钮点击,菜单就滑出来,而 ...

随机推荐

  1. 最全的iOS面试题及答案-转载

    1. Object-c的类可以多重继承么?可以实现多个接口么?Category是什么?重写一个类的方式用继承好还是分类好?为什么? 答: Object-c的类不可以多重继承:可以实现多个接口,通过实现 ...

  2. C#面向对象之属性

    1.属性的定义及使用 class MyClass { ; //属性的定义 private string name = ""; //属性的定义 public int Id { get ...

  3. Docker1.12 新增swarm集群

    在Docker1.12新版本中,一个新增加的功能点是swarm集群,通过docker命令可以直接实现docker-engine相互发现,并组建成为一个容器集群.有关集群的docker命令如下: (1) ...

  4. Button,CheckBox,Lable,RadioButton,ComboBox,TextBox六个简单控件的使用

    所有文字的更改全部在Text属性中更改! ComboBox:点击右上方小箭头,选择编辑项弹出: RadioButton:,Checked属性选择True,表示已被选中: Button:在设计中双击按钮 ...

  5. html中隐藏域hidden的作用介绍及使用示例

    基本语法: <input type="hidden" name="field_name" value="value"> 作用:  ...

  6. 关于ASPCMS标签调用的一些总结

    菜单的应用 <ul class="nav navbar-nav"> {aspcms:navlist} {}<!--判断是否有下级目录--> <li c ...

  7. 从客户端(Content="<p>SF</p>")中检测到有潜在危险的 Request.Form 值

    出现这个问题,一般是由于.Net Framework 使用了4.0或以上版本造成的.(从 .Net Framework 4.0 开始,ASP.NET开始强制检测Request参数安全),而我们可以通过 ...

  8. Android课程---第一课

    Android是一种基于Linux的开源的操作系统 主要使用于智能设备,如智能手机.平板电脑和智能电视等 由Google公司领头开发并推广,2008年推出第一个版本. 此系统最初由”安卓之父" ...

  9. ionic 运用pouchdb/sqlite 数据库做本地存储

    配置数据库环境需要3步: 1.安装slqite插件 在ionic 工程目录对应终端执行一下命令: npm install cordova-plugin-sqlite 2.安装pouchdb 在ioni ...

  10. TCP/IP协议分层

    TCP/IP协议从上而下,层层包装: (1)应用层:HTTP (2)传输层:TCP和UDP (3)网络层(网际互联层):IP (4)数据连接层(网络接入层):为IP模块发送和接收IP数据报. (5)硬 ...