Android

指に追従するアニメーション

「Lollipop のステータスバーを引っ張り出した時に、ステータスバーのアイコンが動いたり、設定アイコンがくるくるってなるけど、どうやってるの?」心の声「知らんがな(´・ω・`)ggry」ggっても出てこなかった。確かに、どうやっているんだろう。 調…

TestCaseのassetsを使う

AndroidのTestCaseのassetsを使いたい。 解決 AndroidTestCaseを継承するテストケースの場合 リフレクションを使ってテストケースのContextを参照する。参考記事 http://ikkandou.blogspot.jp/2011/08/androidtestcase.html InstrumentationTestCaseを継承す…

Android WebView の進化と実装

Android WebView は Android のバージョンごとにブラウザエンジンが異なる。 Android 4.1~4.3(JellyBean)まで: WebKit Android 4.4(KitKat)から: Chromium ※Chromium のレンダリングエンジンは Blink であり、Blink は WebKit をベースとしている。さら…

adbによるログ&キャプチャ&録画

ファイル名の末尾に「_年-月-日_時-分-秒」を付けている。お好みに合わせて。 logcat.bat ログを取得するバッチ。 @echo off set time2=%time: =0% set time3=%date:~-10,4%-%date:~-5,2%-%date:~-2,2%_%time2:~0,2%-%time2:~3,2%-%time2:~6,2% @echo on adb…

レイアウトにまつわる本当にあった怖い話

窓の外は息が凍るほど寒く、開発室はPCとサーバーの熱気で汗ばむほど暑かった。私の住む日本の北にある街から遠く離れた海外の会社からソースが送られてきた。慣れた手つきで早速ソースを解凍してビルドし、手元に並ぶスマートフォンのひとつにインストール…

ActionBarのTabの高さは48dpまで(JellyBean以降)

たとえば、アクションバーのタブの高さを設定したくて、こんなコードを書いたとする。 <style name="Theme.MyTheme" parent="android:style/Theme.Holo.Light"> <item name="android:actionBarTabStyle">@style/MyActionBarTabStyle</item> <item name="android:actionBarSize">100dp</item> </style>

テーブル名の一覧とテーブル定義を表示するコマンド

たまにしか使わないと忘れるのでメモ。 コマンド 説明 .tables テーブル名の一覧を表示する .schema <テーブル名> テーブル定義を表示する .exit sqlite3を終了する sqlite3 コマンドにより db ファイルを開く。 root@generic:/ # sqlite3 /data/data/com.an…

パッケージ一覧を表示する

シェルからpmコマンドを実行する。 adb shell pm list packages 実行結果 C:\>adb shell pm list packages -f package:/system/app/SoundRecorder.apk=com.android.soundrecorder package:/system/app/SdkSetup.apk=com.android.sdksetup package:/system/pr…

起動されているアクティビティを特定する

ソースは手元にあるが設計書が手元にない、なんてことはよくある話。 私の尊敬する某プログラマが「コードとは設計である」という発言をしていて、 然なりと思うのだけれど、設計に足りうるコードになっていればの話。 それでも設計書がなくてもアクティビテ…

コマンドプロンプトからSQLコマンドを実行する (Windows)

バッチファイルをつくっておくと便利。 SQLコマンドはダブルクォーテーションで囲む。SQLコマンド内の文字列はシングルクォーテーションで囲む。 adb shell sqlite3 <dbファイル> "SQLコマンド" ex. 未読の不在着信を表示 adb shell sqlite3 /data/data/co…

ViewPagerのキャッシュする画面数を変更する

ViewPagerの生成時に複数のページを生成してキャッシュしておきたい。 解決 // 2ページ生成 mViewPager.setOffScreenPageLimit(2); 説明 一般的に OffScreen とは、生成されていて描画されていない画面のことを指すが、ViewPager では生成されていないページ…

ViewPagerのイベントをハンドルする(アニメーション)

検証 ViewPager.PageTransformer を継承したコードを書いて、動作を検証する。 mViewPager.setPageTransformer(false, new ViewPagerTransformer()); private class ViewPagerTransformer implements ViewPager.PageTransformer { private static final Stri…

ViewPagerのイベントをハンドルする(ページ移動)

検証 ViewPager.SimpleOnPageChangeListener を継承したコードを書いて、動作を検証する。 mViewPager.setOnPageChangeListener( new MyOnPageChangeListener()); private class MyOnPageChangeListener extends ViewPager.SimpleOnPageChangeListener { pri…

LongSparseArray

たとえば、特定の機能を高速化するために、あるテーブルのクエリ結果をキャッシュしたいとする。 無為にクエリ結果をキャッシュするのは避けるべき。 キャッシュすると、データベースのACID特性が損なわれ、ヒープを大量に消費する。 こういうとき、HashMap…

Activity#runOnUiThread(Runnable)のススメ

たとえば、非同期処理からUIスレッドに描画したくて、こんなコードを書いたとする。 private mHandler = new Handler(); private void sayHello() { mHandler.post(new Runnable() { @Override public void run() { Toast.makeText(this, "Hello?", Toast.LE…

assetのzipファイルを展開する

起動時に assets の tessdata.zip を展開する。■展開元 tessdata.zip■展開先 /data/data/com.example.android.tesseract/fileszipファイルをそのまま展開するので、 tessdata.zip tessdata eng.traineddata という構成になっていること。 MainActivity.java …

Handlerのリーク警告を解決するには

たとえば、こんなコードを書いたとする。 「Handlerはstaticにしないとリークするよ!」と注意される。 This Handler class should be static or leaks might occur 解決 (a) static内部クラスにする 単純にstatic内部クラスに置き換えることができるのなら…

Androidソースの取得

Ubuntu に git をインストールし、Androidソースを取得したい。 Ubuntu に git と curl をインストール $ sudo apt-get install git-core curl Androidソースを取得(同期) 公式の手順に従って、Androidソースを取得。2時間半以上。http://source.android.com…