Articles of viewflipper

如果滚动条太短,滚动查看不会滑动

我对Android应用程序开发相当陌生,我一直在玩滑动手势,使用Android的SimpleOnGestureListener和ViewFlipper。 有3个子ViewFlipper,每个是一个ScrollView。 当Activity加载时,它们全部被dynamic地填充,并且在之后它们不会改变。 ScrollView是SimpleOnGestureListeners附加的地方。 这是我正在使用的布局: + ViewFlipper ++ ScrollView(x3,每个页面一个,每个都有以下:) +++ LinearLayout(垂直) ++++的TextView ++++ TableLayout(dynamic填充w / TableRows) ++++查看 我扩展了onFling方法,使用您可以在网上任何地方find的常见教程代码,并且它工作的很好 – 除非其中一个ScrollViews没有足够的内容滚动。 我已经缩小了问题的范围,通过覆盖并调用每个SimpleOnGestureListener的方法来添加一个print-to-log来触发检测。 当我在滚动的页面上滑动时,我会在onScroll的“onScroll”中得到一些“onClick”中的东西。在页面太短而无法滚动的页面中,我在onLongPress的onShowPress“”中获得“onClick” “,那只有当我触摸太短滚动视图的孩子的内容 – 如果我触摸到其他地方,我根本没有得到任何事件。 想法是什么错误,或者如何检测滑动手势,无论ScrollView有多大? 编辑:我已经确定,当我在Android 2.2模拟器上运行这个,而不是我已经使用的Android 2.1u1 DroidX模拟器,它消失了。 这在多个环境中是可重现的。 我对此有更多的了解。 看起来好像onInterceptTouchEvent不是每个运动事件调用当一个滚动视图包含在一个鳍(或WorkspaceView)。 特别是,我修改另一个视图类来解决这个问题(它不是独特的鳍状肢)时发现的行为如下 – 请注意,这只是Android 2.1: 如果滚动视图足够长,滚动视图将捕获ACTION_DOWN运动事件,并且每个后续的ACTION_MOVE事件都会经过鳍状肢的onInterceptTouchEvent,在那里被截取并正确处理。 在android 2.2中,无论滚动长度如何,都会发生这种情况。 回到2.1:如果scrollview的长度不够滚动,ACTION_DOWN运动事件不会被scrollview捕获,而是返回到鳍状肢的onTouchEvent。 所有相同手势的后续ACTION_MOVE事件都会跳过 onInterceptTouchEvent函数并直接进入onTouchEvent函数! 我解决这个问题的方法是将我在onTouchEvent中的function用于ACTION_MOVE事件,并将其重构为自己的方法。 通过这种方式,如果检测到事件先前没有处理,我可以让onTouchEvent调用onInterceptTouchEvent,然后调用该function。 case MotionEvent.ACTION_MOVE: if (touchState == TOUCH_STATE_SCROLLING) { handleScrollMove(ev); } else […]

使用ViewFlipperdynamic调整布局的大小

我有一个布局大小问题… 我有一个由ViewFlipper,一个LinearLayout(包含一个MapView)和一个垂直行中的第二个LinearLayout组成的布局。 <LinearLayout android:width="match_parent" android:height="match_parent" > <ViewFlipper android:width="match_parent" android:height="wrap_content" > // Top elements </ViewFlipper> <LinearLayout android:width="match_parent" android:height="match_parent" > // MapView </LinearLayout> <LinearLayout android:width="match_parent" android:height="wrap_content" > // Bottom elements </LinearLayout> </LinearLayout> 我看到的问题是,当我改变ViewFlipper用showNext()或showPrevious()显示一个较短的视图,中间的LinearLayout不会展开来填充空间。 另外,当我切换到较短视图时,我会看到前一个ViewFlipper视图留下的黑色/空白空间。 是否有一种很stream畅的方式来dynamic调整这些元素的大小,以便MapView布局将会扩大以填充所有未被ViewFlipper和底部LinearLayout占用的空间?

包含10个线性布局的viewflipper的最佳做法?

我正在着手一个由viewflipper组成的GUI活动,我想包含10个linearlayout布局。 将所有的布局放在同一个XML资源/布局文件中是可取的吗? 如果没有,是否有一个更有组织的方法来编码一个视图flipper与许多布局? 将同一个文件中的所有内容都带来显着的性能成本?

使用ViewFlipper或ViewPager制作旋转木马

由于GalleryView被弃用,我们应该GalleryView到一些替代的小部件,在我的情况下, ViewFlipper是最好的,但我已经面临了几个问题,你可以在下面的截图中看到我devise了一个带有GalleryView的旋转木马GalleryView : 随着ViewFlipper一切正常,但我不能实现两件事情: 1- ViewFlipper总是显示一个项目; 但是我需要一次显示三个项目(甚至更多)。 2- ViewFlipper是ViewFlipper小部件,这不是我想要的! 正如FlávioFaria在下面的文章中提到的ViewPager ,这也是一个很好的例子,但是我不能把我的扩展animation传递给它! 我用ViewPager做了所有事情,现在它工作的很好,但是我错过了一个function,那就是无限滚动! 添加了我的PagerAdapter类 public class CarouselAdapter extends PagerAdapter { private Context mContext; private ImageLoader imageLoader; private String[] bannerUri; public CarouselAdapter (Context c, String[] bannerArray) { this.mContext = c; this.bannerUri = bannerArray; // Setup image loader this.imageLoader = ImageLoader.getInstance(); ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(c) .threadPoolSize(2) .memoryCache(new […]

ViewFlipper与片段

我有一个活动与ViewFlipper翻转之间的一堆视图(网页)与我的数据。 我正在考虑使用碎片API来切换我的意见。 这样做有什么好处? 我可以看到使用片段的性能增益,因为ViewFlipper基本上切换可见性标志和片段实际上replace视图层次,因为您添加/删除它们? 有人能给我们更多的见解吗? 谢谢!

为什么键盘滑动崩溃我的应用程序?

如果我身体滑出我的Moto Droid A855键盘,它会崩溃我的testing应用程序粘贴下面的堆栈跟踪。 我不明白为什么? 另外,如果我用键盘启动我的应用程序,我的应用程序在启动时立即崩溃。 该应用程序包含一个活动,其中包含一个viewflipper作为主视图布局。 viewflipper包含两个线性布局… 堆栈跟踪: 06-10 21:10:17.652 E/AndroidRuntime( 3785): Uncaught handler: thread main exiting due to uncaught exception 06-10 21:10:17.668 E/AndroidRuntime( 3785): java.lang.IllegalArgumentException: Receiver not registered: android.widget.ViewFlipper$1@447af0b8 06-10 21:10:17.668 E/AndroidRuntime( 3785): at android.app.ActivityThread$PackageInfo.forgetReceiverDispatcher(ActivityThread.java:667) 06-10 21:10:17.668 E/AndroidRuntime( 3785): at android.app.ApplicationContext.unregisterReceiver(ApplicationContext.java:747) 06-10 21:10:17.668 E/AndroidRuntime( 3785): at android.content.ContextWrapper.unregisterReceiver(ContextWrapper.java:321) 06-10 21:10:17.668 E/AndroidRuntime( 3785): at android.widget.ViewFlipper.onDetachedFromWindow(ViewFlipper.java:104) 06-10 […]

ViewFlipper:收件人未注册

在我的应用程序有时我收到这个错误: java.lang.IllegalArgumentException: Receiver not registered: android.widget.ViewFlipper$1@4806a4a8 at android.app.ActivityThread$PackageInfo.forgetReceiverDispatcher(ActivityThread.java:667) at android.app.ApplicationContext.unregisterReceiver(ApplicationContext.java:840) at android.content.ContextWrapper.unregisterReceiver(ContextWrapper.java:321) at android.widget.ViewFlipper.onDetachedFromWindow(ViewFlipper.java:104) at android.view.View.dispatchDetachedFromWindow(View.java:5891) at android.view.ViewGroup.dispatchDetachedFromWindow(ViewGroup.java:1076) at android.view.ViewGroup.dispatchDetachedFromWindow(ViewGroup.java:1074) at android.view.ViewGroup.dispatchDetachedFromWindow(ViewGroup.java:1074) at android.view.ViewGroup.dispatchDetachedFromWindow(ViewGroup.java:1074) at android.view.ViewRoot.dispatchDetachedFromWindow(ViewRoot.java:1570) at android.view.ViewRoot.doDie(ViewRoot.java:2565) at android.view.ViewRoot.die(ViewRoot.java:2535) at android.view.WindowManagerImpl.removeViewImmediate(WindowManagerImpl.java:218) at android.view.Window$LocalWindowManager.removeViewImmediate(Window.java:436) at android.app.ActivityThread.handleDestroyActivity(ActivityThread.java:3498) at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:3599) at android.app.ActivityThread.access$2300(ActivityThread.java:119) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1867) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:123) at android.app.ActivityThread.main(ActivityThread.java:4363) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:521) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:862) […]

在第一次滑动时,Viewflipperanimation不起作用

在我的主要活动,我有一个viewflipper三个孩子的意见。 应用程序首次启动后,当我做第一个从左到右滑动,视图改变,但它没有幻灯片animation。 在第一次滑动之后,当向任一方向滑动时,animation都按预期工作。 我正在学习这个教程。 我使用的代码是: public boolean onTouchEvent(MotionEvent touchevent) { switch (touchevent.getAction()) { // when user first touches the screen case MotionEvent.ACTION_DOWN: { lastX = touchevent.getX(); break; } case MotionEvent.ACTION_UP: { float currentX = touchevent.getX(); // left to right swipe if (lastX < currentX) { if (mViewFlipper.getDisplayedChild() == 0) break; mViewFlipper.setInAnimation(this, R.anim.in_from_left); mViewFlipper.setOutAnimation(this, R.anim.out_to_right); mViewFlipper.showPrevious(); […]

在ListView上检测手势时遇到问题

我有一个活动,其中包含一个ViewFlipper。 ViewFlipper包含2个布局,两者基本上都是ListView。 所以这里的想法是,我有两个列表,并从一个导航到另一个我会使用水平滑动。 我有这个工作。 但是,当滑动开始执行时,您的手指所在的项目是什么,该项目也将被长时间点击。 这里是我有的相关代码: public class MyActivity extends Activity implements OnItemClickListener, OnClickListener { private static final int SWIPE_MIN_DISTANCE = 120; private static final int SWIPE_MAX_OFF_PATH = 250; private static final int SWIPE_THRESHOLD_VELOCITY = 200; private GestureDetector mGestureDetector; View.OnTouchListener mGestureListener; class MyGestureDetector extends SimpleOnGestureListener { @Override public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, […]

使用MotionEvent.ACTION_MOVE制作像主屏幕的ViewFlipper

好吧,我有一个ViewFlipper与三个嵌套在其中的LinearLayouts 。 它默认显示第一个。 此代码: // Assumptions in my Activity class: // oldTouchValue is a float // vf is my view flipper @Override public boolean onTouchEvent(MotionEvent touchEvent) { switch (touchEvent.getAction()) { case MotionEvent.ACTION_DOWN: { oldTouchValue = touchEvent.getX(); break; } case MotionEvent.ACTION_UP: { float currentX = touchEvent.getX(); if (oldTouchValue < currentX) { vf.setInAnimation(AnimationHelper.inFromLeftAnimation()); vf.setOutAnimation(AnimationHelper.outToRightAnimation()); vf.showNext(); } if […]