クリーンインストールしたYosemiteにAndroidStudioをインストール

Android Studio がベータ版でなくなって少し経ったので、環境をキチンと整えるために MacBook AirOS X 10.10.1 Yosemite をクリーンインストール
更に Android Studio 1.0.1 をインストールして、SourceTree もインストールした時の手順。


内容的には JVM をどうしますか?って話。

LinearLayout に入れるので layout_weight で OK

ググったらいつもの stackoverflow でサクっと答えが見つかった。

タブのストリップ(SlidingTabStrip)は LinearLayout を継承して作られている。
なので、その中に入れる個々のタブの layout file(上の回答では custom_tab.xml)で、 layout_width=0 にして layout_weight=1 にすれば全てのタブが同じサイズに設定される。


因にタブのストリップにカスタムのタブを入れるの(上の回答の java のコードの部分)は SlidingTabsBasicFragment.java の onViewCreated で行なう。
SlidingTabLayout には setCustomTabView が用意されているのでこれを使っている。


できあがりはこんな感じ。
 

SlidingTabBarLayout でタブの幅を均等に割り付ける

Android 5(ロリポップ)になって、それまでタブを実現するのに使っていた ActionBar.NAVIGATION_MODE が deprecated になってしまった!

現在タブを実現するのにロリポップで推奨されているのは SlidingTabLayout。
2種類サンプルが用意されている。

で、早速 SlidingTabsBasic の方を試してみたのだけど、タブの数が少ないと小さく左寄せになってしまう…。
今までのアプリと同じ見た目にするには均等割付けにしたいのに!


というわけで、今回は SlidingTabsBasic でタブを均等割付けにする方法。

hasStableIds の返り値をセット

実際の Android 5(ロリポップ)での動作は

  • ドラッグ中にドラッグしているセルの下にあるセルがアニメーションしてくれない。
  • ドロップした時に移動したセルが元あった場所にセルが表示されない。

という感じ。


最初、デバッガで動作を追いながらなんでアニメーションしないのか探っていたのだけど、とりあえず VISIBLE/INVISIBLE がおかしいっぽいのがわかった(気がした)。
そこまでやって、なんとなくググってみたら…答えが見つかった!

というわけで、StableArrayAdapter の hasStableIds の返り値を API 20 未満と API 20 以上で変えれば問題解決らしい。
実際のコードはこんな感じ。

@Override
public boolean hasStableIds()
{
    return android.os.Build.VERSION.SDK_INT < 20;
}

これは DynamicListView の方だけど、DynamicGrid の方も同じ。
AbstractDynamicGridAdapter の hasStableIds を修正すれば問題は解決する。

Android 5(Lollipop)でドラッグ&ドロップできるGrid/ListView

Android でドラッグ&ドロップできる ListView や GridView は、前にも書いたけど下記のものを使っている。

で、今回は Android 5(ロリポップ)でこのライブラリを使ったらうまく動かなかったので修正する方法をメモ

Error:Attribute "theme" has already been defined

前回で gradle さんからのエラーは通り抜けた。
けど、今度はビルド時にこんなエラーが…。

/Users/paraches/AndroidStudioProjects/testproject/app/build/intermediates/exploded-aar/com.google.android.gms/play-services/5.0.89/res/values/wallet_colors.xml

Error:Attribute "theme" has already been defined

wallet_colors.xml で定義している theme は既に定義されているって言われても…。
ちなみに wallet_colors.xml はこんなん。

<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright 2014 Google Inc. All Rights Reserved. -->
<resources>
    <!--
         Wallet colors to support consistent Wallet fragment holo dark UI in client application
         regardless of the theme and device type
    -->
    <color name="wallet_bright_foreground_holo_dark">#fff3f3f3</color>
    <color name="wallet_dim_foreground_holo_dark">#bebebe</color>
    <color name="wallet_dim_foreground_disabled_holo_dark">#80bebebe</color>
    <color name="wallet_dim_foreground_inverse_holo_dark">#323232</color>
    <color name="wallet_dim_foreground_inverse_disabled_holo_dark">#80323232</color>
    <color name="wallet_bright_foreground_disabled_holo_light">#ffb2b2b2</color>
    <color name="wallet_bright_foreground_holo_light">#ff000000</color>
    <color name="wallet_hint_foreground_holo_light">#808080</color>
    <color name="wallet_hint_foreground_holo_dark">#808080</color>
    <color name="wallet_highlighted_text_holo_light">#6633b5e5</color>
    <color name="wallet_highlighted_text_holo_dark">#6633b5e5</color>
    <color name="wallet_holo_blue_light">#ff33b5e5</color>
    <color name="wallet_link_text_light">#0000ee</color>
</resources>

で、いつもの stackoverflow で見つけたのがこれ。

この中の以下の回答がビンゴ!

just use latest (21) 
appCompat and
google play services library

自分の場合、google play service library が 5.0.89 で最新(今?は 6.1.71)でなかった。
というわけで、build.gradle をこんな感じに変更。

//    compile 'com.google.android.gms:play-services:5.0.89'
    compile 'com.google.android.gms:play-services:6.1.71'

これで無事、ビルドできました!

Android5.0ロリポップのSDK使ってハマったこと

Android 5.0(ロリポップ)がリリースされて、過去のアプリをロリポップ対応しようとしてハマったことのメモ。
とりあえず今までのメモは以下。

今回は、SDKGoogle Play Service の関係の話。