2015-05-01から1ヶ月間の記事一覧
proguard-project.txtの設定の一部。 # Enumをkeepする対応 -keep public class * extends java.lang.Enum # クラスのメンバとして定義されているEnumをKeepする対応 -keepattributes InnerClasses -keep public enum ParentClass$** { **[] $VALUES; public…
一度removeしてから好きな位置にaddViewする。例は以下。 navigationBar.removeView(orderModeCheckbox); if (orderModeCheckbox.isChecked()) { navigationBar.addView(orderModeCheckbox, navigationBar.getChildCount()); // 一番最後に追加 } else { nav…
配列のequalsはObject.equalsをオーバーライドしないため、すべての同じIndexの要素が等価である場合のみtrueになる。 ArrayListはすべての同じIndexの要素のequalsメソッドの結果がtrueであればtrueになる。 MapのKeyに配列を使ってしまってハマった。。Arr…
現在の向きが縦でも横でも固定したいという場合。API Levelが18以上であれば、以下を実行するだけでいい。 setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LOCKED); 17以下であれば以下のようにする。 switch (((WindowManager) getSystemService…
原因はGoogle Repository SDKがダウンロード出来ていないこと。 SDK managerからGoogle Repositoryの最新版をダウンロードすると直る。 参考: Gradle unable to resolve Play services dependency
border.xmlのような名前で以下をXMLに定義する。 <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" > <solid android:color="#ffffff" /> <stroke android:width="1dip" android:color="#4fa5d5"/> </shape> あとはこれをbackgroundに設定すればよい。
例えば、xmlでTableLayoutにandroid:stretchColumns="0,2"を設定すると1列目と3列目の幅をできる限り広くしてくれる。 が、セル内のTextView等の幅が変化すると1列目と3列目の幅が同じでなくなってしまう。 これは、android:layout_width="0dp"をすべてのstr…
チェックボックスをタップした時にチェックを付けさせないとか意味分からないと思うが、 バリデーションエラーになった場合などでタップしてもチェックを付けたくない場合がある。 そういう場合はonCheckedChangedイベントの中でsetChecked(false)を実行する…
修飾子は順序が決まっているので、その順序で付けないといけない。 例えば、drawable-hdpi-landはだめでdrawable-land-hdpiとしないといけない。 参考: android providing different drawable resources for orientations http://developer.android.com/gui…
API level 15以下と16以上の両方をサポートする場合は以下のように分岐させないといけない。 Utilクラスにこのメソッドを定義しておくとよい。 public static void setBackground(View view, Drawable drawable) { if (Build.VERSION.SDK_INT >= Build.VERSI…
まとめて出力する場合は以下のように書けば良い comannd 1>result.txt 2>&1 2>が標準エラー出力なんだけど、これを1>の標準出力にリダイレクトするという感じかな。 参考: 標準出力・標準エラー出力とリダイレクト:サンプル集 - Miuran Business Systems
原因はplay-servicesでAttribute “theme”が定義されているため。 compile 'com.google.android.gms:play-services:5.0.89' を compile 'com.google.android.gms:play-services:6.1.+' に変更すると直る 参考: Lollipop AppCompat-v7 21 - Attribute "theme"…
原因はcompileSdkVersionで指定しているバージョンより古いバージョン用のsupport libararyを使用していたため。 compile 'com.android.support:appcompat-v7:20.+' を compile 'com.android.support:appcompat-v7:21.+' に修正すると直った。 参考: Androi…
Cookieを永続化することになったので調べた。android-async-httpのPersistentCookieStoreを使うと簡単に永続化できそうだけど、そのためにライブラリをインストールするのはイヤだったので自作しました。 CookieクラスはSerializableを継承していないので、S…
ImageButtonではなく、ImageViewを使わないといけない。これは罠だ。。 画像を縦横比を保ったまま、横幅を画面いっぱいまで拡大するには、以下の設定にしてandroid:srcかsetImageBitmapメソッドで画像を渡せばよい。
ImageButtonを使う。 ImageButton#setImageBitmapにBitmapオブジェクトを渡せば良い。 参考: How can I set a bitmap on button?
原因はエミュレータのWIFIがOFFになっていたことだった。しょぼい。。 機内モードにする時に間違ってWIFIをOFFにしてしまっていたっぽい。皆さんもお気を付けください。
NumberFormatを使用する。コード例は以下。 NumberFormat.getNumberInstance(Locale.US).parse("2,000").intValue() 参考: How to parse number string containing commas into an integer in java?
原因はCharlesの不具合?バージョンヒストリにSocket closedが誤って検出されるよという記載があったので最新版をインストールしたら直った。 Version History • Charles Web Debugging Proxy
画面を時計回りに90度回転して横向きにすると画面が逆さまになる不具合が発生した。原因はmanifestで横画面のactivityにandroid:screenOrientation="landscape"を設定していることだった。 landscapeは反時計回りに90度回転して横向きにした向きのことで、時…
motionEvent.getX()はタップされたViewの座標系での座標だが、これを親Viewの座標系での座標に変換したい場合は以下のように計算すれば良い。 view.getLeft() + motionEvent.getX() iOSではconvertPoint:toView:で任意のViewの座標系に変換出来るんだけど、A…
情報量の単位としてオクテットが使われることがあるけど、バイトと何が違うんだろうと思ったので調べてみた。 以下引用。 実は、オクテットが必ず8ビットであるのに対し、バイトが何ビットを表すかは決まっていません。バイトとは、欧文の1文字を表す情報量…
以下コマンドで比較できる。 cmp file1 file2 とりあえず同じファイルかどうかを確認するならこれで十分。 参考: Mac Terminal Command -【cmp】 2つのファイルの中身が同じかどうか
原因はインストール済みのアプリと上書きインストール使用としているアプリの証明書が違うため。 証明書の確認をするために実機からapkを抜き出したり、apkの署名やKeystoreの情報を確認したそのときのコマンドは以下。 Android 実機から apk を探して取得す…
Android Studioの右上にある「Gradle」のタブから、Gradleタスクを右クリックしてDebug実行するとbuild.gradleをDebug実行できるという情報があったが、build.gradleに貼ったBreakpointで止まらず。。なぜだ。 参考: AndroidStudioでgradleの実行時にDebugg…
以下のようにbuildTypeのsigningConfigにsigningConfigsの設定のうち使用するものを渡せば良い。productFlavorの場合も同様。 signingConfigs { debug { storeFile file("conf/debug.keystore") storePassword "android" keyAlias "androiddebugkey" keyPass…
ScheduledExecutorService#scheduleAtFixedRateを短い間隔で何度も実行した場合、各タスクは並列に実行するのかを調べた。 結果、並列に実行はしないことがわかった。タスクはQueueに積んで一つずつ実行する。 参考: Does scheduleAtFixedRate call a diffe…
build.gradleやgradle.propertiesはSCMにコミットするのでパスワード等は書きたくない。 なのでlocal.propertiesにsigningConfigsの情報を格納することにした。 コードは以下。 signingConfigs { // 署名情報はlocal.propertiesに記述すること。 Properties …
以下コマンドで調べられる。 keytool -list -keystore /android.keystore.path 出力される文字列のうち、どの部分がkeyAliasに当たるかは下記参照。 もしandroid.keysotreのkey aliasを忘れてしまったなら - Qiita
原因はライブラリへの参照を、通常のjarを取ってくる形式のものからプロジェクト参照に変更した時に、参照先のパスを間違えていたため。 具体的にはsettings.gradleに以下を追記した。 include ':library' project(':library').projectDir = new File(settin…