Android CardFlip动画无效

时间:2014-02-28 22:00:03

标签: java android animation android-fragments

我正在尝试使用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

0 个答案:

没有答案