Comment ajouter une animation en cliquant sur "onbackpressed" pour fragmenter
Bouledogue
Il y a un Fragment
, il y a un bouton dedans, en appuyant sur le suivant Fragment
s'ouvre avec une animation, mais lorsque le bouton est enfoncé en arrière, c'est-à-dire onbackpressed
, le précédent Fragment
est retourné, mais sans animation. Comment ajouter une animation en cliquant sur onbackpressed
. Si je comprends bien, vous devez d'une manière ou d'une autre lui ajouter onbackpressed
et lui attribuer une animation. Alors , comment ajouter onbackpressed
à Fragment
?
Fragment
d'où nous passons
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();
});
}
}
Le Fragment
nous allons à
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) {
}
});
}
}
ianhanniballake
Il existe deux versions de setCustomAnimations()
:
- Celui que vous utilisez, qui ne prend que l' animation
enter
etexit
- La version à quatre arguments qui prend également une animation
popEnter
etpopExit
- ce sont les animations qui sont exécutées lorsque le fragment est éclaté (c'est-à-dire lorsque vous appuyez sur le bouton de retour).
ft.setCustomAnimations(R.anim.transition_enter, R.anim.transition_exit,
R.anim.transition_enter, R.anim.transition_exit);