Tutorial de Desenvolvimento de aplicações para
Transcrição
Tutorial de Desenvolvimento de aplicações para
02/10/13 Tutorial de Desenvolvimento de aplicações para Android (Parte 22) | PT Android Entre ou registe-se 100 Início Pesquisar fóruns Início Galeria Fórum Fórum Wiki 8092 229 Membros Recent Posts Pesquisar... Programação para Android Programaç ão geral Tutorial de Desenvolvimento de aplicações para Android (Parte 22) Tópicos em 'Programação geral' iniciados por NRAM, 20 Oct 2012. by NRAM, 20 Oct 2012 at 12:37 Tw eet 0 1 Gosto 0 Registe-se Agora! Login com Facebook Login com Twitter Login com Google Membros Agora Online alucardy07, Pedro bonito Agora Online: 48 (membros: 2, visitantes: 36) Alojamento Web Neste tutorial serão abordadas formas de implementar uma barra de progresso enquanto alguma tarefa está a ser desempenhada. Esta parte dará continuidade ao tutorial que já tem vindo a ser elaborado: Tutorial de Desenvolvimento de aplicações para Android (Parte 1) - Instalação do JDK, SDK e Eclipse Tutorial de Desenvolvimento de aplicações para Android (Parte 2) - Instalação e configuração do ADT e dispositivos virtuais Tutorial de Desenvolvimento de aplicações para Android (Parte 3) - Elaborar o projeto “Hello World” e correr no Estatísticas do Forum Tópicos: https://ptandroid.com/forum/threads/tutorial-de-desenvolvimento-de-aplicações-para-android-parte-22.541/ 1,741 1/8 02/10/13 Tutorial de Desenvolvimento de aplicações para Android (Parte 22) | PT Android SDK. Tutorial de Desenvolvimento de aplicações para Android (Parte 4) – Tipos de Layouts e introdução às TextView. Tutorial de Desenvolvimento de aplicações para Android (Parte 5) – Atributos das TextView. Tutorial de Desenvolvimento de aplicações para Android (Parte 6) – Botões e referências em XML. Tutorial de Desenvolvimento de aplicações para Android (Parte 7) - Como fazer um Splash. Tutorial de Desenvolvimento de aplicações para Android (Parte 8 ) - Como fazer um Menu. Tutorial de Desenvolvimento de aplicações para Android (Parte 9) - Criação de comandos. Tutorial de Desenvolvimento de aplicações para Android (Parte 10) - Criação de um formulário de email. Tutorial de Desenvolvimento de aplicações para Android (Parte 11) - Uso da câmara e alteração do wallpaper. Tutorial de Desenvolvimento de aplicações para Android (Parte 12) - Passagem de informação entre atividades. Tutorial de Desenvolvimento de aplicações para Android (Parte 13) - Menu inflater Tutorial de Desenvolvimento de aplicações para Android (Parte 14) – Atividades em fullscreen e personalização de botões. Tutorial de Desenvolvimento de aplicações para Android (Parte 15) - Introdução de objetos numa atividade. Tutorial de Desenvolvimento de aplicações para Android (Parte 16) - Tipos de letra. Tutorial de Desenvolvimento de aplicações para Android (Parte 17) - Desenhar objetos onde prime. Tutorial de Desenvolvimento de aplicações para Android (Parte 18) - Sliding Menu e introdução às Tabs. Tutorial de Desenvolvimento de aplicações para Android (Parte 19) - Elaboração de um browser simples. Tutorial de Desenvolvimento de aplicações para Android (Parte 20) - Guardar dados com SharedPreferences. Tutorial de Desenvolvimento de aplicações para Android (Parte 21) - Guardar os dados comInputStream/OutputStream No decorrer do tutorial, foram mostradas várias maneiras de tornar a aplicação mais amigável ao utilizador, sendo este outro desse tipo de artigos. Quando as aplicações tendem a fazer tarefas mais demoradas, os utilizadores gostam de saber quanto tempo demora até a terminar, sendo, por norma, usada uma barra de progresso. Objetivo O objetivo desta parte será implementar uma barra de progresso, enquanto escreve/lê no ficheiro. Para tal, será usada uma nova interface, AsyncTask, numa nova classe, que permitirá fazer o progresso contínuo. Desenvolvimento Mensagens: Membros: User Record: Último Membro: 3,834 381 171 Wenderson Campêlo Updates Recentes de Estado Fernando Maia Rio de Janeiro (2 Sep 2013) Fred Tavares Estudando demaisssss (24 Jul 2013) Emerson Gonçalves Pereira São Paulo, SP (17 Jun 2013) Rute Susana Olá, bom dia. Comecei mesmo agora, acabo de me registar alguem me sabe aconselhar? eu queria instalar AndroidTM 4.1 Jelly Bean, como faço? (18 Apr 2013) Darlene Pimentel sao paulo (17 Apr 2013) Partilhar esta página Tw eet 0 Gosto 0 1 Certificado SSL Sobre certificados SSL Nuvem de Tags 4.0 acer android android 4.0 android 4.1 android 4.2 android 4.2.2 apk aplicação aplicações app apple asus backup blackberry boston botões ces ces 2012 chrome computadores consola cyanogenmod desenvolvimento desmontar ericsson estatísticas facebook firefox froyo galaxy galaxy nexus galaxy note galaxy note 2 galaxy s iv galaxy s3 galaxy s4 gingerbread gmail google google i/o google play guia para iniciantes honeycomb hp htc htc one huawei ice cream sandwich intel ios iphone jelly bean jogo jogos lg malware market microsoft mobile world congress motorola mwc 2012 nexus nexus 4 nexus 7 nokia note one x optimus pad padfone polaroid portugal prime programação puzzle recovery rom root s s iii samsung samsung galaxy s4 smartphone smartphones sony tab tablet tablets textview toshiba https://ptandroid.com/forum/threads/tutorial-de-desenvolvimento-de-aplicações-para-android-parte-22.541/ 2/8 02/10/13 Tutorial de Desenvolvimento de aplicações para Android (Parte 22) | PT Android Neste momento é necessário criar uma classe, sendo, neste caso, nomeada de transformer twitter ubuntu windows windows phone windows phone 8 xperia z71 zte carregaDados, que será introduzida dentro da classe DadosInternos: Code (java): package com.ptandroid.tutorial; import android.os.AsyncTask; //... public class DadosInternos extends Activity implements OnClickListener { //... public class carregaDados extends AsyncTask<String, Integer, String> { //... } Para quem tiver curiosidade, AsyncTask permite fazer tarefas/operações em background, sem ser necessário usar threads e publicar resultados na interface. Ler mais aqui. De seguida, tudo o que era feito em onClick terá que ser feito em doInBackground da nova classe, onde a distinção será o parâmetro enviado quando essa é chamada. Como tal, dentro de onClick ficará assim: Code (java): @Override public void onClick(View arg0) { // TODO Auto-generated method stub switch (arg0.getId()) { case R.id.bSave: new carregaDados().execute("ESCREVE"); break; case R.id.bLoad: new carregaDados().execute("LE"); break; } } E dentro de doInBackground assim: Code (java): https://ptandroid.com/forum/threads/tutorial-de-desenvolvimento-de-aplicações-para-android-parte-22.541/ 3/8 02/10/13 Tutorial de Desenvolvimento de aplicações para Android (Parte 22) | PT Android @Override protected String doInBackground(String... params) { if (params[0].equals("LE")) { // TODO Auto-generated method stub String collected = null; FileInputStream fis = null; try { fis = openFileInput(NFICHEIRO); if (fis.available() == 0) { fis.close(); dialog.dismiss(); return collected; } byte[] dataArray = new byte[fis.available()]; while (fis.read(dataArray) != -1) { collected = new String(dataArray); } } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } finally { try { fis.close(); return collected; } catch (IOException e) { // TODO Aut o-ge nera ted ca tch block Até ao momento permanece praticamente tudo igual, sem grandes novidades. De e.printStackTrace(); seguida, deverá ser criada uma variável de instância do tipo ProgressDialog, e } implementar o método onPreExecute: } } if (params[0].equals("ESCREVE")){ Code (java): String data = info.getText().toString(); package com.ptand tro yid {.tutorial; fos = openFileOutput(NFICHEIRO, Context.MODE_PRIVATE); import android.os.Asy fn oc sT .a ws rk i; te(data.getBytes()); //... fos.close(); public class Dado }s cI an tt ce hrn (o Is OEe xx ct ee pn td is onAc et )iv {ity implements OnClickListener { //... // TODO Auto-generated catch block e.printStackTrace(); public class}carregaDados extends AsyncTask<String, Integer, String> { prote }cted ProgressDialog dialog; return null; p }rotected void onPreExecute() { dialog = new ProgressDialog(DadosInternos.this); dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); dialog.setMax(100); dialog.setTitle("A transferir dados"); dialog.show(); } //... } Há que salientar que é possível escolher outros estilos e definir a taxa máxima de “carregamento”. Ainda é necessário definir mais dois métodos, um para atualizar a percentagem do estado e outro para quando terminar o processo, sendo estes o https://ptandroid.com/forum/threads/tutorial-de-desenvolvimento-de-aplicações-para-android-parte-22.541/ 4/8 02/10/13 Tutorial de Desenvolvimento de aplicações para Android (Parte 22) | PT Android onProgressUpdate e onPostExecute, respetivamente: Code (java): protected void onProgressUpdate(Integer... progress) { dialog.incrementProgressBy(progress[0]); } protected void onPostExecute(String result) { if (result != null) infor.setText(result); } Por fim, para que a barra de progresso aumente progressivamente, é necessário introduzir o seguinte: Code (java): publishProgress(60); O 60 deve ser alterado consoante o que se pretenda aumentar. Para que se veja o que realmente se passa, foram introduzidos uns Sleeps, o que não é recomendado, visto que o que se pretende é que a aplicação faça as coisas o mais rápido possível: Code (java): public class carregaDados extends AsyncTask<String, Integer, String> { protected ProgressDialog dialog; protected void onPreExecute() { dialog = new ProgressDialog(DadosInternos.this); dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); dialog.setMax(100); dialog.setTitle("A transferir dados"); dialog.show(); } @Override protected String doInBackground(String... params) { if (params[0].equals("LE")) { // TODO Auto-generated method stub String collected = null; FileInputStream fis = null; publishProgress(10); try { Thread.sleep(1000); } catch (InterruptedException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } try { fis = openFileInput(NFICHEIRO); if (fis.available() == 0) { fis.close(); publishProgress(90); trya { Não esquecer do dismiss(), que retira barra de estado, nem de retornar o que foi Thread.sleep(1000); } catch (InterruptedException e1) { https://ptandroid.com/forum/threads/tutorial-de-desenvolvimento-de-aplicações-para-android-parte-22.541/ 5/8 02/10/13 Tutorial de Desenvolvimento de aplicações para Android (Parte 22) | PT Android lido do ficheiro, através do collected. Demonstração: Projeto do Tutorial em Eclipse Para obter todo o projeto, para poder editar no Eclipse, deve clicar aqui. Android, Aplicações, Botões, Desenvolvimento, onPostExecute, onProgressUpdate, Programação, ProgressDialog, TextView NRAM, 20 Oct 2012 #1 Categories: Progra ma çã o Comentários Tópicos em 'Programação geral' iniciados por NRAM, 20 Oct 2012. https://ptandroid.com/forum/threads/tutorial-de-desenvolvimento-de-aplicações-para-android-parte-22.541/ 6/8 02/10/13 Tutorial de Desenvolvimento de aplicações para Android (Parte 22) | PT Android (Deve entrar ou registar-se para responder aqui.) Partilhar esta página Tw eet Gosto 0 1 Sê o/a primeiro/a entre os teus amigos a gostar disto. Recent Data Threads deRespostas Ínicio Visualizações Última Mensagem Dicas Guia para Iniciante s - Como aumenta r memória do Android Respostas: 2 Antonio Henrique Visualizações: 346 Ontem às 22:50 granel, 5 Jun 2013, Geral Android Sony Ericsson Xperia Neo NRAM, 27 Oct 2012, Sony Ericsson Xperia Neo Respostas: 1 sillu Visualizações: 473 Ontem às 21:43 Respostas: 0 EsromG5 Visualizações: 3 Ontem às 21:24 Respostas: 3 Antonio Henrique Visualizações: 47 Ontem às 15:46 Respostas: 4 StevenStuart88 Visualizações: 22 terça feira às 23:34 Dúvida Código de leitura EsromG5, Ontem às 21:24, Dúvidas Dúvida Root Huawei U8520 Antonio Henrique, Domingo às 13:50, Dúvidas e Ajudas Erro Ajuda urgente não consigo instalar nada! StevenStuart88 terça feira às 18:23, Dúvidas e Ajudas https://ptandroid.com/forum/threads/tutorial-de-desenvolvimento-de-aplicações-para-android-parte-22.541/ 7/8 02/10/13 Tutorial de Desenvolvimento de aplicações para Android (Parte 22) | PT Android Início Fórum Programação para Android Programaç ão geral Português (pt-PT) Forum software by XenForo™ ©2010-2012 XenForo Ltd. https://ptandroid.com/forum/threads/tutorial-de-desenvolvimento-de-aplicações-para-android-parte-22.541/ Contacte-nos Início Para o Topo Termos e Regras 8/8