ひらい ぶらり Hi-Library

ぷろぐらみんぐについて。ときどきどうでもいいことについて。

android

AndroidTestCaseでsetUpが呼ばれた後にApplicationクラスが生成されてハマった

解決策:InstrumentationTestCaseにして、setUpメソッドで super.setUp した後にgetInstrumentation.waitForIdleSync() を呼ぶべし 期待していた動き - Appicationクラスが生成される - TestクラスのsetUpメソッドが呼ばれる - Testクラスのtestメソッドが呼…

FragmentPagerAdapterでnotifyDataSetChangedを呼んでも更新されない

結論 FragmentStatePagerAdapterを使え、でも問題はたくさんあるから油断をしてはいけない ※追記あり FragmentStatePagerAdapterを使えと言ったな、あれは嘘だ - ひらい ぶらり Hi-Library 解決する内容 FragmentStatePagerAdapterは、destroyItemでfragment…

特定の辺だけにstrokeを付ける場合の補足

【Android】特定の辺だけにstrokeをつけたい - Qiitaqiita.com こちらの記事で丁寧に書かれて居るのだけれども、Javaで書いた場合とXMLで書いた場合に微妙な差異があって、機種によってはJavaで書いた場合に意図しない挙動を起こす可能性があるので補足。 元…

manifestのproviderのandroid:authorityesにvalues/strings.xmlに定義した文字列を使うとインストールに失敗する

BuildTypeをreleaseでapeをビルドしようとしたら、lintでMissingTranslationとか出てコケた。 values-jaとか作ったら、全てのkeyがvaluesにあるものと一致しないとコケるようだ。そこはよろしくvaluesの値を使って欲しい。 どうやらこの警告は無視してビルド…

androidでfont変えると色々と弊害があるっぽい

怪奇現象が色々発生した maxLinesとか指定するとずれる なんだか2行目の文字が1行目に食い込んだりする 消える もはや表示されない。 端末によって挙動が違う 消えたり、消えなかったり、ずれたり、ずれなかったり 噂によるとheightをしてしたり、layout_gr…

androidでTextViewに埋め込みフォントを使う

結論 API Level9以降(2.3)ならCaligraphyを使う chrisjenx/Calligraphy · GitHub 疑問 マテリアルガイドラインによると、RobotoフォントとかNotoフォントを使えって書いたある。 ちょろっと調べて思い浮かんだ疑問 assetsにファイルサイズ制限なかったっけ…

Volleyで302リダレクトできなかった話

どうも、バグを生み出すプロ、しんばしさんです。 なんやて工藤! 非同期のHTTP通信ライブラリのVolleyを使用していたのですが、302リダイレクトするAPIへアクセスしたところ com.android.volley.NoConnectionError: java.io.IOException: Could not retriev…

TextViewで縦にはみ出してるかどうかを検知したい

どうもわたくしです。 TextViewの高さを超えてテキストがセットされていたら、ボタンを出したい。 ボタンを出したいんです。 こんなかんじにTextViewを超えて長文が入力されていたら ボタンを出したい。 解決編 行数 > 最大行数(TextViewの高さ / 1行あた…

Android で MD5とかSHA-256とかするのにcommons-codec使おうとしたらエラーが出た話

MD5やらSHA-256でハッシュ化したい機会ってのはよくあると思うんですが、ググるとなんでかMessageDigestクラス使って長々と記述するサンプルが多く見かける気がします。 ラップしたクラスを作ってもいいんですが、せっかくだから俺はcommons-codec使うぜ! g…

フォントサイズ自動調整TextViewをListViewで使いたい

大体皆さん "android フォント 自動" "android Textview 横幅" とかでググって、TextViewを継承したクラスの実装を見かけたと思います。 参考 http://dev.classmethod.jp/smartphone/android-font-fit-text-view/ https://gist.github.com/STAR-ZERO/2934490…

ImageViewの明度、コントラスト、彩度、色相をObjectAnimatorでアニメーションする

タイトルのようなことをしたかったんですが、そんなプロパティはなかったのでImageViewを拡張してプロパティをつけたら出来ました。 ↓のようなクラスを作って、xmlなり動的に生成するなりしたImageViewに対して操作をすれば期待した動きをしてくれる。 publi…

Android Studio を 0.8.14 にアップデートしたら「The Android SDK folder can no longer be inside the application folder.」とか言われた

こんにちはこんにちは 久しぶりにAndroid Studioを起動することになったらアップデートが来てたので、作業後にアップデートしてみることに。 なんか出た。 んー、SDKフォルダをApplicationsに置くなということらしい。詳細を見てみると本来はそういうとこに…

androidで強制的にChromeで開くリンク

<a href="intent://yahoo.co.jp#Intent;scheme=http;action=android.intent.action.VIEW;package=com.android.chrome;end ">Chromeで開く</a> このリンクを開くアプリケーションがまともな実装をしている場合に限り、http://yahoo.co.jpが開かれるっぽい。 Operadで実験してみたところ成功したけど、全てのアプリで起動するかわWebViewClientの実装によるので絶対とはいえないのが切ない…

WebViewとかで未知のSchemeに対する処理最新版(?)

androidアプリを作る際にWebViewを組み込んでアプリ内ブラウザで表示することとかよくあると思います。 そんな時にWebページの中にhoge://hugahugaみたいなURIが出てきた場合は、大体shouldOverrideUrlLoading内に @Override public boolean shouldOverrideU…

話題のKLABのPlaygroundのsoをビルドしようとして失敗した

MacでPlaygroundをandroid用にビルドしようとして微妙にコケました。 ビルド手順はこちらを参考にすると非常にわかりやすいです ブライテクノBlog 2D/2.5Dゲームエンジン Playgroundのセットアップ http://brightechno.com/blog/archives/150 NDKのパスは同…

GooglePlay で アプリを別のアカウントに移管する

「アプリを移譲することになった」 「やっぱり別のアカウントでアプリを管理したい」 ってのは割とよくある話だと思います。 こちらからどうぞ(英語必須) https://support.google.com/googleplay/android-developer/contact/dev_registration?extra.IssueT…

androidアプリ開発におけるカメラ問題に決着をつけようじゃないか 解決編

条件振り分けで取得方法を変える getContentResolver().insert()を使わない。MediaScannerConnection等を使って標準ギャラリーには反映させる。 そんな訳で、上記の具体的な解決方法を書く。 まず、getContentResolver()を使わないので、別の方法でカメラの…

androidアプリ開発におけるカメラ問題に決着をつけようじゃないか 問題編

そろそろ決着をつけようじゃないか。 鬼門鬼門ってもういい加減いいだろ。androidが発表されてから何年経ってると思ってるんだ。 情報で揃ってるだろJKwwwwwwww そんな風に思ってた時期が僕にもありました。 androidにおけるカメラから画像を取得す…

Android Studio:resource entry is already defined.

ビルド時にこんなエラーが出た。 9patchにしなければいけない画像が9patchになっていなかったので、以下の様な作業をしたら発生。 プロジェクトをリビルドしてもダメだった。リビルドってクリーン&ビルドじゃないのだろうか? hogehoge.png をリネームして …

すげえ!Android Studioで9patchの編集ができる!

プロジェクトツリーから*.9.pngファイルを参照すると、こんなエディタが開いた。 そもそもは9patchは画像をデザイナーさんに作ってもらったところ、左側に黒いピクセルがなくてビルドに失敗して「ちくしょう雑な仕事しやがって、週明けにけちょんけちょんに…

FragmentTabHost で TabWidget をBottom に配置する

非推奨になったTabHostを使えば、普通にbottomに配置出来たのですが、FragmentTabHostは何やらバグっているらしく、配置順やgravityを変更してもbottomに配置されませんでした。 どうやら既にIsuueとして報告されているようで、参照先のコメントにあるの様に…

Android4.1系 + FragmentTabHost + WebView で文字入力が出来ない

endBatchEdit on inactive InputConnection とか出て半角英数字を入力しようとすると、フォーカスが次元の彼方まで吹っ飛ぶ。 日本語入力は通る。 ( ゚д゚) 強引にInputConnectionをWebViewに渡して見ましたがダメでした。 どこかで半角英数字が入るとFocusが…

FragmentTabHost内部のFragmentでAsyncTaskLoaderを使ってたらargsが変わらない

結論:タイトルが長い 結論:onStopでgetLoaderManager().destoryLoader(id)してあげる こんにちはこんにちは 世間では何かとAsyncTaskじゃなくてAsyncTaskLoader使おうぜっていう風潮ですね。 僕もブームに乗ってAsyncTaskからAsyncTaskLoaderに乗り換えて…

width and height must be > 0 だからといって、widthやheightが実際0なわけじゃないこともある

java.lang.IllegalArgumentException: width and height must be > 0 Matrix matrix = new Matrix(); matrix.postScale(sx, sy); Bitmap.createBitmap(bmp, 0, 0, bmp.getWidth(), bmp.getHeight(), matrix, true); 良い子の諸君! エラー文にwidthとかheigh…

android2.x系だと、AnimationSetのメソッドの呼び出し順によってはアニメーションが無視される

無視という表現が正しいかわからないけれども、何も起きなくなる。ただしAnimationListernerはAnimationEndを検知する。どういう時に起きるのかというと AnimationSet animationSet = new AnimationSet(true); RotateAnimation rotationAnimation = new Rota…

AnimationListernerのonAnimationEndでViewをremoveViewするとNullPointerExceptionが起きる

タイトル通りなので、onAnimationEndの中でそのままremoveViewしてはいけない。 結論だけ言うと、Handlerを使って処理を遅延させて回避する。 @Override public void onAnimationEnd(Animation animation) { new Handler().post(new Runnable() { @Override …

androidでファイル名を指定して保存するときに使えない文字列

Linuxベースだから"/"以外は使えると思ったら、普通にwindowsで使えない奴は使えない ↓らへん <>:*?"/\|そのはずが、GalaxyS3だと普通に"?"が入ってても動いた。別のandroid4.0系では動かなかったので、別にバージョンの差では無さそう。まさかの端末固有の…

androidのIntentで日本語ファイル名を扱う時の注意点

Uri型で渡すので、SDカードとかに保存されたファイル名を渡すときは以下のような感じでエスケープしないとダメ。 public void playMusic() { Intent it = new Intent(Intent.ACTION_VIEW); Uri uri = Uri.parse("file://" + Environment.getExternalStorageD…

resumeTimers pauseTimers を使う時の注意

WebViewを使うと電池の消耗が激しい時の解決方法 を書いた後に気づいたので書きます。 電池の勝手な消費が解決したわけですが、よくわからないままに終わらせるのはよくないなーと思ったのでリファレンスを覗いてみたらこんなことが書かれてました。 pauseTi…

WebViewを使うと電池の消耗が激しい時の解決方法

androidアプリを開発していて、特に変更した覚えがないのにレビューに「電池の消費が激しい、アンインストールした」 とか書かれてたので 「今回のアップデートではWebViewの初期URLを変更しただけでそんなことがあるわけ」 あったで、実際変更は上記の通り…

正確には、android4.0で、且つ解像度が1280を超える場合らしい。

その場合はタブレット端末と認識されて、勝手に余白ができてしまうようだ。で、GlaxyS3での見栄えが良くないので、android4.0以前のものと同じにしてくれと言われた。 タブレットで見にくくなるのは良いのだろうか・・・ともかくそういうことなので、どうに…

Android→PHP Base64encodeの値を渡す

諸事情でandroidからintentを使って標準ブラウザを起動して、GETパラメタにBase64でエンコードした値を サーバ側(PHP)で受け取って、Base64でデコードしなきゃいけなかったのですが、出来なかったのでメモ。結論から言うと PHP側の問題 GETなりPOSTなりでB…

preference でintentを飛ばしたい

preferenceは何もxmlだけで書かなくても、intentで飛ばすことができるらしい。 僕は設定画面からOuth認証させたかったので、通常のxmlだけでは定義できないので普通のActivityに飛ばしたい。で、注意したいのがintentを使用するときにtargetClassはパッケー…