- 浏览: 703411 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
葫芦瓢:
葫芦瓢 写道专注IT 写道请问楼主demo中为什么是Custo ...
Android Scroller简单用法 -
葫芦瓢:
专注IT 写道请问楼主demo中为什么是CustomView中 ...
Android Scroller简单用法 -
u011493452:
注册账号给楼主点赞!
Android Scroller简单用法 -
jiduoduo:
整理的不错!
Android文件存储 -
xiaofeng0817166:
http://deerchao.net/tutorials/r ...
Java正则表达式应用
ViewFlipper继承FrameLayout,完全可以把它当成一种FrameLayout,只是多了一种功能,很方便的实现在不同的层中实现切换,还可以设置一些动画。废话不说了,直接上代码
main.xml,我在ViewFlipper中设置了一个Button,但是必须取消Clickable才能让ViewFlipper捕捉到onTouch事件,原因可参考文章:http://orgcent.com/android-touch-event-mechanism/
切换是用的的4个动画,直接用的是网上的,感谢原作者。 http://blog.csdn.net/yzhyutian/article/details/6236504
1.push_left_in.xml
2.push_left_out.xml
3.push_right_in.xml
4.push_right_out.xml
ViewFlipperActivity.java,需要实现两个接口OnTouchListener, OnGestureListener,首先通过OnTouchListener识别出Touch事件,并将事件交给GestureDetector,然后OnGestureListener就能判断出是哪一种手势了。
参考文章:http://blog.csdn.net/yzhyutian/article/details/6236504
main.xml,我在ViewFlipper中设置了一个Button,但是必须取消Clickable才能让ViewFlipper捕捉到onTouch事件,原因可参考文章:http://orgcent.com/android-touch-event-mechanism/
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <Button android:id="@+id/button" android:text="Click Me" android:layout_width="fill_parent" android:layout_height="wrap_content" /> <!--在ViewFlipper中定义3个控件, TextView, TextView和Button--> <ViewFlipper android:id="@+id/flipper" android:longClickable="true" android:layout_width="fill_parent" android:layout_height="0px" android:layout_weight="1"> <TextView android:text="00000000000" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="@android:color/background_dark" /> <TextView android:text="11111111111" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="@android:color/background_light" /> <Button android:text="Click Me" android:clickable="false" android:layout_width="fill_parent" android:layout_height="fill_parent" /> </ViewFlipper> <TextView android:id="@+id/footer" android:background="#0000FF" android:layout_width="fill_parent" android:layout_height="100dp"/> </LinearLayout>
切换是用的的4个动画,直接用的是网上的,感谢原作者。 http://blog.csdn.net/yzhyutian/article/details/6236504
1.push_left_in.xml
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android"> <translate android:fromXDelta="100%p" android:toXDelta="0" android:duration="500" /> <alpha android:fromAlpha="0.1" android:toAlpha="1.0" android:duration="500" /> </set>
2.push_left_out.xml
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android"> <translate android:fromXDelta="0" android:toXDelta="-100%p" android:duration="500" /> <alpha android:fromAlpha="1.0" android:toAlpha="0.1" android:duration="500" /> </set>
3.push_right_in.xml
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android"> <translate android:fromXDelta="-100%p" android:toXDelta="0" android:duration="500" /> <alpha android:fromAlpha="0.1" android:toAlpha="1.0" android:duration="500" /> </set>
4.push_right_out.xml
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android"> <translate android:fromXDelta="0" android:toXDelta="100%p" android:duration="500" /> <alpha android:fromAlpha="1.0" android:toAlpha="0.1" android:duration="500" /> </set>
ViewFlipperActivity.java,需要实现两个接口OnTouchListener, OnGestureListener,首先通过OnTouchListener识别出Touch事件,并将事件交给GestureDetector,然后OnGestureListener就能判断出是哪一种手势了。
package com.ipjmc.viewflipper; 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.View.OnClickListener; import android.view.View.OnTouchListener; import android.view.ViewGroup.LayoutParams; import android.view.animation.AnimationUtils; import android.widget.Button; import android.widget.TextView; import android.widget.ViewFlipper; public class ViewFlipperActivity extends Activity implements OnTouchListener, OnGestureListener { /** Called when the activity is first created. */ public static final String TAG = "ViewFlipper"; Button mButton; ViewFlipper mFlipper; TextView mFooter; GestureDetector mDetector; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Log.i(TAG, "onCreate"); mFlipper = (ViewFlipper) findViewById(R.id.flipper); mFlipper.setOnTouchListener(this); //注册OnTouch监听器 //本来需要设置LongClickable,否则无法捕捉到touch事件,因为在xml中已经设置了,这里就不需要了。 //mFlipper.setLayoutParams(true); mButton = (Button) findViewById(R.id.button); mButton.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub mFlipper.showNext(); } }); //mFooter只是用来做一些事件捕获的测试用的,无视好了 mFooter = (TextView) findViewById(R.id.footer); mFooter.setOnTouchListener(this); //用OnGestureListener初始化一个Detector,用于识别手势,OnGestureListener的每一个方法代表识别出的每一个手势 mDetector = new GestureDetector(this); } @Override public boolean onDown(MotionEvent e) { // 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; } @Override public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) { // TODO Auto-generated method stub return false; } @Override public void onLongPress(MotionEvent e) { // TODO Auto-generated method stub } /* *识别出了手指在屏幕上的快速滑动事件 */ @Override public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { Log.i(TAG, "Fling Happened!"); if (e1.getX() - e2.getX() > 120) { mFlipper.setInAnimation(AnimationUtils.loadAnimation(this, R.anim.push_left_in)); mFlipper.setOutAnimation(AnimationUtils.loadAnimation(this, R.anim.push_left_out)); mFlipper.showNext(); return true; } else if (e1.getX() - e2.getX() < -120) { mFlipper.setInAnimation(AnimationUtils.loadAnimation(this, R.anim.push_right_in)); mFlipper.setOutAnimation(AnimationUtils.loadAnimation(this, R.anim.push_right_out)); mFlipper.showPrevious(); return true; } return false; } /* * 在OnTouchListener.onTouch(),将事件交给GestureDetector.onTouchEvent()处理,由GestureDetector识别是哪一种手势 * @see android.view.View.OnTouchListener#onTouch(android.view.View, android.view.MotionEvent) */ @Override public boolean onTouch(View v, MotionEvent event) { // TODO Auto-generated method stub if (v.getId() == R.id.flipper) { return mDetector.onTouchEvent(event); //将事件交给GestureDetector.onTouchEvent() } return false; } /** *Called when a touch screen event was not handled by any of the views under it. This is most useful to process touch events that happen outside of your window bounds, where there is no view to receive it. * *官方文档说当一个Touch事件,没有被任何子View处理时,这个方法会被调用。 * *把它放到这里当然没有用了,只是为了防止和OnTouchListener.onTouch(View v, MotionEvent event)混淆 */ @Override public boolean onTouchEvent(MotionEvent event) { // TODO Auto-generated method stub Log.i(TAG, "onTouchEvent()"); //触摸footer时,会打印日志 return super.onTouchEvent(event); } }
参考文章:http://blog.csdn.net/yzhyutian/article/details/6236504
发表评论
-
Android Notification的使用
2012-10-20 19:28 9734Android 4.1 (Jelly Bean ... -
短信拦截
2012-09-25 20:40 2048最近写一个应用(A),需要拦截短信分析。一般是 ... -
Android Scroller简单用法
2012-08-01 16:35 65786Android里Scroller类是为了实现Vi ... -
Android 使用WebView.loadData中文乱码解决办法
2012-07-19 15:09 9557博主在使用WebView的loadData方法时发 ... -
Android HttpClient基本使用方法
2012-07-05 14:15 107839这里只介绍如何使用HttpClient发起GET或者POST请 ... -
Android XML定义颜色
2012-06-09 13:15 0在res/colors.xml中添加如下代码: 定义C ... -
Activity和Task的设计思路和方法
2012-03-29 20:20 1204Activity和 Task是 Android ... -
显示PopupWindow
2012-03-16 10:04 16642PopupWindow可 ... -
存储文件的ContentProvider
2012-03-08 23:37 9353基于SQLite的ContentProvider ... -
Android文件存储
2012-03-08 22:34 19375Internal Storage内部存储空 ... -
Android 使用Notification
2012-03-07 10:26 2198用惯了Android的人在刚拿到iPhone的 ... -
Android用软键盘将整个界面推上去
2012-03-04 17:11 35853在Android UI中 ... -
onInterceptTouchEvent和onTouchEvent调用时序
2012-02-11 23:42 1047onInterceptTouchEvent() ... -
使用ConnectivityManager监听网络状态变化
2011-12-24 11:16 29799mIntenFilter = new IntentFilte ... -
Window Manager
2012-03-22 23:51 1525Android的窗口机制基于WindowManager,可以通 ... -
CommonsWare Android Components
2011-12-17 16:10 1724CommonsWare Android Com ... -
Android中图片缩放
2011-12-17 00:09 1888下载的图片如果过大,可能导致内存溢出。需要做压 ... -
Android 使用Parcelable序列化对象
2011-12-16 23:43 36525Android序列化对象主要有两种方法,实现S ... -
PreferenceActivity
2011-12-12 22:54 887传送门:http://www.cnblogs.com/wser ... -
View.scrollBy()与View.scrollTo()的使用
2011-12-12 22:40 19539scrollTo()和scrollBy()都是V ...
相关推荐
对应博客的例子,ViewFlipper和Gesture的使用(一)
NULL 博文链接:https://zhonglunshun.iteye.com/blog/1972245
在android上实现手势的识别也比较简单,可以实现OnTouchListener和OnGuestureListener接口, 然后在OnTouch函数中注册GestureDetector来判别手势动作, http://wang-peng1.iteye.com/blog/572886 ...
分别用ViewFlipper和ViewPage实现界左右滑动界面切换前者不带个数显示,后者带个数显示!
ViewFlipper和手势实现android软件透明导航 源代码
android 利用ViewFlipper来实现滑动切换
android中的ViewFlipper实现左右切换源代码。UI设计。
使用ViewFlipper控件以及anim动画文件实现屏幕切换效果。
Android ActivtiyGroup和ViewFlipper实现Activity滑屏切换,绝对好用!
Android使用ViewFlipper实现Switch。开关部分通过自定义控件继承ViewFlipper来实现,开关动画通过anim文件来实现。
Android源码-使用ViewFlipper+GestureDetector实现划动翻页,以及捕捉长按,双击,上下滑动,左右滑动等事件。
使用ViewFlipper+GestureDetector实现轮播图(APP引导页面)
ViewFlipper实现滑屏切换View
ViewFlipper+GestureDetector多页面切换
利用viwflipper来将多个activity封装在一个view中,通过实现OnGestureListener接口的onTouchEvent()方法和onFling() 方法,即可通过手持滑动切换activity。
本文实例讲述了Android中使用ViewFlipper进行手势切换的方法,分享给大家供大家参考。具体实现步骤如下: 首先在layout的xml文件中定义一个ViewFlipper: 代码如下:<?xml version=”1.0″ encoding=”utf-8″?&...
ViewFlipper实现图片切换,适用于图片展示
Android使用ViewFlipper实现左右滑动效果面.