Вопрос об анимации макета Android - PullRequest
1 голос
/ 26 мая 2011

Я пытаюсь анимировать переход, но он не дает правильных результатов

У меня есть макет, который выглядит следующим образом:

  • LinearView Root
    • ScrollView Groups
      • LinearView
        • Плитка1
        • Плитка2
        • Плитка3
    • ScrollView SubGroups
      • LinearView
        • Плитка4
        • Плитка5
        • Плитка6

Root имеет горизонтальную ориентацию, а для Groups и SubGroups установлены ширина и высота для родительской заливки.

Что я хочуанимировать Groups, переводя влево за пределы экрана, чтобы показывать только ~ 40 dp, и SubGroups, переводя влево и вправо, за Groups, чтобы отображалась только полоса Groups и 90% SubGroups виден.

Возможно ли это?Спасибо за любую помощь!

1 Ответ

5 голосов
/ 26 мая 2011

Я думаю, что вы хотите сделать так:

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

EDIT : Измените место ваших просмотров после окончания анимации , чтобы сделать это, вы должны добавить Listener На вашей анимации,

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);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...