引用: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方法如下:
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- initPageContent();
- awesomeAdapter = new MyPagerAdapter();
- awesomePager = (ViewPager) findViewById(R.id.awesomepager);
- awesomePager.setAdapter(awesomeAdapter);
- }
复制代码
其中main.xml布局文件引入了ViewPager:
- <linearlayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:orientation="vertical"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- android:background="#a4c639">
- <android.support.v4.view.viewpager
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:id="@+id/awesomepager"/>
复制代码
MyPagerAdapter继承了PagerAdapter:
- private class MyPagerAdapter extends PagerAdapter{
- @Override
- public int getCount() {
- return imageS.length;
- }
- /**
- * Create the page for the given position. The adapter is responsible
- * for adding the view to the container given here, although it only
- * must ensure this is done by the time it returns from
- * {@link #finishUpdate()}.
- *
- * @param container The containing View in which the page will be shown.
- * @param position The page position to be instantiated.
- * @return Returns an Object representing the new page. This does not
- * need to be a View, but can be some other container of the page.
- */
- @Override
- public Object instantiateItem(View collection, int position) {
- View view = getLayoutInflater().inflate(R.layout.page,null);
- ImageView imageView =(ImageView) view.findViewById(R.id.imageId);
- imageView.setImageDrawable(imageS[position]);
- ((ViewPager) collection).addView(view,0);
- return view;
- }
- /**
- * Remove a page for the given position. The adapter is responsible
- * for removing the view from its container, although it only must ensure
- * this is done by the time it returns from {@link #finishUpdate()}.
- *
- * @param container The containing View from which the page will be removed.
- * @param position The page position to be removed.
- * @param object The same object that was returned by
- * {@link #instantiateItem(View, int)}.
- */
- @Override
- public void destroyItem(View collection, int position, Object view) {
- ((ViewPager) collection).removeView((View) view);
- }
- @Override
- public boolean isViewFromObject(View view, Object object) {
- return view==((View)object);
- }
- /**
- * Called when the a change in the shown pages has been completed. At this
- * point you must ensure that all of the pages have actually been added or
- * removed from the container as appropriate.
- * @param container The containing View which is displaying this adapter’s
- * page views.
- */
- @Override
- public void finishUpdate(View arg0) {}
- @Override
- public void restoreState(Parcelable arg0, ClassLoader arg1) {}
- @Override
- public Parcelable saveState() {
- return null;
- }
- @Override
- public void startUpdate(View arg0) {}
- }
复制代码
其中红色代码部分负责加载Layout和想layout中填充View.这样就实现了视图的随手势切换.源代码见: <ignore_js_op> android-viewpager0.1.rar (375.4 KB, 下载次数: 813)
|
|
- 浅谈DrawerLayout(抽屉效果)
DrawerLayout是V4包下提供的一种左滑右滑抽屉布局效果. 实现效果如下: 因为是官方提供的,所以使用起来也相对的比较简单. DrawerLayout 提供 1.当界面弹出的时候,主要内容区会 ...
- 【IOS】模仿"抽屉新热榜"动态启动页YFSplashScreen
IOS最好要设置系统默认启动页面,不然进入应用就会突然闪现黑色画面 下图是我们要实现的效果: 总体思路:设置一个系统默认启动页面,在进入didFinishLaunchingWithOptions时, ...
- iOS开发之抽屉效果实现
说道抽屉效果在iOS中比较有名的第三方类库就是PPRevealSideViewController.一说到第三方类库就自然而然的想到我们的CocoaPods,今天的博客中用CocoaPods引入PPR ...
- Xamarin.Android之简单的抽屉布局
0x01 前言 相信对于用过Android版QQ的,应该都不会陌生它那个向右滑动的菜单(虽说我用的是Lumia) 今天就用Xamarin.Android实现个比较简单的抽屉布局.下面直接进正题. 0x ...
- ToolBar和DrawerLayout的使用实现侧拉栏抽屉的开闭
1.如图可以看到textColorPrimary,colorPrimary,colorPrimaryDark,navigationBarColor等颜色属性代表的相应位置,如下图 2.具体属性在res ...
- Zookeeper(一)从抽屉算法到Quorum (NRW)算法
一.抽屉算法 抽屉算法,又名鸽巢原理,它是德国数学家狄利克雷首先明确的提出来并用以证明一些数论中的问题,因此,也称为狄利克雷原则.它是组合数学中一个重要的原理. 具体算法讲的是: 第一抽屉算法: 如果 ...
- [UI]抽屉菜单DrawerLayout分析(一)
本文转载于:http://www.cnblogs.com/avenwu/archive/2014/04/16/3669367.html 侧拉菜单作为常见的导航交互控件,最开始在没有没有android官 ...
- Android笔记:DrawerLayout抽屉布局的使用
DrawerLayout(抽屉布局),在各种app中经常出现,比如csdn.. 如下示,只要从屏幕侧边滑一下,或者点击左上角的图标,抽屉就会出来. DrawerLayout要点: 1.使用Drawer ...
- Android 抽屉效果的导航菜单实现
Android 抽屉效果的导航菜单实现 抽屉效果的导航菜单 看了很多应用,觉得这种侧滑的抽屉效果的菜单很好. 不用切换到另一个页面,也不用去按菜单的硬件按钮,直接在界面上一个按钮点击,菜单就滑出来,而 ...
随机推荐
- [LintCode] Scramble String 爬行字符串
Given a string s1, we may represent it as a binary tree by partitioning it to two non-empty substrin ...
- cat 显示指定行
[一]从第3000行开始,显示1000行.即显示3000~3999行 cat filename | tail -n +3000 | head -n 1000 [二]显示1000行到3000行 cat ...
- linux中,常用的账号管理命令
创建新用户:adduser 用户名创建新用户并将其加入一个现有组中:adduser 用户名 -G 组名创建新用户并使其只属于该组:adduser 用户名 -g 组名创建用户密码:passwd 用户名创 ...
- 在VS2012/2013上编辑和调试Quick-cocos2d-x的Lua代码
类似教程链接:http://www.cocoachina.com/bbs/read.php?tid=205043 步骤: 一.Quick-cocos2d-x 最新版本或要打算使用的版本 (http:/ ...
- 基于Jenkins的环境搭建
基于 Jenkins 快速搭建持续集成环境 持续集成是一种软件开发实践,对于提高软件开发效率并保障软件开发质量提供了理论基础.Jenkins 是一个开源软件项目,旨在提供一个开放易用的软件平台,使持续 ...
- 20145334赵文豪 《Java程序设计》第1周学习总结
20145334赵文豪 <Java程序设计>第1周学习总结 教材学习内容总结 第一周的学习在紧张中结束了,我们这周了解了各门课的基本内容与授课形式,在第一周java课程的的学习中我们学习了 ...
- ios-系统警告框 跳转到设置里面
-(void)createUIAlertIphone:(NSString*)title { UIAlertController * alert =[UIAlertController alertCon ...
- Asp.net DropDownList 自定义样式(想怎么改就怎么改!)
最近在做一个asp.net的项目,需要对默认的dropdownlist样式进行美化,固有的dropdownlist的小箭头实在让人无法接受,于是开始在百度,google 上下求索,天不负有心人,终于找 ...
- Properties类使用
package com.emolay.util; import java.io.IOException; import java.io.InputStream; import java.util.Pr ...
- mac自定义安装nodejs步骤
自定义安装的好处是nodejs相关的文件都在同一个文件夹下,且不与其它程序的文件混合在同一文件夹下. 1.下载node并解压缩:https://nodejs.org/dist/,选择tar.gz包下载 ...