13 Out, 2010 18:22
Como criar seu próprio ProgressDialog em Android
Criação
Primeiramente, precisamos criar o nosso arquivo dialog.xml com o layout do nosso dialog. Segue o código abaixo:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout android:id="@+id/LinearLayout01"
android:layout_height="fill_parent" xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:gravity="center" android:layout_width="fill_parent">
<ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/imagem"></ImageView>
<Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="10dip"
android:id="@+id/cancelar" android:background="@drawable/botao"></Button>
</LinearLayout>
Agora, criaremos a nossa classe MeuDialog.java que extenderá de Dialog:
public class MeuDialog extends Dialog implements OnClickListener {
Button cancelar;
AnimationDrawable animacao;
boolean cancelado;
public CustomizeDialog(Context context) {
super(context);
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.dialog);
cancelar = (Button) findViewById(R.id.cancelar);
cancelar.setOnClickListener(this);
ImageView imagem = (ImageView) findViewById(R.id.imagem);
imagem.setBackgroundResource(R.drawable.animacao);
animacao = (AnimationDrawable) imagem.getBackground();
imagem.post(new Runnable() {
public void run() {
animacao.start();
}
});
cancelado = false;
}
public void onClick(View v) {
if (v == cancelar) {
animacao.stop();
dismiss();
cancelado = true;
}
}
public boolean isCancelado() {
return cancelado;
}
public void setCancelado(boolean cancelado) {
this.cancelado = cancelado;
}
}
Podemos observar que o nosso dialog tem uma imagem e um botão. A imagem é uma animação tipo spinner. Mais a frente mostrarei o código xml da animação.
A função do botão cancelar é sumir com o dialog e informar que foi cancelado. Mas para que serve? Se você precisar cancelar alguma ação que está rodando em background, por exemplo, é só consultar o seu dialog.
Dá para perceber que a classe é bem simples. É óbvio que mais componentes podem ser inseridos, mas o exemplo é para ser simples mesmo.
Segue o código de animacao.xml:
<animation-list xmlns:android="http://schemas.android.com/apk/res/android" android:oneshot="false">
<item android:drawable="@drawable/frame1" android:duration="200" />
<item android:drawable="@drawable/frame2" android:duration="200" />
<item android:drawable="@drawable/frame3" android:duration="200" />
<item android:drawable="@drawable/frame4" android:duration="200" />
</animation-list>
É importante ressaltar que esse arquivo deve ficar na pasta res/drawable.
Utilização
Depois de criado o dialog, precisamos saber como utilizá-lo em nossas activities. Segue um exemplo:
MeuDialog dialog = new MeuDialog(this);
dialog.show();
É bem simples! Basta instanciar e chamar o método show(). Para sumir com o dialog, basta chamar o método dismiss().
Pronto, espero que esse exemplo ajude bastante! Até :)