マイペースなプログラミング日記

DTMやプログラミングにお熱なd-kamiがマイペースに書くブログ

自作Workspaceに向けて

Android Hacksを読んでいたら自作Workspaceを作ってみたいと思うようになり、設定ファイルなどをちょっといじってみた。これが正しいかどうかは不明。本に合わせて以下/mydroidがAndroidのソースファイルの入ってるディレクトリとする。それでまず/mydroid/packages/apps/Launcher/src/com/android/launcher/Workspace.java(以下Workspace.java)の代わりとなるクラスを作る。とりあえずViewGroupを継承させておく。クラス名はMyWorkspace。ViewGroupを継承するにあたり、onLayoutをオーバーライドする。そしてコンストラクタも定義しておく。ここらへんはWorkspace.javaをコピーしたものに手を加えた程度のもの。追加されたViewが3つを超えたら下方向に伸びるようにしておく。3の倍数になったら下方向に伸びるようにしようと思ったが手抜きで3のときに下方向に行くように設定している。

public class MyWorkspace extends ViewGroup{
    public MyWorkspace(Context context, AttributeSet attrs) {
        this(context, attrs, 0);
    }

    public MyWorkspace(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
    }

    @Override
    protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
        int childLeft = 0;
        int childTop = 0;

        int count = getChildCount();
        for (int i = 0; i < count; i++) {
            final View child = getChildAt(i);
            if (child.getVisibility() != View.GONE) {
                final int childWidth = child.getMeasuredWidth();
                final int childHeight = child.getMeasuredHeight();

                if(i == 3){
                    childLeft = 0;
                    childTop += childHeight;
                }

                child.layout(childLeft, childTop, childLeft + childWidth, childTop + childHeight);

                childLeft += childWidth;
            }
        }
    }
}

つぎに/mydroid/packages/apps/Launcher/res/layout-land/laucher.xmlと/mydroid/packages/apps/Launcher/res/layout-port/laucher.xmlを修正してみる。

<com.android.launcher.Workspace

となっている所を

<com.android.launcher.MyWorkspace

に変えてみた。これで今までのWorkspaceは表示されなくなり真っ暗な画面になった。そして予期せぬエラーが定期的に発生しているようだ。何か間違えてるかもしれないが、これからもう少しいじってみる

Android Hacks ―プロが教えるテクニック & ツール

Android Hacks ―プロが教えるテクニック & ツール