чего я хочу достичь
- в ViewPager currentItem будет установлен значением Seekbar, которое я получаю из onStopTrackingTouch Sekbar, часть Seekbar работает нормально.
- при изменении страницы просмотра Панель поиска будет отображаться с некоторой анимацией (анимация работает нормально), затем через 3/4 секунды панель поиска должна скрыться. Я пробовал onPageScrollStateChanged в ViewPager также на onPageSelected безуспешно (я имею в виду, что работает неправильно), как я могу это сделать? Примечание: я использую ViewPager2 с адаптером RcycerView.
посмотрите код
currentValue = 1;
seekBar.setMax(maxValue - minValue);
seekBar.setProgress(currentValue - minValue);
seekbarValue.setText(getStringInBangla("Item No " + currentValue));
seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean b) {
currentValue = progress + minValue;
seekbarValue.setVisibility(VISIBLE);
seekbarValue.setText(getStringInBangla("Item No " + currentValue));
currentValue = seekBar.getProgress();
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
viewPager2.setCurrentItem(currentValue);
seekbarValue.setVisibility(GONE);
}
});
viewPager2.registerOnPageChangeCallback(new ViewPager2.OnPageChangeCallback() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
super.onPageScrolled(position, positionOffset, positionOffsetPixels);
}
@Override
public void onPageSelected(int position) {
super.onPageSelected(position);
}
@Override
public void onPageScrollStateChanged(int state) {
transition = new Slide(Gravity.BOTTOM);
transition.setDuration(1500);
transition.addTarget(R.id.seekbar_parent);
TransitionManager.beginDelayedTransition(parent, transition);
Rect rect = new Rect();
if (!viewPager_Parent.getGlobalVisibleRect(rect)
&& viewPager_Parent.getHeight() == rect.height()
&& viewPager_Parent.getWidth() == rect.width()) {
viewPager_Parent.setVisibility(VISIBLE);
Log.e("TAG", "onPageScrolled");
}
switch (state) {
case ViewPager2.SCROLL_STATE_IDLE:
Log.e("TAG", "SCROLL_STATE_IDLE");
if (viewPager2.getCurrentItem() == currentValue) {
if (!seekBar.isSelected())
handler.postDelayed(new Runnable() {
@Override
public void run() {
transition = new Slide(Gravity.BOTTOM);
transition.setDuration(1500);
transition.addTarget(R.id.seekbar_parent);
TransitionManager.beginDelayedTransition(parent, transition);
if (viewPager_Parent.isShown()) {
viewPager_Parent.setVisibility(GONE);
}
}
}, 3000);
}
break;
case ViewPager2.SCROLL_STATE_DRAGGING:
Log.e("TAG", "SCROLL_STATE_DRAGGING");
case ViewPager2.SCROLL_STATE_SETTLING:
Log.e("TAG", "SCROLL_STATE_SETTLING");
viewPager_Parent.setVisibility(VISIBLE);
break;
}
super.onPageScrollStateChanged(state);
}
});