jueves, 18 de diciembre de 2014

Android: Custom loading dialog

Creator method
public static Dialog buildLoadingDialog(Activity act, String title) {
  final Dialog dialog = new Dialog(act, android.R.style.Theme_Translucent);
  dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
  dialog.setCancelable(false);
  dialog.setContentView(R.layout.dialog_loading);
  
  WindowManager.LayoutParams lp = dialog.getWindow().getAttributes();
  lp.dimAmount = 0.6f;  
  dialog.getWindow().setAttributes(lp);  
  dialog.getWindow().addFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);
  
  TextView titleText = (TextView) dialog.findViewById(R.id.dialog_loading_title);
  titleText.setText(title);
  
  ImageView loadingImage = (ImageView) dialog.findViewById(R.id.dialog_loading_image);
  AnimationDrawable loadAnimation = (AnimationDrawable)loadingImage.getDrawable();
  loadAnimation.start();
  
  return dialog;
 }
R.layout.dialog_loading
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:background="#7C000000"
    android:padding="30dp"
    android:orientation="vertical" >
    
    <ImageView
        android:id="@+id/dialog_loading_image"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/loading"
        android:layout_gravity="center_horizontal"
        android:layout_marginBottom="5dp"
        android:layout_marginTop="10dp"
 />
    <TextView
        android:id="@+id/dialog_loading_title"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:textColor="@color/text_color_1"
        android:textSize="22sp" />
    
</LinearLayout>
res/drawable/loading
<animation-list xmlns:android="http://schemas.android.com/apk/res/android"
    android:oneshot="false">
    <item android:drawable="@drawable/loading_1" android:duration="100" />
    <item android:drawable="@drawable/loading_2" android:duration="100" />
    <item android:drawable="@drawable/loading_3" android:duration="100" />
    <item android:drawable="@drawable/loading_4" android:duration="100" />
    <item android:drawable="@drawable/loading_5" android:duration="100" />
    <item android:drawable="@drawable/loading_6" android:duration="100" />
    <item android:drawable="@drawable/loading_7" android:duration="100" />
    <item android:drawable="@drawable/loading_8" android:duration="100" />
    <item android:drawable="@drawable/loading_9" android:duration="100" />
    <item android:drawable="@drawable/loading_10" android:duration="100" />
    <item android:drawable="@drawable/loading_11" android:duration="100" />
</animation-list>
How to use it
    private void showLoadingDialog() {
        loadingDialog = DialogHelper.buildLoadingDialog(this, "Cargando...");
        loadingDialog.show();
    }

    private void hideLoadingDialog() {
        loadingDialog.dismiss();
        loadingDialog = null;
    }

martes, 16 de diciembre de 2014

Android: Filter logcat output from eclipse

In the "EditView" on top of the logcat output type:

tag:^(?!<tag 1>|<tag 2>| ... |<tag n>).*$

Example:

tag:^(?!Adreno200-ES20|memalloc).*$