我有一个活动(A),其中列表视图打开第二个活动(B),显示与点击的行相关的详细信息。 使用以下代码打开活动(B):
Intent ident = new Intent(getApplicationContext(), DetailedActivity.class);
ident.putExtra("id", id);
startActivity(ident);
我想要的是当活动(B)打开时,能够向左或向右滑动以向上一个/下一个ListView行显示细节。 我找不到一种方法来使用ViewFlipper为不同的id重新加载相同的View ...
任何想法?
答案 0 :(得分:5)
我认为ViewFlipper不是您想要使用的。您可以使用GestureDector获取左右滑动动作的回调。然后在你的回调中你可以做这样的事情:
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()。由于您所在的活动是上下文,因此无需为此目的使用此方法。这有点过头了,但我认为方法getApplicationContext()和getBaseContext()会导致问题。
编辑:
如果您的意思与主屏幕的滚动方式类似,那么我认为没有内置的小部件会给您带来这种效果。获得它的最佳方式似乎是在homescreen source code中查看它们是如何做到的,然后复制那些尝试使其适合您自己的布局情况的内容。
如果您不想用刷子“跟随”:
如果您尝试翻转的两件事是单独的活动,那么ViewFlipper将不适用于此。 ViewFlipper用于在同一活动中的两个不同Layout对象之间进行切换。
我认为你可能接近在两个活动之间达到类似的效果,但在决定这样做之前你应该考虑一些事情。
要在两个活动之间实现滑出式动画幻灯片,您可以在xml中将根布局设置为android:visibility="gone"
,然后在调用setContentView(R.id.yourLayout);
之后在onCreate()内部设置设置slideInAnimation并获取对根布局的引用并在其上开始滑动。然后就在你的滑动监听器中调用startActivity()之前(你必须设置一个animationListener来获取一个回调,在动画完成之后,你需要将startActivity()调用移动到你的回调中)可以在根布局参考上设置开始动画。
但是我可能会建议,无论你在上面哪一个,你都应该考虑一个模型,你的细节活动不只是显示1个静态记录,而是你开始一个新的活动来显示上一个或下一个。相反,它能够使用ViewFlipper在详细活动的一个实例中循环遍历它们。如果你使用这种方式,那么你将使用ViewFlipper并使用yes,你可以将它与fling监听器结合使用。你可以自己捣碎它们或查看ViewSwiper that @CommonsGuy made它是为此而建的,随时可以放入我们项目的玩具中。
答案 1 :(得分:2)
我只是在这里找到我需要的所有内容:ViewPager 实现一个好的效果并不需要太多的努力。