クリーンインストールしたYosemiteにAndroidStudioをインストール
Android Studio がベータ版でなくなって少し経ったので、環境をキチンと整えるために MacBook Air に OS 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 でタブの幅を均等に割り付ける
hasStableIds の返り値をセット
- ドラッグ中にドラッグしているセルの下にあるセルがアニメーションしてくれない。
- ドロップした時に移動したセルが元あった場所にセルが表示されない。
という感じ。
最初、デバッガで動作を追いながらなんでアニメーションしないのか探っていたのだけど、とりあえず 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 は、前にも書いたけど下記のものを使っている。
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(ロリポップ)がリリースされて、過去のアプリをロリポップ対応しようとしてハマったことのメモ。
とりあえず今までのメモは以下。
今回は、SDK と Google Play Service の関係の話。