1

我有一个MainActivity A,用户可以从中选择不同的项目,这些项目显示Activity BGridView. 在这些活动之间,我有一个滑动转换(Activity A向左滑出,Activity B slides in from right

我的问题是,如果动画开始,Activity B屏幕创建不完整(GridView 项目以编程方式添加),所以我看到一个从右侧滑入的空屏幕,看起来像是转储。

所以我的问题是:是否可以在过渡开始之前创建/加载?Activity B

在此处输入图像描述

我附上了一些代码,但一切都很简单。只有网格项由具有不同状态的图像组成......

活动A:启动Intent(照常)

 Intent intent = new Intent(this, SoundShareActivity.class);
 //...
 intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
 startActivity(intent);
 overridePendingTransition(anim.slide_in_from_right_to_left,
            anim.slide_out_to_left); 
 //anim defined in xml

活动 B:onCreate

 protected void onCreate(Bundle savedInstanceState) {
 //...
 mGridView = (GridView) findViewById(R.id.grid_view_sounds);
 mAdapter = new SoundAdapter(getApplicationContext(), THE_DATA);
 mGridView.setAdapter(mAdapter);
 mGridView.setOnItemClickListener( ... );
 mGridView.setLongClickable(true);
 mGridView.setOnItemLongClickListener(...);
4

2 回答 2

3
  1. 将您的活动替换为 FragmentActivity
  2. 实现 GridView 并在片段构造函数/onCreateView 函数中设置适配器
  3. 用 FragmentTransaction setCustomAnimations 函数替换 Fragment。

实现起来非常简单

于 2014-02-03T11:30:02.397 回答
1

使用活动是不可能的,因为你不能将内容分配给 aView直到它被膨胀,这发生setContentView()在 Activity 中,通常在OnCreate(): 所以Activity必须首先启动。但是,由于一次只能Activity激活一个实例,因此当您在第一个Activity.

解决方法:使用Fragments。您可以一次拥有多个 Fragments 实例,因此,您可以向用户显示,例如,Fragment1在加载时Fragment2ViewPager经常与片段结合使用,它默认加载三个页面,这意味着当您在 中看到一个页面时ViewPager,上一页和下一页以及相应的片段实际上正在加载或已经加载。您可以为您的任务使用类似的技术。

于 2014-02-09T16:57:29.300 回答