sábado, 6 de julho de 2013

Exemplo Ciclo de vida - Activity Android

Pessoal, abaixo um codigo que pode ser colocado em uma activity android, com isso podemos criar situações no emulador e observar o comportamento de uma activity. Por exemplo, podemos durante a execução da activity podemos apertar o botão de back do emulador ou o de home e observar o log da aplicação para saber que metodo do ciclo de vida da activity foi chamado...

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Log.i("ExemploCicloVida", "onCreate");
    }
 
    @Override
    protected void onStart() {
    // TODO Auto-generated method stub
    super.onStart();
    Log.i("ExemploCicloVida", "onStart");
    }
 
    @Override
    protected void onResume() {
    // TODO Auto-generated method stub
    super.onResume();
    Log.i("ExemploCicloVida", "onResume");
    }
 
    @Override
    protected void onRestart() {
    // TODO Auto-generated method stub
    super.onRestart();
    Log.i("ExemploCicloVida", "onRestart");
    }
 
    @Override
    protected void onPause() {
    // TODO Auto-generated method stub
    super.onPause();
    Log.i("ExemploCicloVida", "onPause");
    }
 
    @Override
    protected void onStop() {
    // TODO Auto-generated method stub
    super.onStop();
    Log.i("ExemploCicloVida", "onStop");
    }
 
    @Override
    protected void onDestroy() {
    // TODO Auto-generated method stub
    super.onDestroy();
    Log.i("ExemploCicloVida", "onDestroy");
    }
     
}

sexta-feira, 5 de julho de 2013

Activity - Ciclo de Vida Activity no Android

Talvez a classe mais importante do Android seja a Activity. De forma simplista, podemos dizer que ela é responsável por renderizar as views na tela ou até mesmo que ela é as telas do app. De acordo com a documentação do Google ela é simplesmente o que o nome diz, uma “atividade” que é basicamente a unica coisa que o usuário pode iteragir com seu smartphone.

Quando se trabalha com Activity no Android, é preciso muito mais que o desenvolvimento de Telas. Entender o ciclo de vida de uma Activity, é uma parte fundamental. Imagine que sua aplicação seja intenrropida de forma inesperada, seja por que o usuário abriu uma outra Activity e com isso houve algum fator que fez a Activity ser fechada, e até mesmo quando o Android finaliza ela quando ve a necessidade de memória. Desta forma é preciso entender cada ciclo de vida de uma Activity. Existem algums metodos na classe Acitivity que são responsaveis pelo seu ciclo de vida, são eles:

- onCreate() É um método obrigatório e é invocado uma vez. Geralmente nele é definido o View da Acitivity. Em seguida é invocado o onStart.

- onStart() É chamada imediatamente após a onCreate() – e também quando uma Activity que estava em background volta a ter foco.

- onResume() Sempre invocada quando a Activity recebe o foco novamente.

- onPause() Salva o estado da aplicação, quando o celular entra em modo de espera por exemplo. 

- onStop() – Quando a activity está sendo encerrada e não fica mais visivel ao usuário.

- onDestroy() Este método literalmente finaliza a aplicação e pode ser invocado também pelo sistema operacional, caso ele deseje desalocar recursos.

- onRestart() Quando uma Activity volta depois de ficar fora temporariamente e invoca o método onStart.

Logo abaixo uma imagem ilustrativa desse ciclo para facilitar o entendimento.




Até a proxima...

segunda-feira, 1 de julho de 2013

Criação do Ambiente de Desenvolvimento Android

Olá pessoal abaixo uma vídeo mostrando a criação do ambiente de desenvolvimento android e a criação de um simples exemplo. O vídeo é um pouco longo mais tentei ser bem objetivo. No fim do post alguns passos importantes para a criação.





Links Uteis:

- Java SE Development Kit (JDK):    http://www.oracle.com/technetwork/java/javase/downloads/index.html

- ADT Bundle:
http://developer.android.com/sdk/index.html

- Criando Variaveis de ambiente:
1- Acionar o botão direito do mouse em "Computador" e em seguida com o botão esquerdo em "Propriedades"
2- Clique em "Configurações Avançadas do Sistema"
3- Com a aba "Avançado" selecionada, clique em "Variáveis de ambiente"
4- Na parte de baixo da janela, em "Variáveis do sistema", clique em "Novo".
5- Em "Nome da variável", digite JAVA_HOME e em "Valor da variável", digite o caminho onde o JDK foi instalado, Ex.: C:\Program Files\Java\jdk1.6.0_34
6- Em seguida procure por uma variável de sistema chamada "Path" e clique em Editar
7- Essa variável pode conter diversas variáveis de ambiente já configuradas e que não devem ser apagadas.  Cada  uma  das  variáveis  é  separada  por  um  ponto-e-vírgula.  Precisamos acrescentar um ponto-e-vírgula e mais o endereço da pasta  bin da instalação do Java, que deve ser algo como: C:\Program Files\Java\jdk1.6.0_34\bin


Abraços...

terça-feira, 4 de dezembro de 2012

Utilizando Achartengine em sua aplicação Android. Crie diversos gráficos com a API

Olá pessoal, precisei utilizar gráficos em uma aplicação android e vou postar um exemplo que criei para facilitar para quem precisar depois.

Utilizei a API Achartengine, disponível para download aqui: http://www.achartengine.org/
Depois de adicionar a API no Build Path do projeto podemos começar.

Existem diversas propriedades da api que não conheço ainda mais pelo que já pesquisei encontrei algumas coisas bem interessantes. Segue o exemplo:



  1. public class BarGraphActivity extends Activity{
  2. private GraphicalView mChartView;
  3. @Override
  4. protected void onCreate(Bundle savedInstanceState) {
  5. super.onCreate(savedInstanceState);
  6. setContentView(R.layout.bar_char_activity);
  7. createChart();
  8. }
  9. public void createChart(){
  10. int[] valores = {6, 7, 5, 3};
  11. CategorySeries series = new CategorySeries("Grafico de barras");
  12. for (int i = 0; i < valores.length; i++) {
  13. series.add(valores[i]);
  14. }
  15. XYMultipleSeriesDataset dataset = new XYMultipleSeriesDataset();
  16. dataset.addSeries(series.toXYSeries());
  17. XYMultipleSeriesRenderer renderer = getBarDemoRenderer();
  18.    setChartSettings(renderer);
  19.    LinearLayout layout = (LinearLayout) findViewById(R.id.layout_chart);
  20.    mChartView = ChartFactory.getBarChartView(this, getBarDemoDataset(),
  21.     renderer, Type.DEFAULT);
  22.    layout.addView(mChartView);
  23. }
  24. private XYMultipleSeriesDataset getBarDemoDataset() {
  25.    XYMultipleSeriesDataset dataset = new XYMultipleSeriesDataset();
  26.    int[] valores = {6, 7, 5, 3};
  27.    CategorySeries series = new CategorySeries("Demo series");
  28.    for (int i = 0; i < valores.length; i++) {
  29.     series.add(valores[i]);
  30.    }
  31.    dataset.addSeries(series.toXYSeries());
  32.    return dataset;
  33.  }
  34. public XYMultipleSeriesRenderer getBarDemoRenderer() {
  35.    XYMultipleSeriesRenderer renderer = new XYMultipleSeriesRenderer();
  36.    renderer.setAxisTitleTextSize(16);
  37.    renderer.setBarSpacing(1);
  38.    renderer.setLegendTextSize(15);
  39.    SimpleSeriesRenderer r = new SimpleSeriesRenderer();
  40.    r.setColor(Color.YELLOW);
  41.    renderer.addSeriesRenderer(r);
  42.    return renderer;
  43.  }
  44. private void setChartSettings(XYMultipleSeriesRenderer renderer) {
  45.    renderer.setShowLegend(false);
  46.    renderer.setAxesColor(Color.DKGRAY);
  47.    renderer.setXAxisMin(0.5);
  48.    renderer.setXAxisMax(12.5);
  49.    renderer.setYAxisMin(0);
  50.    renderer.setYLabelsAlign(Align.RIGHT);
  51.    renderer.setXLabels(0);
  52.    renderer.setZoomEnabled(false, false);
  53.    renderer.setShowCustomTextGrid(true);
  54.    renderer.setShowGridY(true);
  55.    renderer.setShowGridX(true);
  56.    renderer.addXTextLabel(1, "Jan");
  57.    renderer.addXTextLabel(2, "Fev");
  58.    renderer.addXTextLabel(3, "Mar");
  59.    renderer.addXTextLabel(4, "Abr");
  60.     
  61.  }

  62. }

E o resultado disso tudo ficará assim:



Qualquer dúvida que tiverem tentarei ajudar, no site tem uma documentação legal e lá também está disponível para download um projeto com alguns exemplos utilizando outros tipos de gráficos.

Até a próxima... 

terça-feira, 11 de setembro de 2012

Criando arquivo de Properties em Java

Olá pessoal, em alguns projetos pode ser necessário a criação de um arquivo de parâmetros de configuração e nesse post vou mostrar como é simples criar um em java.

Criarei um arquivo texto com a seguinte estrutura:
chave=valor

Meu arquivo de configuração será o "properties.config" e contém esses parâmetros:


  1. chave1=parametro1
  2. chave2 =parametro2
  3. chave3 =parametro3
agora vamos ler o arquivo e imprimir no console os valores de cada chave:

  1. public static void main(String[] args) {
  2. Properties config = new Properties();
  3. String arquivo = "properties.config";
  4. try {
  5. config.load(new FileInputStream(arquivo));
  6. System.out.println(config.getProperty(" chave1"));
  7. System.out.println(config.getProperty(" chave2"));
  8. System.out.println(config.getProperty(" chave3"));
  9. } catch (FileNotFoundException e) {
  10. e.printStackTrace();
  11. } catch (IOException e) {
  12. e.printStackTrace();
  13. }
  14. }
e teremos as seguintes saídas no console:

parametro1
parametro2
parametro3

Com isso não será mais necessário recompilar seu código por um simples parâmetro, agora basta alterar o valor no arquivo de configurações do seu sistema.


quinta-feira, 6 de setembro de 2012

Diferença em dias entre datas

Oi pessoal, segue um exemplo de como calcular a diferença em dias entre duas datas
em java:



  1.  public static void main(String[] args) {
  2.          
  3.         Calendar dataInicial = Calendar.getInstance();
  4.         // Atribui a data de 4 de setembro de 2012
  5.         dataInicial.set(2012, Calendar.SEPTEMBER, 4);

  6.         // Data de hoje
  7.         Calendar dataFinal = Calendar.getInstance();

  8.         // Calcula a diferença entre hoje e da data de inicial
  9.         long diferencaMillis = dataFinal.getTimeInMillis() -
  10.                 dataInicial.getTimeInMillis();

  11.         // Quantidade de milissegundos em um dia
  12.         int tempoDiaMillis = 1000 * 60 * 60 * 24;

  13.         long diferencaDias = diferencaMillis / tempoDiaMillis;

  14.         System.out.println("Diferença em dias entre as datas são: " + diferencaDias);
  15.     }


domingo, 2 de setembro de 2012

Cross browser - Rodando sistemas em diversos browsers

Oi pessoal, 
Descobri essa semana algo bem legal que permite que você execute vários browsers para que possam ser feitos testes em sistemas web.
O Sandbox navegador permite que você execute qualquer navegador instantaneamente a partir 
da web em um ambiente virtual isolado. Spoon.net funciona usando um plugin do navegador. 
O Navegador faz cross browser e permite que os navegadores mais antigos, 
como o IE6 rode no Windows 7.