GAE/Go の GuestBook チュートリアルの Greeting データをダウンロードする
1. Remote API を有効にするhttps://cloud.google.com/appengine/docs/go/tools/remoteapi2. bulkloader.yaml のひな形を作る$ appcfg.py create_bulkloader_config --filename=bulkloader.yaml...
View ArticleMaterial Design Color メモ
Componentsalphacolorcolor resourcetext87%#000000#de000000subheader54%#000000 or primary color#8a000000hint50%#000000#80000000divider12%#000000#1f000000EditText statealphacolorcolor...
View ArticleDroidCon Montreal に行ってきました。
DriodCon Japan 開催をもくろむ mhidaka と共に視察(半分観光)として DroidCon Montreal に行ってきました。 DroidCon Montrealカナダで最初のDroidConということで、Welcome talk では Toronto じゃなくて Montreal...
View Article全画面の Toast を表示する
Gravity の FILL_HORIZONTALと FILL_GRAVITYを指定します。 private void showFullscreenToast(Context context, String message) { TextView tv = new TextView(context); tv.setText(message);...
View ArticleカスタムDrawableで複雑なプログレスを作る
ProgressBar の indeterminate にカスタムDrawableを指定すると、draw() と onLevelChange() が呼ばれ続けます。 final CustomDrawable customDrawable = new CustomDrawable(); ProgressBar progressBar = (ProgressBar)...
View Article未選択状態を持つデータをどう表現するか悩んだ話
*追記1:enum の場合について最後に追記しました。 *追記2:まずは int 型じゃねーよ、enumだろって vvakameさんに怒られたけど、もともとは、とあるプロジェクトでサーバーに意図しない値がきてるんだけど、、、みたいなことがあって、サーバーに渡す値を静的に制限するにはどうするのがいいのかな、というのが出発点だったのです。なんで最初が int かっつーと、そのときのコードが int...
View Article未選択状態を持つデータをどう表現するか悩んだ話、その2 - SharedPreferences -
前回の続きです。 1. enum 版で SharedPreferencesSharedPreferences.Editorには残念ながら putSerializable() 的なものがありません。そのため、putInt() なりを使わざるを得ません。 enum 版では・enum から int に変換して SharedPreferences に保存・SharedPreferences から取得した...
View Article状態の変更をバックグラウンドのActivityに伝える方法はどれがいいんだろう?
Activity A - リストを持つ、リストの項目には favorite ボタンがある - リストの項目をタップすると Activity B に遷移する Activity B - favorite ボタンがある このとき、Activity B で favorite ボタンの状態が変わったことを Activity A に伝えて Activity A の見た目を変えたい Activity A...
View ArticleSharedPrefenreces の値変更 + RxAndroid で状態の変更をバックグラウンドのActivityに伝える
前回のエントリ「状態の変更をバックグラウンドのActivityに伝える方法はどれがいいんだろう?」の 3) を RxAndroid を使って実装してみました。 onStart() で値をチェックするのではなく、SharedPreferences の値が true になったイベントと起動時の処理を同じストリームになるようにしてみました。 public class MainActivity...
View ArticleScrimInsetsFrameLayout を使うときは android:background を指定する
Android Design Support Library で NavigationViewが用意されましたね。ただ、すぐには移行できなかったり、NavigationView では今のものを置き換えられれない場合などもあるでしょう。 そうは言っても StatusBar 部分の処理だけでも取り込みたい、という場合 ScrimInsetsFrameLayout で包むという方法が使えます。 参考:...
View Articleandroid.support.annotation を活用する
利用するには dependencies に追加します。 dependencies { compile "com.android.support:support-annotations:22.0.2" } 参考 Improving Code Inspection with AnnotationsAnnotations in Android...
View ArticleAppCompat を継承したテーマで EditText のデフォルトスタイルを上書きするときは android:editTextStyle ではなく...
注意: appcompat-v7:22.2.0 での話です。将来 fix される可能性もあります。 AppCompat を継承したテーマで EditText のデフォルトスタイルを上書きしようとして android:editTextStyle を使うと、5系以降しか適用されないという落とし穴があります。 結論android: をつけずに editTextStyle...
View ArticleAndroid JUnit 4 形式のテストにする
InstrumentationTestRunnerは JUnit 3 しかサポートしていませんが、Android Testing Support Libraryに含まれる AndroidJUnitRunnerを使うと JUnit 4-compatible なテストを実行することができます。(JUnit 3 と JUnit 4.10 までの JUnit 4 互換) Android 2.2 (API...
View ArticleFragmentArgs 使ってみた
FragmentArgs Fragment 生成時に値を渡すには、引数付きのコンストラクタを用意するのではなく、Fragment.setArguments()で値を渡すのがベストプラクティスです。 FragmentArgs はアノテーションを付けたフィールドからFragmentのビルダークラスを生成してくれるライブラリです。 以下の内容は2015年9月7日時点の状態をもとにしています。設定...
View ArticleGoogle App Engine / Go で Google Cloud Storage に画像をアップロードする
How to upload image to Google Cloud Storage with Google App Engine / Go. この情報は2015年9月9日時点のものです。appengine.Context, context.Context 問題は過渡期のようなので今後インタフェースが変わる可能性があります。File API...
View Articleライブラリで指定された AndroidManifest の属性を置き換える
利用しているライブラリで android:allowBackup="true"が指定されているときに、自分のアプリで android:allowBackup="false"を指定するとマニフェストのマージに失敗してビルドエラーになります。 > Manifest merger failed : Attribute application@allowBackup value=(false)...
View ArticleminSdkVersion が自分のアプリより大きいライブラリを利用する
自分のアプリの minSdkVersion が 10 のときに、minSdkVersion が 14 のライブラリを利用しようとすると、以下のようなエラーがでてビルドに失敗します。 > Manifest merger failed : uses-sdk:minSdkVersion 10 cannot be smaller than version 14 declared in library...
View ArticleButter Knife のフィールドやメソッドが Lint に Unused declaration と言われないようにする方法
以下のように apt のプラグインを追加します。このプラグインを追加すると、gradle のソースフォルダとして認識される場所に Butter Knife で生成されるコードが格納されます。そのため、Butter Knife で生成されたクラスも Lint から見えるようになり、Lint が怒らなくなります。やったー。 ルートプロジェクトの build.gradle buildscript {...
View ArticleAndroidJUnitRunner で Toast や PopupWindow を表示するには
Toast、Dialog、PopupWindow など別の Window を使う操作をテストメソッド内で行うと、Handler が作れないと言われてエラーになります (PopupWindow を内包したユーティリティクラスのテストで困りました)。 例えば以下のテストを実行すると、Toast 部分で java.lang.RuntimeException: Can't create handler...
View Article