如何注意,在popBackStack完成后片段动画?

时间:2015-06-09 07:59:45

标签: android android-fragments android-animation

我正在使用“android.support.v4.Fragment”,而动画我这样做......

FragmentManager fm = getSupportFragmentManager();
fm.popBackStack();
FragmentTransaction ft = fm.beginTransaction();
ft.setCustomAnimations(R.anim.slide_in_left, R.anim.slide_out_right, R.anim.slide_in_left, R.anim.slide_out_right);

ImageView ivStart = (ImageView) findViewById(R.id.ivStart);
ivStart.setColorFilter(Color.rgb(80, 80, 80), android.graphics.PorterDuff.Mode.MULTIPLY);

ll_content_frame.setVisibility(View.INVISIBLE);

String itemName = "";
if (position <= (dataList.size() - 1))
  itemName = (dataList.get(position)).getItemName();

if (itemName.equalsIgnoreCase(PResText.getString("Inputs_Outputs"))) {
  DigIO digIO = new DigIO();
  ft.replace(R.id.content_frame, digIO, DigIO.TAG);
  ft.addToBackStack(DigIO.TAG);
  ft.commit();
  fm.executePendingTransactions();
}
.
.

这样的XML ......

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
    android:duration="500"
    android:fromXDelta="-100%"
    android:toXDelta="0%"
    >
</translate>

现在我正试图通过一个监听器或其他东西注意到,当popBackStack()在onBackPressed()内启动fade_out动画时,正在完成。

我已经尝试过这段代码......通过从这些类中扩展我的片段。

public class MyFragment extends android.support.v4.app.Fragment {

private static final String TAG = "MyFragment";

@Override
public Animation onCreateAnimation(int transit, boolean enter, int nextAnim) {

Animation anim = AnimationUtils.loadAnimation(getActivity(), nextAnim);

anim.setAnimationListener(new Animation.AnimationListener() {

  @Override
  public void onAnimationStart(Animation animation) {
    Log.d(TAG, "Animation started.");
    // additional functionality
  }

  @Override
  public void onAnimationRepeat(Animation animation) {
    Log.d(TAG, "Animation repeating.");
    // additional functionality
  }

  @Override
  public void onAnimationEnd(Animation animation) {
    Log.d(TAG, "Animation ended.");
    // additional functionality
  }
});

return anim;
}
}

但是这个监听器只响应fade_in动画。

亲切的问候原型

1 个答案:

答案 0 :(得分:1)

我曾经想过这件事。如果我理解正确,您想知道片段何时完成。从FragmentManager中,您可以获得Fragment。当然你知道你感兴趣的片段。

我的建议是覆盖片段方法,onDetach()或onDestroy(),发生在onDetach之前。