2012年8月12日日曜日

アプリ紹介&軽量なViewのSpace

チームEGGの曽川です。

かわいいネコの動画を紹介する「よるにゃん」をリリースしました。
ぜひ確認してみてください。
Get it on Google Play

今回から「よるにゃん」で実施した実装方法のテクニックなどを紹介していきます。
今回はView同士の空白の実装方法です。
これまでは、ViewやFrameLayoutでその方法を使ってきましたが、Spaceを使用すれば更に高速に空白を表現できます。
これはICS(4.0)以降で追加されたAPIで空白(大きさ)のみを表現し、Viewの背景色等の処理は特に何も行いません。
ICSからのAPIですがソースコードを取り込めばICS以前のバージョンでも使用可能です。
ソースコードを取り込む際は、
[android-sdkディレクトリ]/sources/android-16/android/widget/Space.java
を参照してください。
使い方は以下のとおりです。
    <Space
        android:layout_width="match_parent"
        android:layout_height="50dp" />
先日リリースした「よるにゃん」では、「きょうのねこ」、「まえのねこ」、「せってい」を均等に分割するように利用しています。(ピンク色の部分です。)

どのくらい差が出るのか、以下のコードで1つのViewとSpaceをそれぞれ100万回再描画する時間を計測してみました。(HTC EVO3D OS2.3.4)
                long time = System.nanoTime();

                for (int i = 0; i < 1000000; i++) {
                    view.invalidate();
                }

                long processTime = System.nanoTime() - time;

                System.out.println("time:" + (processTime / 1000000));

View :118.3ms
Space:108.5ms
(※50回の平均です)
ここでは簡単なレイアウトなので微小な差ですが、複雑なレイアウトではさらに計算の負担を減らせると思います。
またレイアウト上で目に見えない部分なので、XML内で「これは空白だよ」と明示的に指定する意味としてもよさそうですね。

0 件のコメント:

コメントを投稿