なんて表現していいかわからないがこんな感じの円を切り取ってつくる
2013/12/15
2013/12/05
TextView の フォントを変えると中国っぽさがでる。フォントによっては・・・。
端末のフォントが気に食わないことも多々あるかと思います。そこで TextView フォントを変えましょうということに。ただ普通のフォントがいいのでいいものないかなーと探していたら、Android SDK のなかにフォントが入ってた。ソレを使ってみます。
/path/to/sdk/platforms/android-[xx]/data/fonts/
にたくさん入ってます。
※ [xx] はバージョン番号
/path/to/sdk/platforms/android-[xx]/data/fonts/
にたくさん入ってます。
※ [xx] はバージョン番号
2013/11/30
Android で隙間なく Button を並べる。
ボーダー付きのカスタムボタンをびっちり隙間なく並べると、カッコ悪い。連続したボーダーがあるもんだからボーダーが太くなる。こんな感じ。

結論からだと。ボーダーは定義しないで、隙間開けて背景色を見せることでボーダーっぽく見せる。なんか昔のhtmlみたいだ・・・。
なんやかんやでこうなる。一番上のはボーダーありだから太い箇所がある。
縦線だけ、ヨコ線だけ、あと最初と最後の要素だけ角丸も。角丸がちょっと微妙かも・・・。内と外の radius がなかなかビッタリいかない。悩みどころ。まあ許容範囲内?

もうちょっとスマートな方法ないものかしら?
style="?android:attr/buttonBarStyle"
style="?android:attr/buttonBarButtonStyle"
あたりをちゃんと理解すればいいのかな?
とりあえず今回のサンプルプロジェクトは githunb にあげておきます。
drawable と layout の中身見ればまあそれなりに。

結論からだと。ボーダーは定義しないで、隙間開けて背景色を見せることでボーダーっぽく見せる。なんか昔のhtmlみたいだ・・・。
なんやかんやでこうなる。一番上のはボーダーありだから太い箇所がある。
縦線だけ、ヨコ線だけ、あと最初と最後の要素だけ角丸も。角丸がちょっと微妙かも・・・。内と外の radius がなかなかビッタリいかない。悩みどころ。まあ許容範囲内?

もうちょっとスマートな方法ないものかしら?
style="?android:attr/buttonBarStyle"
style="?android:attr/buttonBarButtonStyle"
あたりをちゃんと理解すればいいのかな?
とりあえず今回のサンプルプロジェクトは githunb にあげておきます。
drawable と layout の中身見ればまあそれなりに。
2013/11/15
2013/11/08
DialogFragment のイベントを Activity とか Fragment に伝えたい。
削除しますか?「はい/いいえ」の確認ダイアログ出して、「はい」したらもとの画面からも消えてるみたいな。ダイアログのイベントを元々の画面伝えたい。そんな感じのよくある話。
DialogFragment になにか渡したいときは Fragment の特徴である DialogFragment#setArguments() で渡さないといけない。でもリスナー渡したいときは一筋縄ではいかない。DialogFragment#setOnDoSomethingListener() なんかを生やしても大人の事情でダメ。ここでこうやってみる。
まずはなんにせよ Listener を作る。
こんな感じ。
Activity にリスナーを implements するの忘れない。Dialog 側は onAttach(Activity activity) をオーバーライドする。ライフサイクルに組み込まれてるこのメソッドでは Activity が渡されるので、そのアクティビティが Listener を implements してるかチェックできる。なので DialogFragment#setArguments() で渡さなくてもいい。
こんな感じ。あとは必要なところでthis.mOnDialogButtonClickListenerのメソッド使えばいい。
DialogFragment にいつもの newInstance() を生やす。ここで引数に Fragment をとるようにして、DialogFragment#setTargetFragment() を使って Fragment を保持。必要なときに DialogFragment#getTargetFragment() から Fragment を取ってきてリスナーにキャストして使う。ちょっと回りくどい。
こんな感じでいいんじゃまいか。
DialogFragment になにか渡したいときは Fragment の特徴である DialogFragment#setArguments() で渡さないといけない。でもリスナー渡したいときは一筋縄ではいかない。DialogFragment#setOnDoSomethingListener() なんかを生やしても大人の事情でダメ。ここでこうやってみる。
まずはなんにせよ Listener を作る。
こんな感じ。
Activity に通知する場合。
Activity にリスナーを implements するの忘れない。Dialog 側は onAttach(Activity activity) をオーバーライドする。ライフサイクルに組み込まれてるこのメソッドでは Activity が渡されるので、そのアクティビティが Listener を implements してるかチェックできる。なので DialogFragment#setArguments() で渡さなくてもいい。
こんな感じ。あとは必要なところでthis.mOnDialogButtonClickListenerのメソッド使えばいい。
Fragment に通知する場合。
DialogFragment にいつもの newInstance() を生やす。ここで引数に Fragment をとるようにして、DialogFragment#setTargetFragment() を使って Fragment を保持。必要なときに DialogFragment#getTargetFragment() から Fragment を取ってきてリスナーにキャストして使う。ちょっと回りくどい。
こんな感じでいいんじゃまいか。
2013/11/06
DialogFragment#dismiss() で NullPointerException がたまにでる。
「たまにでる」ここぽいんと。
ローディングのくるくるダイアログとか DialogFragment とかって出すことは、まあよくあると思う。そんな感じで出してたら NullPointerException でた。
こんな感じのとこ。
いやいや、null じゃなければって言ってるでしょ?どうも DialogFragment の中で何かが null っぽい(例外メッセージ忘れた)なので、こう変えた。
TAG を指定して生成、消すときも TAG 指定で取得、fragment が帰ってくるから一応 null チェックとそいつが DialogFragment かどうかを見て、dismiss() 呼び出す。これで一応 NullPointerException はなくなりました。ここらへんどうなんだろうかっていうのはある。ドキュメント見てもshow() の例は書いてるけど dismiss() の例もないものね。
こんなかんじの例外でした。
ローディングのくるくるダイアログとか DialogFragment とかって出すことは、まあよくあると思う。そんな感じで出してたら NullPointerException でた。
こんな感じのとこ。
いやいや、null じゃなければって言ってるでしょ?どうも DialogFragment の中で何かが null っぽい(例外メッセージ忘れた)なので、こう変えた。
TAG を指定して生成、消すときも TAG 指定で取得、fragment が帰ってくるから一応 null チェックとそいつが DialogFragment かどうかを見て、dismiss() 呼び出す。これで一応 NullPointerException はなくなりました。ここらへんどうなんだろうかっていうのはある。ドキュメント見てもshow() の例は書いてるけど dismiss() の例もないものね。
追記
12-03 17:57:12.331: E/AndroidRuntime(5279): java.lang.NullPointerException
12-03 17:57:12.331: E/AndroidRuntime(5279): at android.support.v4.app.DialogFragment.dismissInternal(DialogFragment.java:184)
12-03 17:57:12.331: E/AndroidRuntime(5279): at android.support.v4.app.DialogFragment.dismiss(DialogFragment.java:155)
こんなかんじの例外でした。
2013/07/21
Android でクラスを作るときに TAG も一緒につくる。
Log.d(TAG, "hogehoge")
とか何かと物入りな TAG という代物。
クラスを作成するたびに
private static final String TAG = "hoge";
とかやっていたけど、まあめんどいし忘れるし。
うまいことできんかと思ったらテンプレート機能が Eclipse さんには備わっておる。
とか何かと物入りな TAG という代物。
クラスを作成するたびに
private static final String TAG = "hoge";
とかやっていたけど、まあめんどいし忘れるし。
うまいことできんかと思ったらテンプレート機能が Eclipse さんには備わっておる。
2013/05/19
Eclipse で Gradle で Android する。
なんか Maven でこの前同じようなの書いてた気がするが、Maven は諦めた。XML の設定が慣れない・・・・。 Gradle は Groovy らしい。Groovy よくわかってない。
どうも Android のビルドツールは Gradle になるようだ。Android Studio のビルドツールは Gradle。ant が何かもよくわかってないのに!そして ActionBarSherlock も Gradle に対応したらしいし、ADT 22 から Gradle プロジェクトにエクスポートもできるようですしとりあえず触ってみる。
どうも Android のビルドツールは Gradle になるようだ。Android Studio のビルドツールは Gradle。ant が何かもよくわかってないのに!そして ActionBarSherlock も Gradle に対応したらしいし、ADT 22 から Gradle プロジェクトにエクスポートもできるようですしとりあえず触ってみる。
2013/05/16
Eclipse ADT 22 のバージョンアップでは Android SDK Manager のアップデートは 2 回する。
Android Studio が発表されたり、そんななか ADT もバージョンアップして、おもむろにカジュアルにバージョンアップした。そしたらエラーだらけで大変なことに。
2013/04/19
ViewPager に区切りを追加する
ViewPager でページング作ってスワイプ楽しいです。ただ、単色の背景が続くとスワイプしたのかどうかがわからんくなってくる。なにげに Google Play のアプリを見てたらページ間に仕切りがついていた。なにそれ欲しい。
2013/04/12
いつか使いたい!!! Android 用ライブラリ 24 個
有名ドコのアプリのヘルプなんかをチェックして使用されているライブラリ、及び Github 探索して良さげなライブラリをまとめてみました。今すぐ使いたいものから、これ使えるのか?というものまで様々ですが、せっかくあるもの。すごい人達のゴイスーなものでちょっとでも楽したいものです。
とりあえずアルファベット順で。簡単な説明もつけたので参考にしてください。というか触ってないのも多いので各自ぜひともお試しください。ちなみに依存関係は深く確認してません。また、ライセンスについては現時点 2013-04-11 のものとなります。使用の際は都度確認くだし。
とりあえずアルファベット順で。簡単な説明もつけたので参考にしてください。というか触ってないのも多いので各自ぜひともお試しください。ちなみに依存関係は深く確認してません。また、ライセンスについては現時点 2013-04-11 のものとなります。使用の際は都度確認くだし。
もくじ
- ACRA
- ActionBarSherlock
- AndroidAnnotations
- Android Asynchronous Http Client
- android-gpuimage
- android-mapviewballoons
- android-query
- Android-Universal-Image-Loader
- Android-ViewPagerIndicator
- Apache Commons
- DiskLruCache
- facebook-android-sdk
- GT-FaceSearch
- google-gson
- guava-libraries
- libgdx
- NineOldAndroids
- PullToRefresh
- oauth-signpost
- RoboGuice
- SlidingMenu
- SmartImageView
- Twitter4J
- zxing
2013/04/09
画像の切り抜き(トリミング)なら BitmapRegionDecoder が超便利
Android で画像を読み込むのは結構厄介。一つの ImageView に読み込むならそんなに悩まないけど、 ListView やら GridView やらで画像を扱うとすぐ OutOfMemory って怒られる。限られた資源、守りたいですね。
基本は BitmapFactory.Options.inJustDecodeBounds = true にして、画像の情報だけを とって BitmapFactory.Options.inSampleSize を適切にしてあげて全体を無難に読み込む。そうじゃなくて、大きな画像の一部を切り抜いてもいいんじゃないかと。そんな画像切り抜き BitmapRegionDecoder クラスというのがあります。
2013/01/29
Android でカメラ撮影後メンバ変数が空になる。
理由はわかっていたんです。
カメラから戻ってくるときに onActivityResult が呼ばれるんですが、
そのまえに onCreate() が呼ばれている。要するに Activity が再生成されているから、
カメラ呼び出し前にメンバ変数セットしていようとも、もろともいなくなってしまったと。
以前にこんなのを書きました。
Android でカメラかギャラリーから画像を読み込んでトリミングして表示するサンプル
ただここに盲点が有りました。
Samsung Galaxy シリーズという盲点がぁがぁ・・・!!(大げさ)
※2013/01/30 21:33 追記
Google+ でご指摘頂きました。
Activity が破棄され、メンバ変数が初期化されてしまうような場合、
Activity#onSaveInstanceState(Bundle outState) で Bundle に メンバ変数として保持していた値を put() 。
その後復帰後に Activity#onRestoreInstanceState(Bundle savedInstanceState) で Bundle から 取り出して再度メンバに設定してあげるようです。
Activity のライフサイクル大事!!
ご指摘ありがとうございます!!
カメラから戻ってくるときに onActivityResult が呼ばれるんですが、
そのまえに onCreate() が呼ばれている。要するに Activity が再生成されているから、
カメラ呼び出し前にメンバ変数セットしていようとも、もろともいなくなってしまったと。
以前にこんなのを書きました。
Android でカメラかギャラリーから画像を読み込んでトリミングして表示するサンプル
ただここに盲点が有りました。
Samsung Galaxy シリーズという盲点がぁがぁ・・・!!(大げさ)
※2013/01/30 21:33 追記
Google+ でご指摘頂きました。
Activity が破棄され、メンバ変数が初期化されてしまうような場合、
Activity#onSaveInstanceState(Bundle outState) で Bundle に メンバ変数として保持していた値を put() 。
その後復帰後に Activity#onRestoreInstanceState(Bundle savedInstanceState) で Bundle から 取り出して再度メンバに設定してあげるようです。
Activity のライフサイクル大事!!
ご指摘ありがとうございます!!
2013/01/25
Chrome for Android の USB ウェブデバッグでスマフォWEBサイトをデバッグする
Android 端末にインストールした Chrome を通して、
PC 側の Chrome で WEBページのデバッグができますよと。
試してみました。
用意。
まあぶっちゃけ ココ を見てしまえば終わりなんですが、
Chrome は両方にインストール済として話を進める。
にチェック。日本語のメニュー項目名は違うかも。そして 4.2 以上の端末は隠しコマンド的なのなにそれこわい。
そして、Chrome の[設定] -> [デベロッパーツール] -> [USB ウェブ デバッグを有効化] にチェックを入れておく。
アクセスすると、Android の Chrome で開いているタブ一覧が出てくるので、好きなのクリック。PC 側の Chrome で デベロッパーツールが開くのでよしなにします。
Enjoy!
※404 的なことになったら
ヽ(´Д`;)ノアゥ...
https://chrome.google.com/webstore/detail/firemobilesimulator-for-g/mkihbloiacgiofaejgagokalpeflnmbe?hl=ja
PC 側の Chrome で WEBページのデバッグができますよと。
試してみました。
用意。
- Android 端末。
- Chrome (PC側もAndroid側も)
- Android SDK
まあぶっちゃけ ココ を見てしまえば終わりなんですが、
Chrome は両方にインストール済として話を進める。
Android SDK と Android SDK Platform-tools の準備。
とりあえず Android SDK をダウンロードして任意の場所に展開。 ~/Library/android-sdk-macosx (以下 SDK_PATH)な感じで僕は置いてる。SDK_PATH/tools/androidを実行するとなんか (Android SDK Manager) 出るので、Android SDK Platform-tools をインストールする。SDK_PATH/platform-tools っていうディレクトリができてるはず。
Android 端末の設定。
SDK ダウンロードしてる間にでも Android 側の設定をしときます。OSのバージョンが・・・- 3.2 以下:[設定] -> [アプリケーション] ->[開発者向けオプション] -> [USBデバッグ]
- 4.0 以上:[設定] -> [開発者向けオプション] -> [USBデバッグ]
- 4.2 以上:[設定] -> [この端末について] -> [ビルド番号]を 7回タップ -> 画面戻って戻って[開発者向けオプション] -> [USBデバッグ]
にチェック。日本語のメニュー項目名は違うかも。そして 4.2 以上の端末は隠しコマンド的なのなにそれこわい。
そして、Chrome の[設定] -> [デベロッパーツール] -> [USB ウェブ デバッグを有効化] にチェックを入れておく。
それでは・・・
Android と PC を USBでつなぐ。adb コマンド叩く (PC 側)
./SDK_PATH/platform-tools/adb forward tcp:9222 localabstract:chrome_devtools_remote
* daemon not running. starting it now on port 5037 * * daemon started successfullyって出たらOK。
Chrome でアクセス (PC 側)
http://localhost:9222
アクセスすると、Android の Chrome で開いているタブ一覧が出てくるので、好きなのクリック。PC 側の Chrome で デベロッパーツールが開くのでよしなにします。
Enjoy!
※404 的なことになったら
SDK_PATH/platform-tools/adb kill-serverからの
./SDK_PATH/platform-tools/adb forward tcp:9222 localabstract:chrome_devtools_remoteをお試しくだしあ。
ただ・・・
- Android 標準ブラウザで使えない。
- 結局は端末依存とかあるし、やっぱり該当の機種がないとアレ。
- だったら、Chrome でユーザーエージェントいじったほうが早くね?
ヽ(´Д`;)ノアゥ...
結論
FireMobileSimulator すごい。https://chrome.google.com/webstore/detail/firemobilesimulator-for-g/mkihbloiacgiofaejgagokalpeflnmbe?hl=ja
2013/01/21
Eclipse にて @Override アノテーションで must override a superclass method と怒られた。
わかっていたはずなのに、無駄にハマった。
忘れないために、自分で記録しておく。
こんなかんじで must override a superclass method と怒る Eclipse さん。
これはコンパイラのレベル が 1.5 になっているから。Android 開発の場合は 1.6 に変更します。
[command + ,] で [Preferences] を開いて、
[Java] -> [Compiler] を開く。
[Compiler compliance level] を 1.6 に変更。
これで直る。
エラーが消えなかったら、プロジェクトのクリーンをしてみる。[Project] -> [clean]
ん?これって昔書いたっけ?
忘れないために、自分で記録しておく。
こんなかんじで must override a superclass method と怒る Eclipse さん。
これはコンパイラのレベル が 1.5 になっているから。Android 開発の場合は 1.6 に変更します。
[command + ,] で [Preferences] を開いて、
[Java] -> [Compiler] を開く。
[Compiler compliance level] を 1.6 に変更。
これで直る。
エラーが消えなかったら、プロジェクトのクリーンをしてみる。[Project] -> [clean]
ん?これって昔書いたっけ?
2012/12/06
Android のソースコードを見たいでしょ?
組み込みアプリの挙動とか知りたいし、
どんな Intent 受け取ってくれるのかとか知りたい。
けどわからん。
そんなときはソースコード見ればいい。
OSS バンザイ。
手っ取り早く進みたい人はこちらをどうぞ。
http://source.android.com/source/downloading.html
どんな Intent 受け取ってくれるのかとか知りたい。
けどわからん。
そんなときはソースコード見ればいい。
OSS バンザイ。
手っ取り早く進みたい人はこちらをどうぞ。
http://source.android.com/source/downloading.html
2012/12/04
Android 版 Gmail アプリ 4.2.1 からメール受信インテントが変更になった。
Android 端末で Gmail を受信すると Intent が発行されます。
その intent を BroadcastReceiver で受け取ってゴニョゴニョするんですが。
今まで発行されていた Intent が Gmail 4.2.1 から発行されなくなっていました。
2012/08/20
Android でカメラかギャラリーから画像を読み込んでトリミングして表示するサンプル
- Android OS 2.3.6
- Galaxy S
動かない端末あるんだろうなぁとか思いつつもとりあえず動いたので公開。
トリミングの方法なんだけど、デフォルトのトリミングアプリがあるらしく、それを使ってみた。
ギャラリーから Picasa の画像選んだらなんか落ちそうだけど検証してない。
不具合あったら教えて下さい。
2012/08/09
2012/06/24
Android で電話帳から選択した人の電話番号一覧を取得するサンプル。
デスマって凄いですね。
どうもこんにちは。
Android のいいところ Intent 連携。
そんな便利機能で電話帳と連携して、選択した人の電話番号を取得したい。
ただし選択した人の電話番号が一つとは限らない。
Google 先生に聞いてみたら一つだけ取得するサンプルは結構あるんだけど、
そこから全件取得するってのはなかった(と思う)。
なのでこしらえた。
対象は Android 2.x 以上。 ICS も行けるかと思う(実機では試してない)。
どうもこんにちは。
Android のいいところ Intent 連携。
そんな便利機能で電話帳と連携して、選択した人の電話番号を取得したい。
ただし選択した人の電話番号が一つとは限らない。
Google 先生に聞いてみたら一つだけ取得するサンプルは結構あるんだけど、
そこから全件取得するってのはなかった(と思う)。
なのでこしらえた。
対象は Android 2.x 以上。 ICS も行けるかと思う(実機では試してない)。
登録:
投稿 (Atom)



