¿Cómo obtener el tamaño del widget de la aplicación?
Tengo un widget de la aplicación de Android y me gustaría ampliarlo para apoyar varios tamaños y también re-sizable con Honeycomb.
El problema es que necesito saber cuál es el tamaño del widget, así que puedo saber cuánto contenido puedo poner en él.
- Tamaño incorrecto de la cuadrícula del widget
- Disminuir el tamaño de la barra de clasificación en Android 2.1
- Cómo reducir un archivo .jar para aligerar una aplicación de Android
- ¿Algún modo de aumentar el tamaño del archivo de registro del sistema Android?
- ¿Diferentes diseños para diferentes tamaños de pantalla en Android?
¿Cómo puedo leer el tamaño del widget de la aplicación?
No pude encontrar nada.
- Tamaño de ventana emergente en android
- Android: Cómo cambiar el tamaño del RadioButton
- Por qué getWindow (). SetSoftInputMode (WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE); No funciona en modo horizontal?
- Tamaño máximo de aplicación de la plataforma android & BADA
- Tamaño de pantalla Android HDPI, LDPI, MDPI
- Botón con fondo de 9 parches que no envuelve el contenido
- Límite de tamaño del cursor en Android SQLiteDatabase
- ¿Por qué el tamaño de mi aplicación en el dispositivo es diferente al tamaño de APK o Play store
Sé que es vieja pregunta, pero hay una respuesta más nueva a ella (que creo que no estaba disponible en el tiempo, pues es API 16 y arriba solamente):
Puedes llamar:
Bundle options = appWidgetManager.getAppWidgetOptions(appWidgetId);
Que dará las mismas opciones que se pasan a su receptor durante
public void onAppWidgetOptionsChanged(Context context, AppWidgetManager appWidgetManager, int appWidgetId, Bundle newOptions)
Con estas opciones de Bundle
puede consultar el tamaño utilizando las constantes:
AppWidgetManager.OPTION_APPWIDGET_MAX_HEIGHT AppWidgetManager.OPTION_APPWIDGET_MAX_WIDTH AppWidgetManager.OPTION_APPWIDGET_MIN_HEIGHT AppWidgetManager.OPTION_APPWIDGET_MIN_WIDTH
Recordando que a Samsung le gusta ser diferente, es probable que necesite un Handler especial para TouchWiz (código abajo copiado directamente desde mi aplicación):
@Override public void onReceive(Context context, Intent intent) { if (intent == null || intent.getAction() == null) return; // I FUCKING HATE SAMSUNG! if (intent.getAction().contentEquals("com.sec.android.widgetapp.APPWIDGET_RESIZE") && Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) { handleTouchWiz(context, intent); } super.onReceive(context, intent); } @TargetApi(16) private void handleTouchWiz(Context context, Intent intent) { AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context); int appWidgetId = intent.getIntExtra("widgetId", 0); int widgetSpanX = intent.getIntExtra("widgetspanx", 0); int widgetSpanY = intent.getIntExtra("widgetspany", 0); if (appWidgetId > 0 && widgetSpanX > 0 && widgetSpanY > 0) { Bundle newOptions = new Bundle(); // We have to convert these numbers for future use newOptions.putInt(AppWidgetManager.OPTION_APPWIDGET_MIN_HEIGHT, widgetSpanY * 74); newOptions.putInt(AppWidgetManager.OPTION_APPWIDGET_MIN_WIDTH, widgetSpanX * 74); onAppWidgetOptionsChanged(context, appWidgetManager, appWidgetId, newOptions); } }