我有一个带有 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/