O documento discute o uso de aplicativos para acompanhar informações financeiras e de mercado. Em 3 frases ou menos, o documento descreve: 1) Aplicativos que permitem monitorar índices financeiros, consultar ações e notícias da BM&F Bovespa em tempo real. 2) O aplicativo Mobile Broker que fornece análises de mercado através de relatórios diários. 3) O aplicativo UOL que oferece acesso a notícias de mercado e monitoramento de índices, ações, bolsas e câmbio.
2. Com o aplicativo
BM&F Bovespa é
possível monitorar os
índices do mercado
financeiro através do
pregão em
andamento, consultar
em tempo real as
ações desejadas, e
acompanhar as
notícias e vídeos da
BM&F Bovespa. É
possível visualizar e
interagir com o
gráfico.
3. Através do aplicativo
Mobile Broker
Android é possível
consultar as ações
das bolsas de valores
e obter uma análise
do mercado através
de relatórios diários.
O Itaú Bankline para
tablet, permite acesso
a conta, localização
das agências e
caixas eletrônicos.
Disponível para os
clientes Itaú,
Personnalité e
Uniclass.
4. É possível acessar as
notícias do mercado,
acompanhar o gráfico
e monitorados
Índices, Ações,
Bolsas e Câmbio
através do aplicativo
UOL.
5. Agenda
Fragments
Porque fragments?
Fragments Android 3.x vs Compatibility Library
Migrando o código de uma activity para fragments
Utilizando fragments: XML vs API
Ciclo de vida dos fragments
Rotaçionando a tela
FragmentTransaction
Exemplos
AndroidConf @2011 - Ricardo R. Lecheta
8. Como gerenciar todo esse conteúdo?
Fragments
Aproveitar melhor o espaço da tela nos grandes tablets
AndroidConf @2011 - Ricardo R. Lecheta
9. Fragments
Representa uma parte da interface da tela em particular.
São mini-activities que executam dentro de uma activity principal, conhecida
com activity-host
Possui um ciclo de vida bem definido – create/pause/resume/destroy
Controla o seu estado e trata seus eventos, de forma independente de
outros fragments e activities
Possui um design modular e pode ser reaproveitado
AndroidConf @2011 - Ricardo R. Lecheta
10. Fragments
Criado a partir do Android 3.0 – Honeycomb
android.app.Fragment
android.app.FragmentManager
android.app.FragmentTransaction
AndroidConf @2011 - Ricardo R. Lecheta
11. Fragments
Biblioteca de compatibilidade - Android 1.6 ou superior
android.support.v4.app.Fragment
android.support.v4.app.FragmentManager
android.support.v4.app.FragmentTransaction
andoid.support.v4.app.FragmentActivity (*)
AndroidConf @2011 - Ricardo R. Lecheta
12. Fragments
Demo
Criando um Fragment pelo XML
<fragment
android:tag="tempoFrag"
class="br.androidconf.lecheta.fragments.TempoFragment"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
* android:id ou android:tag
TempoFragment frag = (TempoFragment)
getFragmentManager().findFragmentByTag(“tempoFrag");
AndroidConf @2011 - Ricardo R. Lecheta
18. FragmentTransaction
Demo
Criando um Fragment pela API
FragmentManager fm = getFragmentManager();
TempoFrag ment frag = new TempoFragment();
FragmentTransaction ft = fm.beginTransaction();
ft.add(R.id.layoutFrag, frag1, ”tempo”);
ft.commit();
commit() * - Obrigatório
AndroidConf @2011 - Ricardo R. Lecheta
19. Fragments
Girar a tela
Fragments adicionados pelo XML
Android vai manter o estado
Fragments adicionados via API
Android também vai manter o estado da FragmentTransaction
Cuidado para não adicionar o fragment duas vezes !
20. FragmentTransaction
As transações são persistidas durante o ciclo de vida da activity
Girar a tela - Demo
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
if(savedInstanceState == null) {
FragmentManager fm = getFragmentManager();
Fragment1 frag1 = new Fragment1();
FragmentTransaction ft = fm.beginTransaction();
ft.add(R.id.layoutFrag, frag1, Fragment1.TAG);
ft.commit();
}
...
21. Fragments
Passagem de Argumentos – Somente pela API
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
if(savedInstanceState == null) {
FragmentManager fm = getFragmentManager();
Fragment1 frag1 = new Fragment1();
Bundle args = new Bundle();
args.putString("msg", "Android Conf 2011 - Fragment!");
frag1.setArguments(args);
FragmentTransaction ft = fm.beginTransaction();
ft.add(R.id.layoutFrag, frag1, Fragment1.TAG);
ft.commit();
}
...
22. Fragments
Passagem de Argumentos – Somente pela API
public View onCreateView(…) {
View view = …
TextView text1 = (TextView) view.findViewById(R.id.text1);
if(getArguments() != null) {
String msg = getArguments().getString("msg");
text1.setText(msg);
}
...
O construtor de um Fragment precisa ser vazio!
23. Salvando estado - onSaveInstanceState
Utiliza o método onSaveInstanceState(Bundle) da mesma forma que uma
Activity
• Demo
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putSerializable("tempo", tempo);
}
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
tempo = savedInstanceState == null ? null : (Tempo)
savedInstanceState.getSerializable("tempo");
if(tempo == null) {
startTask(this);
} else {
updateView();
}
}
24. Salvando estado - setRetainInstance
O método Fragment.setRetainInstance(boolean) é utilizado para persistir a
instância do Fragment durante o ciclo de vida de uma Activity
• Demo
public View onCreateView(…) {
View view = inflater.inflate(R.layout.tempo_fragment, null);
setRetainInstance(true);
return view;
}
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
if(tempo == null) {
startTask(this);
} else {
updateView();
}
}
25. FragmentTransaction
Demo - FragmentTransaction .add
FragmentManager fm = getFragmentManager();
FragmentDetalhes fragDetalhes = new FragmentDetalhes();
Bundle params = new Bundle();
params.putSerializable("tempo", tempo);
fragDetalhes.setArguments(params);
FragmentTransaction ft = fm.beginTransaction();
ft.add(R.id.layoutFragDetalhes, fragDetalhes, "fragDetalhes");
ft.commit();.
26. FragmentTransaction
Demo - FragmentTransaction .add
FragmentManager fm = getFragmentManager();
FragmentDetalhes fragDetalhes = new FragmentDetalhes();
Bundle params = new Bundle();
params.putSerializable("tempo", tempo);
fragDetalhes.setArguments(params);
FragmentTransaction ft = fm.beginTransaction();
ft.add(R.id.layoutFragDetalhes, fragDetalhes, "fragDetalhes");
ft.commit();.
27. FragmentTransaction
Demo - FragmentTransaction .replace
FragmentManager fm = getFragmentManager();
FragmentDetalhes fragDetalhes = new FragmentDetalhes();
Bundle params = new Bundle();
params.putSerializable("tempo", tempo);
fragDetalhes.setArguments(params);
FragmentTransaction ft = fm.beginTransaction();
ft.replace(R.id.layoutFragDetalhes, fragDetalhes, "fragDetalhes");
ft.commit();.
* Para funcionar o replace() e remove() os fragments precisam ter sido
adicionados dinamicamente pela API
28. Fragment – back stack
A “back stack” armazena a pilha de execuções de cada FragmentTransaction
O botão voltar pode ser utilizado para desfazer uma operação efetuada
pela FragmentTransaction
Demo
29. Fragment – back stack
A “back stack” armazena a pilha de execuções de cada FragmentTransaction
Qual será o comportamento do botão voltar?
Depende da interface de sua aplicação, e das necessidades do cliente