如何调整launcher2屏幕的布局

来源:互联网 发布:php中面向对象的机制 编辑:程序博客网 时间:2024/06/05 05:26

android系 统默认的启动之后的icon布局是4行4列,第一行由search  widget完全占据。这样的设计对于小屏幕的手机比较合适,但是对于大屏幕的tablet之类的设备而言,巨大的屏幕上只能摆放12个icons(第一 行被search widget占据),就显得很空荡,icon之间的距离太宽了,显得不是那么美观。

那么如何来调整launcher home screen的布局呢?

查看Android_src\packages\apps\Launcher\res\layout-land\workspace_screen.xml

Android_src\packages\apps\Launcher\res\layout-port\workspace_screen.xml

一个是横屏,一个是竖屏的布局。调整字段,参数代表个数。

launcher:shortAxisCells="4" launcher:longAxisCells="4"

===============

第二部分:调整launcher:shortAxisCells="6" launcher:longAxisCells="6"

这样调整后,laucher home screen的icon变为6行,6列,显得比较紧凑了。但是search widget就比较别扭了,只占据了左边的一部分,并没有占据整个第一行。那么如何解决这个问题?

调整Android_src\packages\apps\Launcher\src\com\android\launcher\Widget.java

/**
* Represents one instance of a Launcher widget, such as search.
*/
class Widget extends ItemInfo {
    int layoutResource; 

    static Widget makeSearch() {
        Widget w = new Widget();
        w.itemType = LauncherSettings.Favorites.ITEM_TYPE_WIDGET_SEARCH;
        w.spanX = 4;
        w.spanY = 1;
        w.layoutResource = R.layout.widget_search;
        return w;
    }

可以看到指定的search widget x方向占据4个cells,y轴方向占据一个cells,这对原来4*4的布局是ok的。但是现在我们改为6*6的布局,就应该随之变化。我们做如下修改:

  w.spanX = 6;
  w.spanY = 1;

这样整个修改效果完成。如下图所示

landport

第三部分:附加,在android2.2版本的系统中,修改search widget的布局不是在Widget.java这个文件中,这个文件在这个版本中部存在。修改在

LauncherProvider.java中584行

// Original widgets might not have valid spans when upgrading
                    if (favoriteType == Favorites.ITEM_TYPE_WIDGET_SEARCH) {
                        values.put(LauncherSettings.Favorites.SPANX, 4);
                        values.put(LauncherSettings.Favorites.SPANY, 1);
                    } else {
                        values.put(LauncherSettings.Favorites.SPANX, 2);
                        values.put(LauncherSettings.Favorites.SPANY, 2);
                    } 

752行 

private boolean addSearchWidget(SQLiteDatabase db, ContentValues values) {
       ComponentName cn = getSearchWidgetProvider();
       return addAppWidget(db, values, cn, 4, 1);
   } 

第四部分:经过调试,发现Launcher2和Launcher里面的代码不同,经过以上的修改,在重启后,还是恢复成44的格局。还要修改一个地方

Launcher里面的常数。

   static final int NUMBER_CELLS_X = 4;
   static final int NUMBER_CELLS_Y = 4;