Invitar a usuarios de tu aplicación a votarla
Sep07

Invitar a usuarios de tu aplicación a votarla

Hace tiempo dí con un snippet para aplicaciones Android que se encargaba de lanzar un dialogo invitando al usuario a puntuar tu aplicación, a hacerlo más tarde o simplemente no hacerlo. El snippet controla el número de días a esperar antes de que aparezca la modal y el número de ejecuciones, y es tan simple como incluir la clase java que os dejo a continuación y añadir la siguiente línea en el onCreate de nuestra Activity principal: Java AppRater.app_launched(this); 1 AppRater.app_launched(this); Si queremos ver la modal sin esperar esos días para ver como queda, pruebas, etc, podemos usar esto en vez de la línea anterior: Java AppRater.showRateDialog(this, null); 1 AppRater.showRateDialog(this, null); El snippet propiamente peca de usar algunos literales a fuego (en inglés) por lo que os recomiendo hacer uso de vuestros propios strings definidios en los ficheros strings.xml para que sea totalmente multilenguaje. El sinppet completo aquí: public class AppRater { private final static String APP_TITLE = "YOUR-APP-NAME"; private final static String APP_PNAME = "YOUR-PACKAGE-NAME"; private final static int DAYS_UNTIL_PROMPT = 3; private final static int LAUNCHES_UNTIL_PROMPT = 7; public static void app_launched(Context mContext) { SharedPreferences prefs = mContext.getSharedPreferences("apprater", 0); if (prefs.getBoolean("dontshowagain", false)) { return ; } SharedPreferences.Editor editor = prefs.edit(); // Increment launch counter long launch_count = prefs.getLong("launch_count", 0) + 1; editor.putLong("launch_count", launch_count); // Get date of first launch Long date_firstLaunch = prefs.getLong("date_firstlaunch", 0); if (date_firstLaunch == 0) { date_firstLaunch = System.currentTimeMillis(); editor.putLong("date_firstlaunch", date_firstLaunch); } // Wait at least n days before opening if (launch_count >= LAUNCHES_UNTIL_PROMPT) { if (System.currentTimeMillis() >= date_firstLaunch + (DAYS_UNTIL_PROMPT * 24 * 60 * 60 * 1000)) { showRateDialog(mContext, editor); } } editor.commit(); } public static void showRateDialog(final Context mContext, final SharedPreferences.Editor editor) { final Dialog dialog = new Dialog(mContext); dialog.setTitle("Rate " + APP_TITLE); LinearLayout ll = new LinearLayout(mContext); ll.setOrientation(LinearLayout.VERTICAL); TextView tv = new TextView(mContext); tv.setText("If you enjoy using " + APP_TITLE + ", please take a moment to rate it. Thanks for your support!"); tv.setWidth(240); tv.setPadding(4, 0, 4, 10); ll.addView(tv); Button b1 = new Button(mContext); b1.setText("Rate " + APP_TITLE); b1.setOnClickListener(new OnClickListener() { public void onClick(View v) { mContext.startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=" + APP_PNAME))); dialog.dismiss(); } }); ll.addView(b1); Button b2 = new Button(mContext); b2.setText("Remind me later"); b2.setOnClickListener(new OnClickListener() { public void onClick(View v) { dialog.dismiss(); } }); ll.addView(b2); Button b3 = new Button(mContext); b3.setText("No, thanks"); b3.setOnClickListener(new OnClickListener() { public void onClick(View v) { if (editor != null) { editor.putBoolean("dontshowagain", true); editor.commit(); } dialog.dismiss(); } }); ll.addView(b3); dialog.setContentView(ll); dialog.show(); } } 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 public class AppRater {    private final static String APP_TITLE = "YOUR-APP-NAME";    private final static String APP_PNAME = "YOUR-PACKAGE-NAME";        private final static int DAYS_UNTIL_PROMPT = 3;    private final static int LAUNCHES_UNTIL_PROMPT = 7;        public static void app_launched(Context mContext)...

Read More
Crear icono de todos los tamaños online
Sep02

Crear icono de todos los tamaños online

Os voy a hablar de una web: http://makeappicon.com/ , que te proporciona la descarga de iconos para todos los tamaños disponibles del sistema Android (y de iOS, sea dicho de paso) a partir de una imagen que subas. Os dejo un par de imágenes de ejemplo con un icono de ejemplo. Tan sólo tenemos que arrastrar el icono que queremos a la tostadora y automáticamente la imagen será subida y procesada en el servidor para devolvernos el pack de iconos listo para descargar (con preview incluída). Por supuesto es gratis.  ...

Read More
Obtener Idioma en Android (Locale)
Ago13

Obtener Idioma en Android (Locale)

Para obtener el idioma de nuestra aplicación Android, podemos usar la clase Locale. Algunos ejemplos de código y su salida. Locale.getDefault().toString(); -> en_US // El locale actual del usuario Locale.getDefault().getDisplayName().toString(); -> Thai (Thailand,TH) //Nombre del idioma Locale.getDefault().getLanguage().toString(); -> th //Código del idioma Locale.getDefault().getDisplayLanguage().toString(); -> Thai //Nombre del idioma Locale.getDefault().getCountry().toString(); -> TH //Código del País Locale.getDefault().getDisplayCountry().toString(); -> Thailand //Nombre del país 123456 Locale.getDefault().toString(); -> en_US // El locale actual del usuarioLocale.getDefault().getDisplayName().toString(); -> Thai (Thailand,TH) //Nombre del idiomaLocale.getDefault().getLanguage().toString(); -> th //Código del idiomaLocale.getDefault().getDisplayLanguage().toString(); -> Thai //Nombre del idiomaLocale.getDefault().getCountry().toString(); -> TH //Código del PaísLocale.getDefault().getDisplayCountry().toString(); -> Thailand //Nombre del país Además de eso, la clase Locale tiene más utilidades para  otros casos (monedas.....

Read More

Cómo poner el fondo de un ImageButton transparente

Como sabemos, cuando creamos un ImageButton, por defecto Android nos establece un fondo gris tipo botón, que puede afectar visualmente al aspecto de nuestra imagen, sobre todo si no tiene fondo propio. Para setear un fondo transparente en un botón, tan sólo tenemos que añadir al xml del mismo lo siguiente: android:background="@null" 1 android:background="@null" Para hacerlo desde Java directamente: ImageButton ib=(ImageButton)findViewById(R.id.imageButtonid); ib.setBackgroundColor(Color.TRANSPARENT); 12 ImageButton ib=(ImageButton)findViewById(R.id.imageButtonid);ib.setBackgroundColor(Color.TRANSPARENT); Un...

Read More

Cómo Acceder a una Activity desde su Fragment

Cuando creamos una Activity que gestionará uno o varios Fragments, a veces queremos acceder a la Activity padre que controla ese Fragment, para ello tan sólo tenemos que usar el método getActivity();  

Read More

Crear un array de integers con recursos de tu aplicación Android

Aquí vemos un ejemplo de como poder crear un array de enteros representado con los recursos que queramos de nuestra aplicación. /res/values/arrays.xml <integer-array name="listThemesValues"> <item>@style/AppThemeDefault</item> <item>@style/AppThemeBlue</item> <item>@style/AppThemeGreen</item> </integer-array> 12345 <integer-array name="listThemesValues">    <item>@style/AppThemeDefault</item>    <item>@style/AppThemeBlue</item>    <item>@style/AppThemeGreen</item></integer-array> O desde alguna clase java: getResources().getIntArray(R.array.ing_id_arr) 1 getResources().getIntArray(R.array.ing_id_arr) Es útil conocer esto sobre todo cuando queremos definir una pantalla de preferencias, donde queramos hacer usos de recursos que hayamos creado en nuestra...

Read More