- 浏览: 137328 次
- 性别:
文章分类
- 全部博客 (226)
- Android (181)
- C# (8)
- BOOTSTRAP (1)
- ASP.NET MVC4 (1)
- 设计模式 (1)
- VB.NET (1)
- WPF (0)
- PLC (0)
- 电气图纸 (0)
- 数据库 (5)
- Java (5)
- Window phone (0)
- 仪器仪表 (0)
- 变频器 (0)
- 低压电器 (0)
- 物联网 (0)
- Photoshop (1)
- SVN (1)
- 单片机 (5)
- IT (1)
- Android_IOS风格 (0)
- Android_广告栏展示 (0)
- Android_动画 (1)
- Android_Adapter (0)
- Android_ListView (1)
- Android_File (2)
- Android_表单提交 (0)
- Android_WebView (1)
- PHP (2)
- Android_Excel (1)
- Android_drawable (1)
- Android_theme (2)
- Android_phonegap (2)
- Android_AndroidManifest (1)
- ThinkPHP (0)
- Jquery (1)
- Android_ContentProvider (1)
最新评论
1)View切换的控件—ViewFlipper介绍
ViewFilpper类继承于ViewAnimator类。而ViewAnimator类继承于FrameLayout。
查看ViewAnimator类的源码可以看出此类的作用主要是为其中的View切换提供动画效果。该类有如下几个和动画相关的方法。
setInAnimation:设置View进入屏幕时候使用的动画。该方法有两个重载方法,即可以直接传入Animation对象,也可以传入定义的Animation文件的resourceID。
setOutAnimation:设置View退出屏幕时候使用的动画。使用方法和setInAnimation方法一样。
showNext:调用该方法可以显示FrameLayout里面的下一个View。
showPrevious:调用该方法可以来显示FrameLayout里面的上一个View。
查看ViewFlipper的源码可以看到,ViewFlipper主要用来实现View的自动切换。该类提供了如下几个主要的方法。
setFilpInterval:设置View切换的时间间隔。参数为毫秒。
startFlipping:开始进行View的切换,时间间隔是上述方法设置的间隔数。切换会循环进行。
stopFlipping:停止View切换。
setAutoStart:设置是否自动开始。如果设置为“true”,当ViewFlipper显示的时候View的切换会自动开始。
一般情况下,我们都会使用ViewFilpper类实现View的切换,而不使用它的父类ViewAnimator类。
2)实现滑动—GestureDetector介绍
如果想要实现滑动翻页的效果,就要了解另外一个类:android.view.GestureDetector类。GestureDetector类中可以用来检测各种手势事件。该类有两个回调接口,分别用来通知具体的事件。
GestureDetector.OnDoubleTapListener:用来通知DoubleTap事件,类似于PC上面的鼠标的双击事件。
GestureDetector.OnGestureListener:用来通知普通的手势事件,该接口有六个回调方法,具体的可以查看API。这里想要实现滑动的判断,就需要用到其中的onFling()方法。
实现滑动切换的主要代码都在onFling()方法中,用户按下触摸屏,快速移动后松开,就会触发这个事件。在这段代码示例中,对手指滑动的距离进行了计算,如果滑动距离大于100像素,就做切换动作,否则不做任何切换动作。
可以看到,onFling()方法有四个参数,e1和e2上面代码用到了,比较好理解。参数velocityX和velocityY是做什么用的呢?velocityX和velocityY实际上是X轴和Y轴上的移动速度,单位是像素/秒。结合这两个参数,可以判断滑动的速度,从而做更多的处理。
为了显示出滑动的效果,这里调用了ViewFlipper的setInAnimation()和setOutAnimation()方法设置了View进入和退出的动画。
ViewFilpper类继承于ViewAnimator类。而ViewAnimator类继承于FrameLayout。
查看ViewAnimator类的源码可以看出此类的作用主要是为其中的View切换提供动画效果。该类有如下几个和动画相关的方法。
setInAnimation:设置View进入屏幕时候使用的动画。该方法有两个重载方法,即可以直接传入Animation对象,也可以传入定义的Animation文件的resourceID。
setOutAnimation:设置View退出屏幕时候使用的动画。使用方法和setInAnimation方法一样。
showNext:调用该方法可以显示FrameLayout里面的下一个View。
showPrevious:调用该方法可以来显示FrameLayout里面的上一个View。
查看ViewFlipper的源码可以看到,ViewFlipper主要用来实现View的自动切换。该类提供了如下几个主要的方法。
setFilpInterval:设置View切换的时间间隔。参数为毫秒。
startFlipping:开始进行View的切换,时间间隔是上述方法设置的间隔数。切换会循环进行。
stopFlipping:停止View切换。
setAutoStart:设置是否自动开始。如果设置为“true”,当ViewFlipper显示的时候View的切换会自动开始。
一般情况下,我们都会使用ViewFilpper类实现View的切换,而不使用它的父类ViewAnimator类。
2)实现滑动—GestureDetector介绍
如果想要实现滑动翻页的效果,就要了解另外一个类:android.view.GestureDetector类。GestureDetector类中可以用来检测各种手势事件。该类有两个回调接口,分别用来通知具体的事件。
GestureDetector.OnDoubleTapListener:用来通知DoubleTap事件,类似于PC上面的鼠标的双击事件。
GestureDetector.OnGestureListener:用来通知普通的手势事件,该接口有六个回调方法,具体的可以查看API。这里想要实现滑动的判断,就需要用到其中的onFling()方法。
package com.xzw.ui; import android.app.Activity; import android.os.Bundle; import android.util.Log; import android.view.GestureDetector; import android.view.GestureDetector.OnGestureListener; import android.view.MotionEvent; import android.view.View; import android.view.ViewGroup; import android.view.Window; import android.view.animation.Animation; import android.view.animation.AnimationUtils; import android.widget.ImageView; import android.widget.ViewFlipper; /** * 左右滑动demo * @author xzw * */ public class MainActivity extends Activity implements OnGestureListener { private static final String TAG = "MainActivity"; private ViewFlipper viewFlipper; private GestureDetector detector; //手势检测 Animation leftInAnimation; Animation leftOutAnimation; Animation rightInAnimation; Animation rightOutAnimation; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.activity_main); viewFlipper = (ViewFlipper)findViewById(R.id.viewFlipper); detector = new GestureDetector(this); //往viewFlipper添加View viewFlipper.addView(getImageView(R.drawable.new_feature_1)); viewFlipper.addView(getImageView(R.drawable.new_feature_2)); viewFlipper.addView(getImageView(R.drawable.new_feature_3)); viewFlipper.addView(getImageView(R.drawable.new_feature_4)); viewFlipper.addView(getImageView(R.drawable.new_feature_5)); viewFlipper.addView(getImageView(R.drawable.new_feature_6)); //动画效果 leftInAnimation = AnimationUtils.loadAnimation(this, R.anim.left_in); leftOutAnimation = AnimationUtils.loadAnimation(this, R.anim.left_out); rightInAnimation = AnimationUtils.loadAnimation(this, R.anim.right_in); rightOutAnimation = AnimationUtils.loadAnimation(this, R.anim.right_out); } private ImageView getImageView(int id){ ImageView imageView = new ImageView(this); imageView.setImageResource(id); return imageView; } @Override public boolean onTouchEvent(MotionEvent event) { return this.detector.onTouchEvent(event); //touch事件交给手势处理。 } @Override public boolean onDown(MotionEvent e) { // TODO Auto-generated method stub return false; } @Override public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { Log.i(TAG, "e1="+e1.getX()+" e2="+e2.getX()+" e1-e2="+(e1.getX()-e2.getX())); if(e1.getX()-e2.getX()>120){ viewFlipper.setInAnimation(leftInAnimation); viewFlipper.setOutAnimation(leftOutAnimation); viewFlipper.showNext();//向右滑动 return true; }else if(e1.getX()-e2.getY()<-120){ viewFlipper.setInAnimation(rightInAnimation); viewFlipper.setOutAnimation(rightOutAnimation); viewFlipper.showPrevious();//向左滑动 return true; } return false; } @Override public void onLongPress(MotionEvent e) { // TODO Auto-generated method stub } @Override public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) { // TODO Auto-generated method stub return false; } @Override public void onShowPress(MotionEvent e) { // TODO Auto-generated method stub } @Override public boolean onSingleTapUp(MotionEvent e) { // TODO Auto-generated method stub return false; } }
实现滑动切换的主要代码都在onFling()方法中,用户按下触摸屏,快速移动后松开,就会触发这个事件。在这段代码示例中,对手指滑动的距离进行了计算,如果滑动距离大于100像素,就做切换动作,否则不做任何切换动作。
可以看到,onFling()方法有四个参数,e1和e2上面代码用到了,比较好理解。参数velocityX和velocityY是做什么用的呢?velocityX和velocityY实际上是X轴和Y轴上的移动速度,单位是像素/秒。结合这两个参数,可以判断滑动的速度,从而做更多的处理。
为了显示出滑动的效果,这里调用了ViewFlipper的setInAnimation()和setOutAnimation()方法设置了View进入和退出的动画。
发表评论
-
LayoutInflater
2014-12-22 21:43 510在实际开发中LayoutInflater这个类还是非常有用的, ... -
ContentProvider之读写短消息
2014-12-08 11:08 563http://blog.csdn.net/liuhe ... -
android之启用默认浏览器
2014-11-03 12:36 477一、启动android默认浏览器 Intent inten ... -
eclipse下看android support v4源码
2014-09-18 22:24 598http://cfy10.blog.51cto.com/707 ... -
Android学习 (七)synchronized
2014-09-17 10:16 581http://hi.baidu.com/fenghuang12 ... -
ScheduledExecutorService定时周期执行指定的任务
2014-09-17 09:57 635http://blog.csdn.net/tsyj810883 ... -
android rotate
2014-09-16 15:21 1171rotate:fromDegrees:其实角度。toDegr ... -
Android获取Manifest中<meta-data>元素的值
2014-09-12 15:39 640在AndroidManifest.xml中,<meta- ... -
PopupWindow
2014-09-12 11:09 8431-初始化 PopupWindow mPop = new P ... -
Android的事件分发onInterceptTouchEvent与onTouchEvent、OnClickListener、OnLongClick
2014-09-11 11:05 866onInterceptTouchEvent()是ViewGro ... -
scrollTo、scrollBy、getScrollX、getScrollY这4个方法的含义,Scroller的简单用法
2014-09-11 10:43 1512scrollTo、scrollBy都是 对 ... -
VelocityTracker
2014-09-11 10:14 647android.view.VelocityTracker主要用 ... -
Android之SurfaceHolder
2014-09-09 16:05 567SurfaceHolder,可以把它当成surface的控制器 ... -
android performClick使用
2014-09-09 13:53 1108performClick 是使用代码主动去调用控件的点击事件( ... -
slidingmenu使用说明
2014-09-07 10:17 583左侧、右侧和两边 在BaseActivity中将Slid ... -
Android之SlidingMenu属性详解
2014-09-07 09:52 622SlidingMenu 常用属性介绍: menu.setMod ... -
Android IOS风格侧边栏效果
2014-08-27 13:45 314http://download.csdn.net/detail ... -
android 代码设置、打开wifi热点及热点的连接
2014-08-26 10:30 1003见博客文章 http://blog.csdn.net/luob ... -
Android 之两点触摸技术
2014-08-26 09:58 709package mobile.android.multi.to ... -
Android动画之translate(位移动画)
2014-08-25 15:53 442http://www.cnblogs.com/bavariam ...
相关推荐
历史最牛、绝对原创、代码简洁、功能强大,华丽的使用TabHost与ViewFlipper结合实现滑动翻页效果,支持tab背景图片自动切换.之前看到别人写的实现方法是重写TabHost,但是代码太繁琐。本程序虽然资源分高点儿,但...
本文实例讲述了Android中ViewFlipper的使用及设置动画效果。分享给大家供大家参考,具体如下: 说到左右滑动,其实实现左右滑动的方式很多,有ViewPaer,自定义实现Viewgroup,gallery等都可以达到这种效果。这里做...
利用系统自带的ViewFlipper实现自动轮播的效果,可以监听手势进行滑动
一般实现这个特效会用到一个控件:ViewFlipper <1>View切换的控件—ViewFlipper ...为了显示出滑动的效果,这里调用了ViewFlipper的setInAnimation()和setOutAnimation()方法设置了View进入和退出的动画。
查看ViewAnimator类的源码可以看出此类的作用主要是为其中的View切换提供动画效果。该类有如下几个和动画相关的方法。 setInAnimation:设置View进入屏幕时候使用的动画。该方法有两个重载方法,即可以直接传入...
如何实现手机上手动滑动翻页效果呢?呵呵,在这里我们就给你们介绍一下吧。...为了显示出滑动的效果,这里调用了ViewFlipper的setInAnimation()和setOutAnimation()方法设置了View进入和退出的动画。
一种可以设置滑动动画的控件,只显示一行布局,在布局文件中的ViewFlipper控件中顺序写好每一行的布局 (1).MainActivity.java: ViewFlipper mFlipper = ((ViewFlipper) this.findViewById(R.id.flipper)); mFlipper...
android安卓app界面UI开发教程 1.九宫格 10.锁屏 11.圆泡泡 12.动画 13.滑动切屏 14.在桌面上生成可移动的悬浮框 15.loading界面 2.多级列表 3.弹出窗口 4.微信聊天样式 5.列表 6.滑动Tab 7.相册 8.ViewFlipper 9....
一款仿团购应用图片菜单效果的源码,目前已经实现了以下功能: 1.图片导航菜单展开(ExpandableListView) 2.子菜单滑动切换(ViewFlipper) 3.根据当前页面显示页标 还有两个问题,感兴趣的朋友可以研究下: 1...
如何实现手机上手动滑动翻页效果呢?呵呵,在这里我们就给你们介绍一下吧。 一般实现这个特效会用到一个控件:ViewFlipper <1>View切换的控件—ViewFlipper 这个控件是什么呢?请注意观看博文Android学习笔记之...
18、获取手指在屏幕的左右滑动 29 19、解除屏幕锁 30 20、ViewFlippe实现循环的动画 31 21、播放gif动画 31 22、飞行模式转换解析 36 23、实现按home键的效果 38 24、httpget与post 38 Handler+Runnable模式 40 ...
整个过程还伴随有内容的渐变消失,动画效果很流畅。 采用ViewFlipper来实现更为简单。 看看ViewFlipper类官方注释: Simple {@link ViewAnimator} that will animate between two or more views that have been ...
8.8 SlidingDrawer(滑动抽屉) 8.9 Dialog(对话框) 8.9.1 AlertDialog警告框 8.9.2 ProgressDialog进度框 8.9.3 DatePickerDialog & TimePickerDialog(日期时间选择框) 8.10 Menu(菜单) 8.10.1 options menu ...