Я пытаюсь анимировать переход, но это не дает мне правильных результатов
У меня есть макет, который выглядит так:
Root
Groups
SubGroups
Root
установлена на горизонтальную, а обе Groups
и SubGroups
имеют ширину и высоту, заданные для родительской заливки.
Я хочу, чтобы анимация Groups
переводилась влево из экрана, так что пока показывается только ~ 40 dp, а SubGroups
- влево справа за Groups
, так что только лента Groups
и отображается 90% от SubGroups
.
Возможно ли это? Спасибо за любую помощь!
Я думаю, вы хотите сделать вот так:
TranslateAnimation animateGroups = new TranslateAnimation(0,widthScreen - 40 , 0 , 0);
animateGroups.setDuration(1200);
animateGroups.setFillAfter(true);
TranslateAnimation animateSubGroups = new TranslateAnimation(0,widthScreen - 10 , 0 , 0);
animateSubGroups.setDuration(1200);
animateSubGroups.setFillAfter(true);
scrollViewGroups.startAnimation(animateGroups);
scrollViewSubGroups.startAnimation(animateSubGroups);
Примечание. вы можете получить размер экрана с помощью класса DiplayMetrics
и если вы хотите преобразовать пиксели в dp, обратитесь к this
ИЗМЕНИТЬ: Изменить место просмотра после окончания анимации Чтобы сделать это, вы должны добавить слушателя в свою анимацию,
animateGroups.addAnimationListener(AnimationListener);
и переопределить метод следующим образом:
@Override
public void onAnimationEnd(Animation animation){
scrollViewGroups.setPadding(0, 0 , screenWidth-40 , 0 ) ;
//or you can set the Margin like this(i supposed that your scrollView is in a RelativeLayout
RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams)scrollViewGroups.getLayoutParams();
params.setMargin(0, 0 , screenWidth-40 , 0);
scrollViewGroups.setLayoutParams(params);
}