package com.samknows.libcore; import android.app.AlertDialog; import android.content.Context; import android.content.DialogInterface; import android.content.res.Resources; import android.util.DisplayMetrics; import android.widget.Toast; public class SKAndroidUI { /** * This method converts dp unit to equivalent pixels, depending on device density. * * @param dp A value in dp (density independent pixels) unit. Which we need to convert into pixels * @param context Context to get resources and device specific display metrics * @return A float value to represent px equivalent to dp depending on device density */ public static float sConvertDpToPixels(float dp, Context context) { Resources resources = context.getResources(); DisplayMetrics metrics = resources.getDisplayMetrics(); float px = dp * (metrics.densityDpi / 160f); return px; } /** * This method converts device specific pixels to density independent pixels. * * @param px A value in px (pixels) unit. Which we need to convert into db * @param context Context to get resources and device specific display metrics * @return A float value to represent dp equivalent to px value */ public static float sConvertPixelsToDp(float px, Context context) { Resources resources = context.getResources(); DisplayMetrics metrics = resources.getDisplayMetrics(); float dp = px / (metrics.densityDpi / 160f); return dp; } // // Helpful dialogs for prompting the user... // private static class DialogActionClickListener implements DialogInterface.OnClickListener { private final Runnable mActionRunnable; private DialogActionClickListener( Runnable actionRunnable ) { mActionRunnable = actionRunnable; } @Override public void onClick( DialogInterface dialog, int which ) { dialog.dismiss(); // If no action runnable is supplied, the dialog will simply be dismissed // and no further action will be taken. if ( mActionRunnable != null ) mActionRunnable.run(); } } // Displays an alert dialog with two buttons. public static void displayPositiveNegativeAlertDialog( Context context, int titleResourceId, int iconResourceId, int messageResourceId, int negativeButtonTextResourceId, Runnable negativeRunnable, int positiveButtonTextResourceId, Runnable positiveRunnable ) { AlertDialog.Builder dialogBuilder = new AlertDialog.Builder( context ); if ( titleResourceId != 0 ) { dialogBuilder.setTitle( titleResourceId ); // The icon won't work without a title if ( iconResourceId != 0 ) dialogBuilder.setIcon( iconResourceId ); } if ( negativeButtonTextResourceId != 0 ) dialogBuilder.setNegativeButton( negativeButtonTextResourceId, new DialogActionClickListener( negativeRunnable ) ); if ( positiveButtonTextResourceId != 0 ) dialogBuilder.setPositiveButton( positiveButtonTextResourceId, new DialogActionClickListener( positiveRunnable ) ); dialogBuilder .setMessage( messageResourceId ) .create() .show(); } private static final int NO_ICON = 0; private static final int NO_BUTTON = 0; private static final Runnable NO_ACTION = null; private static final Runnable DISMISS_DIALOG = null; public void displayPositiveNegativeAlertDialog( Context context, int titleResourceId, int messageResourceId, int negativeButtonTextResourceId, Runnable negativeRunnable, int positiveButtonTextResourceId, Runnable positiveRunnable ) { displayPositiveNegativeAlertDialog( context, titleResourceId, NO_ICON, messageResourceId, negativeButtonTextResourceId, negativeRunnable, positiveButtonTextResourceId, positiveRunnable ); } public void displayActionDismissAlertDialog( Context context, int titleResourceId, int iconResourceId, int messageResourceId, int dismissButtonTextResourceId, int actionButtonTextResourceId, Runnable actionRunnable ) { displayPositiveNegativeAlertDialog( context, titleResourceId, iconResourceId, messageResourceId, dismissButtonTextResourceId, null, actionButtonTextResourceId, actionRunnable ); } public static void displayActionDismissAlertDialog( Context context, int titleResourceId, int messageResourceId, int dismissButtonTextResourceId, int actionButtonTextResourceId, Runnable actionRunnable ) { displayPositiveNegativeAlertDialog( context, titleResourceId, NO_ICON, messageResourceId, dismissButtonTextResourceId, null, actionButtonTextResourceId, actionRunnable ); } public void displayDismissAlertDialog( Context context, int titleResourceId, int iconResourceId, int messageResourceId, int dismissButtonTextResourceId ) { displayPositiveNegativeAlertDialog( context, titleResourceId, iconResourceId, messageResourceId, dismissButtonTextResourceId, DISMISS_DIALOG, NO_BUTTON, NO_ACTION ); } public void displaySingleButtonAlertDialog(Context context, int messageResourceId, int actionButtonTextResourceId) { displayActionDismissAlertDialog(context, 0, 0, messageResourceId, actionButtonTextResourceId, 0, null); } public static void displayDismissAlertDialog( Context context, int titleResourceId, int messageResourceId, int dismissButtonTextResourceId ) { displayPositiveNegativeAlertDialog( context, titleResourceId, NO_ICON, messageResourceId, dismissButtonTextResourceId, DISMISS_DIALOG, NO_BUTTON, NO_ACTION ); } public void displayActionAlertDialog( Context context, int titleResourceId, int iconResourceId, int messageResourceId, int actionButtonTextResourceId, Runnable actionRunnable ) { displayPositiveNegativeAlertDialog( context, titleResourceId, iconResourceId, messageResourceId, NO_BUTTON, NO_ACTION, actionButtonTextResourceId, actionRunnable ); } public void displayActionAlertDialog( Context context, int titleResourceId, int messageResourceId, int actionButtonTextResourceId, Runnable actionRunnable ) { displayPositiveNegativeAlertDialog( context, titleResourceId, NO_ICON, messageResourceId, NO_BUTTON, NO_ACTION, actionButtonTextResourceId, actionRunnable ); } public void displayPopupMessage( Context context, CharSequence messageText ) { Toast.makeText( context, messageText, Toast.LENGTH_LONG ).show(); } public void displayPopupMessage( Context context, int messageResourceId ) { Toast.makeText( context, messageResourceId, Toast.LENGTH_LONG ).show(); } }