- 浏览: 31630 次
- 性别:
- 来自: 广州
文章分类
最新评论
-
jameslin_2011:
以为是源码。。。
微媒-腾讯微博开放平台应用 发布新版本了(2012.05.04更新) -
hbxflihua:
很不错,不过貌似少了些东西。比如你实现 OnClickList ...
Android拍照、录像、录音代码范例 -
androidzjb:
谢谢分享,
Android拍照、录像、录音代码范例 -
liu_jun_y:
自己每次项目完后都想总结下,但总是推。。。。
【转载】开发经验总结,很受用。 -
379548695:
问下楼主。是基于哪个版本开发的。我导入之后sdk选1.4.,1 ...
Tab的多种典型用法总结(带动画)
今天给大家介绍一下如何实现androd主页面的左右拖动效果。实现起来很简单,就是使用ViewFlipper来将您要来回拖动的View装在一起,然
后与GestureDetector手势识别类来联动,确定要显示哪个View,加上一点点动画效果即可。比如当手指向左快速滑动时跳转到上一个
View,手指向右快速滑动时跳转到下一个View,本例中使用图片作为各个View的页面,实现左右快速滑动显示不同的图片。
转自 http://www.ideasandroid.com/archives/414
layout
<linearlayout android:layout_height="fill_parent" android:layout_width="fill_parent" android:orientation="vertical" xmlns:android="http://schemas.android.com/apk/res/android"> <viewflipper android:id="@+id/flipper" android:layout_below="@+id/CockpitLayout" android:layout_height="fill_parent" android:layout_width="fill_parent"> <include android:id="@+id/firstlayout" layout="@layout/first"></include> <include android:id="@+id/secondlayout" layout="@layout/second"></include> <include android:id="@+id/thirdlayout" layout="@layout/third"></include> <include android:id="@+id/fourthlayout" layout="@layout/fourth"></include> </viewflipper> </linearlayout>
ViewFlipper
<linearlayout android:gravity="center_vertical" android:layout_height="fill_parent" android:layout_width="fill_parent" xmlns:android="http://schemas.android.com/apk/res/android"> <imageview android:layout_height="wrap_content" android:layout_width="wrap_content" android:src="@drawable/v1"> </imageview> </linearlayout>
我们的Activity需要实现两个接口OnGestureListener,OnTouchListener。
package com.ideasandroid.demo; import android.app.Activity; import android.os.Bundle; import android.view.GestureDetector; import android.view.MotionEvent; import android.view.View; import android.view.GestureDetector.OnGestureListener; import android.view.View.OnTouchListener; import android.view.animation.AccelerateInterpolator; import android.view.animation.Animation; import android.view.animation.TranslateAnimation; import android.widget.ViewFlipper; public class ViewFlipperDemo extends Activity implements OnGestureListener,OnTouchListener{ private ViewFlipper mFlipper; GestureDetector mGestureDetector; private int mCurrentLayoutState; private static final int FLING_MIN_DISTANCE = 100; private static final int FLING_MIN_VELOCITY = 200; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); mFlipper = (ViewFlipper) findViewById(R.id.flipper); //注册一个用于手势识别的类 mGestureDetector = new GestureDetector(this); //给mFlipper设置一个listener mFlipper.setOnTouchListener(this); mCurrentLayoutState = 0; //允许长按住ViewFlipper,这样才能识别拖动等手势 mFlipper.setLongClickable(true); } /** * 此方法在本例中未用到,可以指定跳转到某个页面 * @param switchTo */ public void switchLayoutStateTo(int switchTo) { while (mCurrentLayoutState != switchTo) { if (mCurrentLayoutState > switchTo) { mCurrentLayoutState--; mFlipper.setInAnimation(inFromLeftAnimation()); mFlipper.setOutAnimation(outToRightAnimation()); mFlipper.showPrevious(); } else { mCurrentLayoutState++; mFlipper.setInAnimation(inFromRightAnimation()); mFlipper.setOutAnimation(outToLeftAnimation()); mFlipper.showNext(); } } ; } /** * 定义从右侧进入的动画效果 * @return */ protected Animation inFromRightAnimation() { Animation inFromRight = new TranslateAnimation( Animation.RELATIVE_TO_PARENT, +1.0f, Animation.RELATIVE_TO_PARENT, 0.0f, Animation.RELATIVE_TO_PARENT, 0.0f, Animation.RELATIVE_TO_PARENT, 0.0f); inFromRight.setDuration(500); inFromRight.setInterpolator(new AccelerateInterpolator()); return inFromRight; } /** * 定义从左侧退出的动画效果 * @return */ protected Animation outToLeftAnimation() { Animation outtoLeft = new TranslateAnimation( Animation.RELATIVE_TO_PARENT, 0.0f, Animation.RELATIVE_TO_PARENT, -1.0f, Animation.RELATIVE_TO_PARENT, 0.0f, Animation.RELATIVE_TO_PARENT, 0.0f); outtoLeft.setDuration(500); outtoLeft.setInterpolator(new AccelerateInterpolator()); return outtoLeft; } /** * 定义从左侧进入的动画效果 * @return */ protected Animation inFromLeftAnimation() { Animation inFromLeft = new TranslateAnimation( Animation.RELATIVE_TO_PARENT, -1.0f, Animation.RELATIVE_TO_PARENT, 0.0f, Animation.RELATIVE_TO_PARENT, 0.0f, Animation.RELATIVE_TO_PARENT, 0.0f); inFromLeft.setDuration(500); inFromLeft.setInterpolator(new AccelerateInterpolator()); return inFromLeft; } /** * 定义从右侧退出时的动画效果 * @return */ protected Animation outToRightAnimation() { Animation outtoRight = new TranslateAnimation( Animation.RELATIVE_TO_PARENT, 0.0f, Animation.RELATIVE_TO_PARENT, +1.0f, Animation.RELATIVE_TO_PARENT, 0.0f, Animation.RELATIVE_TO_PARENT, 0.0f); outtoRight.setDuration(500); outtoRight.setInterpolator(new AccelerateInterpolator()); return outtoRight; } public boolean onDown(MotionEvent e) { // TODO Auto-generated method stub return false; } /* * 用户按下触摸屏、快速移动后松开即触发这个事件 * e1:第1个ACTION_DOWN MotionEvent * e2:最后一个ACTION_MOVE MotionEvent * velocityX:X轴上的移动速度,像素/秒 * velocityY:Y轴上的移动速度,像素/秒 * 触发条件 : * X轴的坐标位移大于FLING_MIN_DISTANCE,且移动速度大于FLING_MIN_VELOCITY个像素/秒 */ public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { if (e1.getX() - e2.getX() > FLING_MIN_DISTANCE && Math.abs(velocityX) > FLING_MIN_VELOCITY) { // 当像左侧滑动的时候 //设置View进入屏幕时候使用的动画 mFlipper.setInAnimation(inFromRightAnimation()); //设置View退出屏幕时候使用的动画 mFlipper.setOutAnimation(outToLeftAnimation()); mFlipper.showNext(); } else if (e2.getX() - e1.getX() > FLING_MIN_DISTANCE && Math.abs(velocityX) > FLING_MIN_VELOCITY) { // 当像右侧滑动的时候 mFlipper.setInAnimation(inFromLeftAnimation()); mFlipper.setOutAnimation(outToRightAnimation()); mFlipper.showPrevious(); } return false; } public void onLongPress(MotionEvent e) { // TODO Auto-generated method stub } public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) { return false; } public void onShowPress(MotionEvent e) { // TODO Auto-generated method stub } public boolean onSingleTapUp(MotionEvent e) { // TODO Auto-generated method stub return false; } public boolean onTouch(View v, MotionEvent event) { // 一定要将触屏事件交给手势识别类去处理(自己处理会很麻烦的) return mGestureDetector.onTouchEvent(event); } }
发表评论
-
微媒-腾讯微博开放平台应用 发布新版本了(2012.05.04更新)
2012-04-29 02:51 1078今天,微媒正式上线了。 介绍: ... -
[转]SQLite的工具类 ---- 通过反射把Cursor封装到VO对象
2011-12-16 16:50 1713在写DAO层时,觉得从Cursor里一个一个的取出字段值再装到 ... -
Tab的多种典型用法总结(带动画)
2011-12-09 23:29 2948里面总结的是tab的一些比较典型的用法,带有多种动画效果,希望 ... -
Tab的多种典型用法总结(带动画)
2011-12-09 23:26 1里面总结的是tab的一些比较典型的用法,带有多种动画效果,希望 ... -
【转载】开发经验总结,很受用。
2011-12-07 23:09 11061、有一个方法,有一段 ... -
Android UI 设计秘笈
2011-11-27 22:02 1152好的UI设计可以帮助我们卖出更多拷贝,赚到更多钱^_^. A ... -
Android拍照、录像、录音代码范例
2011-11-27 22:01 2219RecordActivity.java package ... -
获取优酷、土豆、酷6、6间房等视频
2011-11-27 21:59 1372通过JAVA获取优酷、土豆、酷6、6间房、56视频,现在很多社 ... -
Android开发返回拍摄的图片
2011-11-25 22:54 968第一步 try { Intent intent ... -
鉴客 Android中如何生成带圆角的Bitmap图片
2011-11-25 22:30 1977有时候我们在开发Android应用时,会遇到圆角图片的问题,那 ... -
鉴客 Android 的 MediaPlayer 多媒体播放器
2011-11-25 22:27 1136MediaPlayer 可以播放音频和视频,另外也可以通过 ... -
Android 轻松实现语音识别
2011-11-25 22:23 986苹果的iphone 有语音识别用的是Google 的技术,做为 ... -
半个小时移植Flash游戏到Android平台
2011-11-25 22:20 1662网上有很多现成的Flash ... -
分享Android CellLocation源码,基于Rexsee对象的基站定位功能
2011-11-24 16:05 1922使用Rexsee的基站定位(RexseeCellLocatio ... -
Android短信功能实现源码
2011-11-24 15:57 1889一段完整的Android平台上短信功能的接口源码,利用扩展的A ... -
Android中判断网络功能是否可用
2011-11-24 15:51 1327如何在Android中判断网络功能是否可用,代码如下: ... -
Android中如何生成带圆角的Bitmap图片
2011-11-24 15:46 882有时候我们在开发Android应用时,会遇到圆角图片的问题,那 ... -
[转]近百android程序源码贡献
2011-11-24 00:02 982Android PDF 阅读器 http://sourcefo ... -
Android imageView图片按比例缩放
2011-11-23 16:42 2919android:scaleType可控制图片的缩放方式,示例代 ...
相关推荐
在Android开发中,ViewFlipper是一个...通过结合手势识别和动画,我们可以创建出流畅、互动性强的用户体验。在实际项目中,你可以根据需求扩展这个示例,比如添加无限轮播、自动切换等功能,以满足更复杂的应用场景。
在Android开发中,实现用户友好的交互体验是至关重要的,其中划动翻页是一种常见的功能,常见于电子书、幻灯片展示等...通过对这些代码的学习和理解,开发者可以进一步提升自己在Android手势识别和视图切换方面的技能。
总结来说,Android手势识别结合`ViewFlipper`可以实现动态的触摸交互,使用户能够通过简单的手势在多个视图间切换。这种技术广泛应用于新闻阅读应用、幻灯片展示等场景,极大地提高了应用的可操作性和用户满意度。...
`GestureDetector`是一个监听触摸事件的工具类,它可以识别各种手势,如滑动、点击等。首先,你需要创建一个`GestureDetector`的实例,并实现`OnGestureListener`接口。在`onTouchEvent()`方法中,传递触摸事件给`...
至此,我们就完成了使用ViewFlipper和手势识别在Android中切换视图的基本实现。通过这种方式,用户可以通过简单的手势操作来浏览多个视图,提升了应用的交互性和用户体验。当然,实际项目中可能需要对滑动边界、手势...
本教程将详细介绍如何利用`ViewFlipper`组件结合手势识别来创建一个平滑的手势滑动图片浏览功能。 `ViewFlipper`是Android SDK提供的一种布局容器,它可以轻松地在多个子视图之间进行切换,通常用于实现动画效果,...
在Android中,手势识别主要依赖于`MotionEvent`类,它包含了用户触摸屏幕时的各种动作信息,如ACTION_DOWN(按下)、ACTION_UP(抬起)、ACTION_MOVE(移动)等。开发者可以通过重写`onTouchEvent()`方法来捕获这些...
在Android开发中,实现...在实际项目中,可能还需要考虑手势识别的灵敏度、滑动阈值等因素,以提供更优质的用户体验。同时,可以结合使用 `Scroller` 或 `Animator` 类来实现更复杂的动画效果,提升应用的视觉吸引力。
在“ViewFlipper和Gesture的使用(一)”的例子中,我们将探讨如何结合`ViewFlipper` 和手势识别来实现更丰富的用户交互。 `ViewFlipper` 内部可以包含多个子视图,比如`ImageView`、`TextView` 或者自定义的布局。...
总的来说,“图片手势切换”功能涉及到Android手势识别、视图切换以及动画应用等多方面的知识。通过结合`GestureDetector`、`ViewFlipper`以及自定义动画,我们可以创建出一款既美观又易用的图片浏览应用。在实际...
在实际应用中,卡片动画可能需要与触摸事件和手势检测相结合。例如,通过监听`MotionEvent`,开发者可以判断用户的滑动动作,触发卡片翻转。`GestureDetector`和`ScaleGestureDetector`等工具可以帮助识别和处理这些...
在Android UI开发中,实现界面元素的动态交互是提升用户体验的关键之一。本篇将深入探讨如何利用ViewFlipper组件和GestureDetector...通过不断优化手势识别和动画效果,开发者可以进一步提升应用的交互性和用户满意度。
开发者可以通过继承这个类并重写其中的方法来实现特定的手势识别功能。下面是一个简单的示例: ```java class MyGestureDetector extends SimpleOnGestureListener { private static final int SWIPE_MIN_DISTANCE...
在Android开发中,ViewFlipper和GestureDetector是两个非常重要的组件,它们可以帮助开发者实现丰富的用户交互...在实际项目中,你可以根据需求进行扩展,比如增加手势识别的种类,或者结合ViewPager实现更复杂的效果。
ViewFlipper是Android提供的一个可以切换显示多个视图的容器,而GestrueDetector则用于处理触摸事件,识别用户的特定手势。 首先,我们来看`main.xml`布局文件。在这个布局中,我们创建了一个LinearLayout作为根...
这个实例不仅展示了ViewFlipper的基本用法,还涉及到手势识别和视图动画的综合运用,是Android开发中一个典型的交互设计案例。通过熟练掌握这些技术,开发者可以构建更加动态和用户体验丰富的应用程序。
总结来说,ViewFlipper是Android中实现多视图切换的利器,配合手势识别,可以轻松地创建出具有滑动效果的图片轮播或其他动画效果。通过灵活运用不同的Animation,我们可以实现更加丰富多彩的用户界面。记得在实际...
在Android开发中,动画是提升用户体验的...通过学习和分析这个源码项目,开发者不仅可以掌握翻转动画的实现原理,还能提升对Android动画系统和触摸事件处理的理解,从而在自己的应用中创造出更加生动、互动的用户体验。
另外,使用`ViewFlipper`或`ViewAnimator`也可以帮助实现平滑的屏幕切换动画。 5. **性能优化**: 提到的`.proguard.cfg`文件是ProGuard配置文件,用于混淆、优化和压缩Java字节码,提升应用运行效率并减小APK体积...
`ViewFlipper`是Android SDK提供的一种布局容器,它允许我们在多个子视图之间进行动画切换。在我们的场景中,我们可以将它用作一个图片轮播器,通过手势左右滑动来切换不同的图片。要实现这个功能,你需要在布局XML...