安卓 : swipe between activities using a single resource

标签 android viewflipper

我有一个带有 ListView 的 Activity (A),它会打开第二个 Activity (B),显示与单击的行相关的详细信息。 Activity (B) 使用以下代码打开:

Intent ident = new Intent(getApplicationContext(), DetailedActivity.class);
ident.putExtra("id", id);
startActivity(ident);

我想要的是当 Activity (B) 打开时,能够向左或向右滑动以显示上一个/下一个 ListView 行的详细信息。 我找不到使用 ViewFlipper 为不同 ID 重新加载相同 View 的方法...

有什么想法吗?

最佳答案

我认为您不会想要使用 ViewFlipper。您可以使用 GestureDector获取左右滑动 Action 的回调。然后在你的回调中你可以做这样的事情:

OnRightSwipe(){
    Intent ident = new Intent(YourActivity.this, DetailedActivity.class);
    ident.putExtra("id", this.getIntent().getExtra("id") + 1);
    startActivity(ident);
}



OnLeftSwipe(){
    Intent ident = new Intent(YourActivity.this, DetailedActivity.class);
    ident.putExtra("id", this.getIntent().getExtra("id") - 1);
    startActivity(ident);
}

注意事项:

OnRightSwipe 和 OnLeftSwipe 不是实际的方法名称,您必须查找回调是什么我没有方便的示例。

这仅在您传递的 ID 是可以递增和递减的某种方式的数字时才有效。如果不是这种情况,您将不得不发布更多代码以便我提供帮助。此外,如果您的 ID 存储为额外的字符串,那么您必须先解析为 int,然后才能递增/递减。

最后请注意使用 YourActivity.this 而不是 getApplicationContext()。由于您所在的 Activity 是上下文,因此无需为此目的使用此方法。这有点超出我的理解范围,但我相信 getApplicationContext() 和 getBaseContext() 方法会导致问题。

编辑:

如果您的意思类似于主屏幕的滚动方式,那么我认为没有内置小部件可以为您提供这种效果。获得它的最好方法似乎是在 homescreen source code 中查看他们是如何做到的并复制所做的,然后尝试将其融入您自己的布局情况。

如果您不想用滑动手指“跟随”它:

如果您尝试在两者之间切换的两个事物是不同的 Activity ,那么 ViewFlipper 将无法正常工作。 ViewFlipper 用于在同一 Activity 中的两个不同 Layout 对象之间翻转。

我认为您可能会在两个 Activity 之间接近实现类似的效果,但在决定以这种方式进行之前,您应该考虑一些事项。

  • 许多版本的操作系统已经有了进出动画的 Activity 。用户可以选择将它们默认关闭,但我会在大多数当前设备出售时打开它们。这意味着您可能最终会看到滑出动画,然后是系统动画,然后是系统动画,然后是滑入动画。我不确定是否会发生这种情况,但我认为它可能会发生,我想如果是这样的话有一些方法可以解决它。
  • Activity B 将不得不以某种方式(可能使用另一个 putExtra)告诉 Activity B 的新实例它需要从哪个方向滑入。

要在两个 Activity 之间实现滑入滑出类型的动画,你可以做的只是在你的 xml 中将你的根布局设置为 android:visibility="gone" 然后在 onCreate() 之后您已调用 setContentView(R.id.yourLayout); 设置您的 slideInAnimation 并获取对您的根布局的引用并在其上开始幻灯片。然后就在您在滑动监听器中调用 startActivity() 之前(您必须设置一个 animationListener 以在动画完成后在该回调中获取回调,您需要将 startActivity() 调用移动到)你可以在您的根布局引用上设置启动动画。

但是我可能会建议,无论您在寻找上述哪一项,您都应该考虑一个模型,在该模型中,您的详细 Activity 不只是显示 1 个静态记录,而是开始一个新 Activity 来显示上一个或下一个。相反,它能够使用 ViewFlipper 在详细信息 Activity 的一个实例中循环遍历它们。如果您以这种方式使用,那么您将使用 ViewFlipper 并使用是的,您可以将它与 fling 监听器结合使用。您可以自己将它们混搭或查看 ViewSwiper that @CommonsGuy made它就是为此而构建的,并准备好加入我们的项目。

关于安卓 : swipe between activities using a single resource,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8334181/

相关文章:

java - 如何测试我的Android应用程序是否正在接收数据?

Android 捕获所有运动事件并将它们分派(dispatch)给 child

Android: 使用ViewFlipper 时,是否可以在out 动画结束后才开始in 动画?

android - 如何在 android 中像 3d 动画一样翻转图像?

java - 如何将选项卡布局与底部导航和 View 寻呼机绑定(bind)?

java - 访问空联系人照片时出现 KitKat ANR

Android studio 2.1.1 无法识别 stdio.h 但运行良好

android - Android 应用程序的 "Feature Graphic"是什么?

java - ScrollView 没有滚动到 ViewFlipper 的顶部

android - 如何确定viewflipper的当前 View ?