【Android源码 栏目提醒】:网学会员--在 Android源码 编辑为广大网友搜集整理了:android 屏幕切换效果实现(含代码) - Android源码代码下载 - CMD100 中国手机开发者联盟 - 技术总结绩等信息,祝愿广大网友取得需要的信息,参考学习。
android 屏幕切换效果实现含代码 -
Android源码代码下载 - CMD100 中国手机开发者联盟http://www.cmd100.com/bbs/forum.phpmodviewthreadtid79172011/3/17 3:02:28搜索本版首页
Android源码代码下载android 屏幕切换效果实现含代码Android学习视频分享Android开发专区团队组建交流GM软件发布平台帮Android软件开发创意Android原创软件发布Android程序悬赏解答Android参考资料下载
Android源码代码下载Android底层开发Google其他相关Android代码小帖士Android中文翻译组手机游戏应用壁灌水贴图发泄更新和功能日志每日签到记录集友情连接和广告12下一页返回列表查看: 70回复: 12应用 android 屏幕切换效果实现含代码 复制链接版主TA的每日心情开心昨天 09:00签到天数: 67 天连续签到: 28 天LV.6HTC6 wanglin5659643 本帖最后由 wanglin5659643 于 2011-3-16 16:51 编辑这里说的屏幕切换并不是指Activity切换大家都知道Activity是android中的一个重要概念一个程序可能会有多个Activity来做不同的事情Activity之间的切换是android系统统一实现的如果我们把这个切换效果给自定义了会给用户错误的引导所以目前android还没有提供控制Activity之间切换效果的API不过在将来的android版本中会提供一个函数activity.overridePendingTransition int enterAnim int exitAnim参数是Activity进入和退出使用的动画资源定义的ID可以在Activity启动另外一个Activity调用startActivity函数或则Activity退出调用finish函数的时候使用这样就使用指定了动画来显示关闭Activity。
虽然2.0版本提供了该功能为了和系统风格统一不引起用户误解笔者依然建议不要轻易使用该功能来改变Activity之间的切换效果。
回到正题本教程中的屏幕切换指的是在同一个Activity内屏幕见的切换最长见的情况就是在一个FrameLayout内有多个页面比如一个系统设置页面一个个性化设置页面。
通过查看android API文档可以发现有个android.widget.ViewAnimator类继承至FrameLayoutViewAnimator类的作用是为FrameLayout里面的View切换提供动画效果。
该类有如下几个和动画相关的函数l setInAnimation设置View进入屏幕时候使用的动画该函数有两个版本一个接受单个参数类型为android.view.animation.Animation一个接受两个参数类型为Context和int分别为Context对象和定义Animation的resourceID。
setOutAnimation: 设置View退出屏幕时候使用的动画参数setInAnimation函数一样。
showNext 调用该函数来显示FrameLayout里面的下一个View。
showPrevious 调用该函数来显示FrameLayout里面的上一个View。
一般不直接使用ViewAnimator而是使用它的两个子类ViewFlipper和ViewSwitcher。
ViewFlipper可以用来指定FrameLayout内多个View之间的切换效果可以一次指定也可以每次切换的时候都指定单独的效果。
该类额外提供了如下几个函数isFlipping 用来判断View切换是否正在进行楼主 发表于 昨天 16:50 只看该作者 倒序浏览 打印01. 02. 复制代码发布平台软件请完成【GM软件上传资格认证】发布Google MarketGM软件请完成【GM软件上传身份验证】【GM软件上传资格认证】猫糖 设置 管理菜单提醒 短消息 好友 邀请 任务 退出积分: 1468 威望: 6 铜币: 1422 软件收益: 0 金盾: 0 用户组: Android中级请输入搜索内容trueandroid 屏幕切换效果实现含代码 -
Android源码代码下载 - CMD100 中国手机开发者联盟http://www.cmd100.com/bbs/forum.phpmodviewthreadtid79172011/3/17 3:02:28setFilpInterval设置View之间切换的时间间隔startFlipping使用上面设置的时间间隔来开始切换所有的View切换会循环进行stopFlipping: 停止View切换ViewSwitcher 顾名思义Switcher特指在两个View之间切换。
可以通过该类指定一个ViewSwitcher.ViewFactory 工程类来创建这两个View。
该类也具有两个子类ImageSwitcher、TextSwitcher分别用于图片和文本切换。
在教程中通过示例介绍ViewFlipper 的使用其他的使用方式是类似的。
详细信息可以参考文档http://androidappdocs-staging.appspot.com/reference/android/widget/ViewAnimator.htmlViewFlipper示例记住ViewFlipper是继承至FrameLayout的所以它是一个Layout里面可以放置多个View。
在示例中定义一个ViewFlipper里面包含三个ViewGroup作为示例的三个屏幕每个ViewGroup中包含一个按钮和一张图片点击按钮则显示下一个屏幕。
代码如下reslayoutmain.xml很简单在Layout定义中指定动画的相关属性就可以了通过persistentDrawingCache指定缓存策略flipInterval指定每个View动画之间的时间间隔inAnimation和outAnimation分别指定View进出使用的动画效果。
动画效果定义如下01. 复制代码01. resanimpush_left_in.xml resanimpush_left_out.xml 复制代码01. public class TestActivity extends Activity private ViewFlippermViewFlipper Override public void onCreateBundle savedInstanceState super.onCreatesavedInstanceState setContentViewR.layout.main ButtonbuttonNext1 Button findViewByIdR.id.Button_next1 mViewFlipper ViewFlipper findViewByIdR.id.flipperbuttonNext1.setOnClickListenernew View.OnClickListener public voidonClickView view //在layout中定义的属性也可以在代码中指定 //mViewFlipper.setInAnimationgetApplicationContext R.anim.push_left_in// mViewFlipper.setOutAnimationgetApplicationContextR.anim.push_left_out //mViewFlipper.setPersistentDrawingCacheViewGroup.PERSISTENT_ALL_CACHES// mViewFlipper.setFlipInterval1000 mViewFlipper.showNext //调用下面的函数将会循环显示mViewFlipper内的所有View。
//mViewFlipper.startFlipping Button buttonNext2 ButtonfindViewByIdR.id.Button_next2 buttonNext2.setOnClickListenernewView.OnClickListener public void onClickView view mViewFlipper.showNext Button buttonNext3 ButtonfindViewByIdR.id.Button_next3 buttonNext3.setOnClickListenernewView.OnClickListener public void onClickView view mViewFlipper.showNext 复制代码android 屏幕切换效果实现含代码 -
Android源码代码下载 - CMD100 中国手机开发者联盟http://www.cmd100.com/bbs/forum.phpmodviewthreadtid79172011/3/17 3:02:28onFlingMotionEvent e1 MotionEvent e2 float velocityX float velocityY滑动手势事件6.onScrollMotionEvent e1 MotionEvent e2 float distanceX float distanceY在屏幕上拖动事件。
这些事件有些定义的不太容易理解在示例项目中实现了所有的回调函数在每个函数中输出相关的日志对这些事件不理解的可以运行项目通过不同的操作来触发事件然后观看logcat输出日志可有助于对这些事件的理解。
在上述事件中如果在程序中处理的该事件就返回true否则返回false在GestureDetector中也定义了一个SimpleOnGestureListener类这是个助手类实现了上述的所有函数并且都返回false。
如果在项目中只需要监听某个事件继承这个类可以少些几个空回调函数。
要走上面的程序中添加滑动手势来实现屏幕切换的话首先需要定义一个GestureDetectorprivate GestureDetector mGestureDetector并在onCreate函数中初始化mGestureDetector new GestureDetectorthis参数是OnGestureListener然后让TestActivity实现 OnGestureListener和OnDoubleTapListener接口然后在onFling函数中实现切换屏幕的功能这里实现的功能是从右往左滑动则切换到上一个View从左往右滑动则切换到下一个View并且使用不同的in、out 动画使切换效果看起来统一一些。
然后在onDoubleTap中实现双击自动切换的效果再次双击则停止到这里手势代码就完成了现在可以通过左右滑动切换View并且双击可以自动切换View。
细心的读者这里可能会发现一个问题上面在创建mGestureDetector 的时候使用的是如下代码mGestureDetector new GestureDetectorthis这里的参数为OnGestureListener而且GestureDetector有个函数setOnDoubleTapListener来设置OnDoubleTapListener在上面的代码中并没有设置OnDoubleTapListener那么onDoubleTap事件是如何调用的呢这里的玄机就要去探探GestureDetectorOnGestureListener l这个构造函数的源代码了01. class TestActivity extends Activity implements OnGestureListener OnDoubleTapListener 复制代码01. public boolean onFlingMotionEvent e1 MotionEvent e2 float velocityXfloat velocityY Log.dtag ...onFling... ife1.getX e2.getX //move to left mViewFlipper.showNext else ife1.getX
上一篇:
一Android中ADW源代码的同步和编译(windows版)
下一篇:
数字图像的可逆数字水印研究