Skip to content Skip to sidebar Skip to footer

Possible To Define Widget's Behaviour/layout For Resize And Orientation Change In 3rd Party Launchers?

I can't seem to find anything on the following problem with a widget I want to code: Apart from the resize-ability introduced in Android 3.1, I want my widget to be resizable in cu

Solution 1:

As of Android 4.1 it is possible to use onAppWidgetOptionsChanged() to find out the size of a widget on resize and change the layout. So in your AppWidgetProvider:

@OverridepublicvoidonAppWidgetOptionsChanged(Context context, AppWidgetManager appWidgetManager, int appWidgetId, Bundle bundle) {
        intminWidth= bundle.getInt(AppWidgetManager.OPTION_APPWIDGET_MIN_WIDTH);
        intmaxWidth= bundle.getInt(AppWidgetManager.OPTION_APPWIDGET_MAX_WIDTH);
        intminHeight= bundle.getInt(AppWidgetManager.OPTION_APPWIDGET_MIN_HEIGHT);
        intmaxHeight= bundle.getInt(AppWidgetManager.OPTION_APPWIDGET_MAX_HEIGHT);
        RemoteViewsrv=null;
        //Size of a 2x1 widget on a Nexus 4 (other screen densities will differ)if(minWidth == 152 && maxWidth == 196 && minHeight == 58 && maxHeight == 84){
            rv = newRemoteViews(context.getPackageName(), R.layout.widget2x1);
        } else {
            rv = newRemoteViews(context.getPackageName(), R.layout.widget);
        }
        ...
        /* Set some stuff in your layout here */
        ...
        appWidgetManager.updateAppWidget(appWidgetId, rv);
}

The trouble is you need to find the min/max width and height for each screen density/size in order to know when the widget is resized a certain amount to warrant a layout change.

Solution 2:

Is there a way I can define how my widget changes its layout once it's resized?

Your app widget doesn't change its layout once it's resized.

So, for example, button A is shown on the left for 2x1 but is shown on te right for 3x3.

That is not the purpose of resizeable app widgets. Resizing is for the use of ListView, GridView, etc., that will absorb the additional scrollable space.

Also I want it to change its appearance/layout when due to screen rotation the widget size changes (because e.g. 3x1 has different height and width in landscape and portrait).

For that, you should be able to use standard orientation resource sets (e.g., res/layout/ and res/layout-land/).

Post a Comment for "Possible To Define Widget's Behaviour/layout For Resize And Orientation Change In 3rd Party Launchers?"