android - 如何在单击“onbackpressed”时将动画添加到片段
问题描述
有一个Fragment
,里面有一个按钮,按下下一个Fragment
打开动画,但是当按钮被按下,即,返回onbackpressed
上一个Fragment
,但没有动画。如何在点击时添加动画onbackpressed
。据我了解,您需要以某种方式为其添加onbackpressed
和分配动画。那么怎么添加onbackpressed
呢Fragment
?
Fragment
我们从中经过
public class FragmentAttraction extends Fragment {
FragmentGyro fragmentGyro;
BlankFragment blankFragment;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment_attraction, container, false);
}
@Override
public void onViewCreated(@NonNull final View view, @Nullable Bundle savedInstanceState) {
fragmentGyro = new FragmentGyro();
blankFragment= new BlankFragment();
CardView gyro = requireView().findViewById(R.id.Gyro_);
gyro.setOnClickListener(v -> {
FragmentTransaction ft = getActivity().getSupportFragmentManager().beginTransaction();
ft.setCustomAnimations(R.anim.transition_enter, R.anim.transition_exit);
ft.replace(R.id.fragment, blankFragment, "detailFragment");
ft.addToBackStack(null);
ft.commit();
});
}
}
我们Fragment
去
public class FragmentGyro extends Fragment {
private final String[] imageUrls = new String[]{
"https://cdn.pixabay.com/photo/2016/11/11/23/34/cat-1817970_960_720.jpg",
"https://cdn.pixabay.com/photo/2017/12/21/12/26/glowworm-3031704_960_720.jpg",
"https://cdn.pixabay.com/photo/2017/12/24/09/09/road-3036620_960_720.jpg",
"https://cdn.pixabay.com/photo/2017/11/07/00/07/fantasy-2925250_960_720.jpg",
"https://cdn.pixabay.com/photo/2017/10/10/15/28/butterfly-2837589_960_720.jpg"
};
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment_gyro, container, false);
}
@Override
public void onViewCreated(@NonNull final View view, @Nullable Bundle savedInstanceState) {
ViewPager viewPager = requireView().findViewById(R.id.view);
ViewPagerAdapter adapter = new ViewPagerAdapter(requireActivity(), imageUrls);
viewPager.setAdapter(adapter);
TextView text = requireView().findViewById(R.id.text_o);
viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@SuppressLint("DefaultLocale")
@Override
public void onPageSelected(int position)
{
text.setText(String.format("%d/%d", position, 4 ));
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
}
}
解决方案
有两个版本setCustomAnimations()
:
- 您正在使用的那个,只需要
enter
和exit
动画 - 四个参数版本也采用 a和
popEnter
动画popExit
- 这些是在片段弹出时运行的动画(即,当您点击后退按钮时)。
ft.setCustomAnimations(R.anim.transition_enter, R.anim.transition_exit,
R.anim.transition_enter, R.anim.transition_exit);
推荐阅读
- r - “文件错误(文件,“r”):无法打开连接”
- javascript - 从实时数据库中检索 currentUser 数据
- spring - 将 spring boot 从 2.1.9 升级到 2.2.0 ,现在启动时出现异常
- svg - 如何根据每个弧度百分比在svg圆中绘制几条弧?
- javascript - 使用 Angular firestore 在 firebase 中返回子集合
- spring - 从数据库中查找日期从 - 到的所有记录
- visual-studio-2019 - Roslynator - 如何禁用 .Net 4.7.2 的 C# 8.0 提示
- python - 查询 pandas 的 copy() 方法
- apache - Htaccess 和波浪号 (~) 重定向
- angular - Angular:用于仅用于视图转换值的管道,但我想根据参数值覆盖该值