ActionBar e um dos padroes de interface mais usados em Android. Ela resolve varios problemas de uma vez: identidade (icone do app), localidade (em que local do aplicativo o usuario esta) e navegabilidade (oferece opcoes de navegacao). Nao e um padrao criado pelo Google, e sim pela comunidade, sendo dificil atribuir um criador. O mais provavel e que ela tenha evoluido de app em app. Por isso, ate a versao 3.0 do Android, todo e qualquer app que queria utilizar a ActionBar tinha que implementa-la manualmente, construindo seu proprio layout com as views, e lidando com problemas de tamanho, orientacao, etc.Leia mais... Ola. Na Parte 1 deste tutorial foi mostrado como Animation e importante para um aplicativo profissional e como e possivel criar animacoes pelo xml ou pelo codigo java e mandar executa-las. Com isso e possivel fazer todo tipo de animacao, mais ainda nao e possivel, pelo menos nao e facil, integrar varias animacoes, mudancas de layout, reposicionamento de views, etc.O que veremos agora e: primeiramente um defeito desse tipo de animacao, a seguir veremos sua solucao e algumas dicas.O problema com a Animation e que ela modifica apenas a forma que a view e exibida, e nao nenhuma propriedade interna. Isso quer dizer que durante a animacao, ou mesmo depois se o fillAfter for true, nao importa como sua view esta sendo exibida, a resposta a toques, tamanho, comportamento serao como se nao houvesse nenhuma mudanca. Entao nao e possivel esconder ou mudar de lugar uma view de forma correta usando apenas Animation.A solucao para esse problema e fazer as mudancas no seu layout como se nao existisse Animation e depois simplesmente adicionar a animacao. Isso nem sempre e possivel, mas e um bom comeco para entender a logica da solucao. O jeito simples de fazer isso e aplicar a mudanca e depois fazer a animacao do que tava antes para o atual. Por exemplo: se quiser mover uma view 80% para direita primeiro mova-a (o que nao e feito diretamente para Android < 3.0, mas pode ser feito deixando uma view do tamanho desejado que antes tinha visibilidade gone com a visibilidade visible) e depois aplique a animacao de translacao saindo de -80% para 0.Outra forma de lidar com isso, e que tambem e uma ferramenta para outros problemas e utilizar o AnimationListener, onde voce pode implementar metodos a serem executados quando a animacao comecar, repetir ou parar. A seguir um exemplo:Animation anim = AnimationUtils.loadAnimation(this, R.anim.to_left_100);anim.setAnimationListener(new Animation.AnimationListener() { @Override public void onAnimationStart(Animation animation) { } @Override public void onAnimationRepeat(Animation animation) { } @Override public void onAnimationEnd(Animation animation) { mLayoutList.setVisibility(View.GONE); }});Nesse exemplo, depois da animacao ser executada o mLayoutList deve sumir. Mas ha um problema aqui tambem. O metodo onAnimationEnd nao e executado exatamente quando a animacao termina, de forma que se sua view precisa de um metodo que sera executado no onAnimationEnd para setar sua posicao, por exemplo, voce vera sua view efetuando um pisque, um flash, quando a animacao terminar. Isso acontece pois como o onAnimationEnd nao e executado imediatamente a view volta pro local de origem e