2014年12月20日土曜日

Android Studioで開発効率をアップしてくれるPlugins

Android Layout ID Converter

レイアウトxmlファイルからandroid:idを抽出して、findViewByIdを楽々コピペしてくれるPluginです。
詳しくは作成者さまの動画をご覧ください。



Android Parcelable code generator

データクラスを簡単にParcelable化してくれるPluginです。
https://github.com/mcharmas/android-parcelable-intellij-plugin/

※随時、更新予定

Android StudioでVolleyを使用するための設定方法

Volleyについて

Volleyは簡単に素早くネットワーク処理を実装することができるHTTPライブラリです。次のような利点があります。

  • ネットワークリクエストの自動スケジューリング
  • 多重同時ネットワーク通信
  • メモリを使用したリクエストのキャッシュ機能
  • リクエストの優先順位をサポート
  • キャンセルリクエストAPI
  • ネットワークから非同期にデータのフェッチを必要とするUIに正確に行う
  • デバッグ機能

[*1] Transmitting Network Data Using Volley: http://developer.android.com/training/volley/index.html

Volleyのセットアップ

VolleyライブラリはAOSPのframeworks/volleyに公開されています。現時点では、このリポジトリからソースをダウンロードして、Android Studioのワークスペースに組み込みます。

git submodule add https://android.googlesource.com/platform/frameworks/volley modules/volley

git submoduleコマンドにより、プロジェクトのサブモジュールとしてmodules/volleyに格納します。以後、volleyサブプロジェクトを更新する場合は次のコマンドを実行します。

git submodule update

setting.gradleにVolleyライブラリを追加

 include ':app'
+include ':modules:volley'

アプリケーションのbuild.gradleのdependeciesにVolleyライブラリを追加

 dependencies {
     compile 'com.android.support:support-v4:19.1.0'
     androidTestCompile 'com.android.support:support-v4:19.1.0'
     androidTestCompile 'com.android.support:support-v4:19.1.0'
+    compile project(':modules:volley')
 }

上記の設定を終えたら、Sync Project with Gradle Filesを実行してビルドを行います。

Android Studioのプロジェクトをgit cloneした際、git submoduleの更新も忘れない

Android Studioのプロジェクトをgit cloneした際、以下のエラーが出力され困ったときのメモです。
Error: Configuration with name 'default' not found

原因はVolleyライブラリをgit submoduleで使用していて、submoduleの設定を忘れてしまいがちなのでメモとして残します。

Android Studioのプロジェクトをgit cloneした後、git submoduleを再設定します。
git submodule init
git submodule update

submoduleを再設定することでエラーは解消されました。

2014年11月23日日曜日

Android 5.0(マテリアルデザイン) ActionBarの背景色をカスタマイズする

査読必須サイト

I/O 2014 アプリに学ぶマテリアルデザイン
Customize the Color Palette
Google本家のスタイルガイド


各パーツと要素の指定


以下、各パーツと要素名です。style.xmlにて各要素の色を指定します。


AppCompat使用時の指定

次はStatsuBarとActionBarの背景色を指定するサンプルです。styles.xmlに記載しました。

<resources>

    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">

        <!-- your app branding color for the app bar -->
        <item name="colorPrimary">@color/primary</item>
        <!-- darker variant for the status bar and contextual app bars -->
        <item name="colorPrimaryDark">@color/primary_dark</item>
    </style>

</resources>

AppCompatを使用時は「name="android:colorPrimary"」でないことに注意してください。


サンプル画面

次のようにcolor.xmlに定義を追加してみました。
色はGoogle本家のスタイルガイド
から適用しました。

<resources>

    <!-- Material -->
    <color name="primary">#4caf50</color>
    <color name="primary_dark">#388e3c</color>

</resources>



StatsuBarとActionBarの背景色がマテリアルデザインっぽくなりました。

Android Studioのコードフォーマッタを設定する

チーム開発を行う場合、フォーマッタは重要です。
メンバー全員のフォーマッタを統一しないとソース管理で痛い目にあいます。

AOSPのCodeStyleを使用する

AOSPにAndroid用のCodeStyleがアップされています。
こちらからDLしましょう。
https://android.googlesource.com/platform/development/+/master/ide/intellij/codestyles/

AndroidStyle.xmlを以下のディレクトリに格納します。
(Windowsの場合)
C:\Users\[USER_NAME]\.AndroidStudioBeta\config\codestyles

(Macの場合)
~/Library/Preferences/AndroidStudio/codestyles
Android StudioのFile->Settingsから設定を行います。



Eclipse Code Formatterを使用する

Eclipseと共存で開発をする場合、フォーマッタを統一しましょう。(ソース管理上のトラブルを防ぐため)
Pluginsから「Eclipse Code Formatter」をインストールします。




File - Settings - Eclipse Code Formatterを開いて設定を行います。




2014年7月27日日曜日

ViewFlipperの自動フリップのフリップタイミングをハンドリングする

ViewFlipperの自動フリップで、フリップタイミングをハンドリングする方法です。
ViewFlipperクラスは、フリップタイミングを直接ハンドリングするリスナーが用意されていません。
そのため、VewFlipper#getInAnimation()でインアニメーションを制御するAnimationクラスを取得し、このクラスにリスナーをセットします。


プログラムはこんな感じ
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

        View view = inflater.inflate(R.layout.fragment_flashing_card, null);
        mVewFlipper = (ViewFlipper) view.findViewById(R.id.viewFlipper1);

        mVewFlipper.setAutoStart(true);
        mVewFlipper.setInAnimation(getActivity(), android.R.anim.slide_in_left);
        mVewFlipper.getInAnimation().setAnimationListener(this);
        mVewFlipper.setFlipInterval(2000);

        return view;
    }

    @Override
    public void onAnimationEnd(Animation animation) {
    }

    @Override
    public void onAnimationRepeat(Animation animation) {
    }

    @Override
    public void onAnimationStart(Animation animation) {
    }

2014年7月3日木曜日

AOSPのl-preview branchをビルド

AOSPにてl-previewのbranchができたので、さっそくビルドしてみました。
注意点としては、次の1点のみ。
 ・OpenJDK 1.7がMUST (oracle-JDK1.7だとビルド開始できず)


Corei7、メモリ10G、VM環境でビルド時間はこんな感じです。Kitkatよりも時間がかかりました。

real 83m16.785s
user 504m10.589s
sys 56m52.913s


参考までに。