我正在尝试使用Android的一些动画。基本上我有这个Activity来显示来自API的数据。现在,当用户希望刷新该数据时,可以说前面卡包含哪些数据,翻转到Back卡,这是一个加载动画。加载新数据的过程开始,当它完成翻转可以说卡片的方法时,可以显示数据。
凭着我的意图,我已经解释了99%以上完成的所有内容。当我在控制卡的UI线程中返回来自API的数据时,我准备更新属于前卡的那些接口对象。
但是设置TextView的文本不再有效,我会解释一下。当前卡被切换出来时,后面卡片会出现在前台,但是当前面的卡片返回新数据时,它会返回默认的XML值。我可以整天在这张前卡中设置TextViews,但它会返回空白。
代码在下面,请记住我喜欢逆向工程这样的事情。所以有些代码我不明白,它来自谷歌Android开发指南。
这里我在Activity的onCreate方法中设置了某种片段管理器。 mShowingBack是一个布尔值,如果后面的卡是前景中的卡。
if (savedInstanceState == null) {
// If there is no saved instance state, add a fragment representing the
// front of the card to this activity. If there is saved instance state,
// this fragment will have already been added to the activity.
getFragmentManager()
.beginTransaction()
.add(R.id.container, new CardFrontFragment())
.commit();
} else {
mShowingBack = (getFragmentManager().getBackStackEntryCount() > 0);
}
// Monitor back stack changes to ensure the action bar shows the appropriate
// button (either "photo" or "info").
getFragmentManager().addOnBackStackChangedListener(this);
即使我没有使用新数据更新文本视图,前端卡仍然是空的。以下是翻转两张牌的方法:
public void onClickFlipCard(View view) {
if (mShowingBack) {
getFragmentManager().popBackStack();
return;
}
// Flip to the back.
mShowingBack = true;
// Create and commit a new fragment transaction that adds the fragment for the back of
// the card, uses custom animations, and is part of the fragment manager's back stack.
getFragmentManager()
.beginTransaction()
// Replace the default fragment animations with animator resources representing
// rotations when switching to the back of the card, as well as animator
// resources representing rotations when flipping back to the front (e.g. when
// the system Back button is pressed).
.setCustomAnimations(
R.animator.card_flip_right_in, R.animator.card_flip_right_out,
R.animator.card_flip_left_in, R.animator.card_flip_left_out)
// Replace any fragments currently in the container view with a fragment
// representing the next page (indicated by the just-incremented currentPage
// variable).
.replace(R.id.container, new CardBackFragment())
// Add this transaction to the back stack, allowing users to press Back
// to get to the front of the card.
.addToBackStack(null)
// Commit the transaction.
.commit();
}
调用该方法时,即使未包含该方法,检索新数据的方法调用也会启动。我不确定是否要创建一个新的卡片布局实例,所以当我尝试修改它时,我实际上并没有与它接触过什么?
当我获取数据时,我所做的就是使用在数据加载之前使用的textview对象来设置新数据:
textview_example.setText("Example, but nothing appears...")
更进一步,当我调用textviews getText方法时,它返回文本但没有显示...任何帮助都会很棒。如果重要的是这两个片段类代表两张牌,(显示数据的前面和显示加载动画的后面)。
前卡片段:
public class CardFrontFragment extends Fragment {
public CardFrontFragment() {
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment_card_front, container, false);
}
}
Back Card Fragment
public class CardBackFragment extends Fragment {
public CardBackFragment() {
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment_card_back, container, false);
}
}
以下是我关注的Android指南的链接... 动画工作,但后来我说我无法编辑接口对象的任何属性。谢谢!
链接:http://developer.android.com/training/animation/cardflip.html