Это заняло у меня два с половиной дня чтобы сделать его безупречным в Гроферсе. Если вы дадите ему более пристальный взгляд, все, что вы видите, переходя от одного фрагмента к другому, фактически не перемещается из одного фрагмента в другой.
Внутренняя активность ViewPager и фрагменты viewPager содержат статические изображения. И все изображения, которые вы видите, движутся внутри самой деятельности, а не внутри фрагментов.
Когда нужно преобразовывать изображения?
При получении обратных вызовов от ViewPager
public void transformPage(View view, float f) {
...
}
Вы можете сделать преобразование изображений в деятельности, в зависимости от которых фрагмент входит и который один покидает вид.
Как вы узнаете, какой фрагмент входит и какой из них уходит?
При создании фрагментов, которые будут добавлены к ViewPager вы можете прикрепить метку к каждому фрагменту
rootView.setTag(tag)
Tag может быть целое число, представляющее положение фрагмента внутри ViewPager.
public void transformPage(View view, float position) {
int tag = Integer.parseInt(String.valueOf(view.getTag()));
if (position < -1) { // [-Infinity,-1)
// This page is way off-screen to the left.
} else if (position < 1) { // [-1,1]
// Decide which fragment is sliding left and which one is sliding right.
if (tag == 0)
// Transformation between first and second fragment
else if (tag == 1)
// Transformation between first, second and third fragment
else if (tag == 2)
// Transformation between third and fourth fragment
} else { // (1,+Infinity]
// This page is way off-screen to the right.
}
}
Что самое нужно позаботиться?
- Вы должны заботиться о пропорции различных типов экранов , так что он может масштабироваться в соответствии с различными размерами экрана.
- Позаботьтесь о преобразовании всех изображений, даже если изображения отключены от экрана (в противном случае вы увидите некоторые ошибки, как некоторые изображения будут видны на другом экране при прокрутке разных фрагментов).
Что такое GROFERS? – Blackbelt
Это приложение для Android https://play.google.com/store/apps/details?id=com.grofers.customerapp –