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 ―プロが教えるテクニック & ツール
- 作者: 株式会社ブリリアントサービス,西河誠
- 出版社/メーカー: オライリージャパン
- 発売日: 2010/09/04
- メディア: 単行本(ソフトカバー)
- 購入: 31人 クリック: 772回
- この商品を含むブログ (39件) を見る