我正在使用“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动画。
亲切的问候原型
答案 0 :(得分:1)
我曾经想过这件事。如果我理解正确,您想知道片段何时完成。从FragmentManager中,您可以获得Fragment。当然你知道你感兴趣的片段。
我的建议是覆盖片段方法,onDetach
()或onDestroy
(),发生在onDetach之前。