我的应用中有一个片段,可以在点击地图中的项目时显示信息。
单击标记时,从底部向上滑动,显示此片段。如果片段已经存在,首先它会向下滑动“旧”信息,然后向上滑动新片段。但是,您可以隐藏此信息片段,例如,当您单击位置按钮中的典型中心时。
问题:
当我点击这个“位置中心”按钮时,简单地说,我隐藏了片段:
@Override
public void hideInfoBanner() {
if (infoFrameLayout != null){
infoFrameLayout.setVisibility(View.GONE);
}
}
所以,当我点击另一个标记(或相同)时:
private void loadInfoFragment(Fragment fragment) {
if (!isFinishing()) {
infoBannerFragmentTansaction = getSupportFragmentManager().beginTransaction();
infoBannerFragmentTansaction.setCustomAnimations(R.anim.slide_up_anim, R.anim.slide_down_out_anim);
infoFrameLayout.setVisibility(View.VISIBLE);
if (infoBannerFragmentTansaction == null) {
infoBannerFragmentTansaction.add(R.id.map_wifispot_info_banner, fragment);
} else {
infoBannerFragmentTansaction.replace(R.id.map_wifispot_info_banner, fragment);
}
infoBannerFragmentTansaction.commitAllowingStateLoss();
}
}
旧的(和隐藏的)片段会暂时显示,向下滑动,然后使用新信息向上滑动。我不希望它暂时出现,只是向上滑动新信息。
我想我正在“打破”隐藏它的片段生命周期。当我再次打电话给它时,首先它结束了它正在做的事情......
那么,我怎样才能隐藏一个片段来结束它的生命周期呢?
答案 0 :(得分:1)
你没有打破任何生命周期。你的片段就像你设置的那样。在更改它会在代码中制作动画,替换和制作动画。如果你想在片段不可见时只在动画中设置,那么为它添加一个条件
if(infoFrameLayout.getVisability()==View.GONE){
infoBannerFragmentTansaction.setCustomAnimations(R.anim.slide_up_anim, R.anim.your_custom_animation_to_hide_it_in_0_milis);
}else{
infoBannerFragmentTansaction.setCustomAnimations(R.anim.slide_up_anim, R.anim.slide_down_out_anim);
}
编辑:
嘿,我已经制作了这样的退出动画:<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:shareInterpolator="false"
android:interpolator="@android:interpolator/accelerate_decelerate">
<alpha
android:toAlpha="0.0"
android:duration="0"
/>
</set>
它就像一个魅力