studio - supportactionbar android




Qual é o aprimoramento do AppCompatActivity sobre o ActionBarActivity? (4)

A AppCompat Support Library começou com um começo humilde, mas importante: uma única barra de ação consistente para todos os dispositivos da API 7 e superiores. Na revisão 21, assumiu uma nova responsabilidade : levar a paleta de cores do material, a matiz do widget, o suporte da Barra de Ferramentas e muito mais para todos os dispositivos API 7+. Com isso, o nome ActionBarActivity não abrangeu realmente o escopo completo do que realmente fez .

http://android-developers.blogspot.it/2015/04/android-support-library-221.html

android.support.v7.app.AppCompatActivity foi adicionado à biblioteca de suporte mais recente da v7 como um novo recurso ontem.

Diz-se que o ActionBarActivity foi descontinuado em favor do novo AppCompatActivity e que AppCompatActivity é a classe base para atividades que usam os recursos da barra de ação da biblioteca de suporte. Então, quais são os novos recursos do AppCompatActivity sobre ActionBarActivity ? Quais aprimoramentos o AppCompatActivity possui sobre o ActionBarActivity ? E quais são as vantagens do AppCompatActivity ? Alguém poderia fornecer algumas amostras?

Todas as dicas são apreciadas. E obrigado antecipadamente.

PS: o que mais me surpreendeu é que AppCompatActivity que é estendido de android.support.v4.app.FragmentActivity é a classe pai direta do ActionBarActivity ! Na verdade, agora que o ActionBarActivity pode fazer tudo o que o AppCompatActivity pode fazer, por que o Android adotou o último?

Enquanto isso, vi uma postagem no blog que afirma: " Não é uma renomeação de ActionBarActivity para AppCompatActivity , a lógica interna do AppCompat está disponível via AppCompatDelegate ", então qual é a " lógica interna " do AppCompat ? O que o AppCompatDelegate pode fazer? Alguém poderia postar alguns códigos sobre isso?


É principalmente uma mudança de nome: o ActionBarActivity não descreve realmente tudo o que faz agora. Você pode usar o ActionBarActivity com segurança, se desejar. Pense nisso como um link simbólico.


Anteriormente, o único ponto de entrada no AppCompat era a classe ActionBarActivity agora obsoleta. Infelizmente, isso forçou você a usar uma hierarquia de atividades definida que impossibilitava coisas como usar PreferenceActivity .

veja support-libraries-v22-1-0 de chris banes para obter mais informações


Como Chris escreveu, a nova versão preterida do ActionBarActivity (a que estende a classe AppCompatActivity ) é segura para usar a classe de compatibilidade com versões anteriores. Sua descontinuação é apenas uma dica para você pedir para usar o novo AppCompatActivity diretamente. AppCompatActivity é uma implementação nova e mais genérica que usa a classe AppCompatDelegate internamente.

Se você iniciar um novo desenvolvimento, use a nova classe AppCompatActivity imediatamente. Se você tiver a chance de atualizar seu aplicativo, substitua o ActionBarActivity descontinuado pela nova atividade. Caso contrário, você poderá permanecer com atividades obsoletas e não haverá nenhuma diferença no comportamento.

Em relação ao AppCompatDelegate , ele permite que você tenha novos widgets coloridos em uma atividade, que não é AppCompatActivity nem ActionBarActivity .

Por exemplo, você herda uma atividade de uma biblioteca externa que, por sua vez, não herda de AppCompatActivity mas deseja que essa atividade tenha widgets de materiais coloridos (visualizações). Para que isso aconteça, você precisa criar uma instância do AppCompatDelegate dentro da sua atividade, substituir métodos dessa atividade como addContentView() , setContentView() etc. (consulte AppCompatDelegate javadoc para obter a lista completa de métodos) e dentro desses métodos substituídos as chamadas para a instância interna AppCompatDelegate . AppCompatDelegate fará o resto e sua atividade "antiquada" será "materializada".





appcompatactivity