前人未踏の領域へ Androidアプリ開発編

Androidアプリ開発に関する調査メモ置き場。古い記事にはアプリ以外も含まれます。

2015-01-01から1年間の記事一覧

レイアウト属性を使って画面開発を効率化する

Android Studioでレイアウト設定をする際、Viewerでプレビューができるが、Java側からテキストを挿入したい場合は、デフォルトではvisibilityがGONEになるケースなど、プレビューに適さないケースが出てくる。そんなときにtoolsを使う事で layout.xmlなどで…

onCreateOptionsMenuの実行タイミングについて

onCreateOptionsMenuの実行タイミングがAndroidのバージョンによって異なっていたのでメモ。イベントはFragmentのもの。 5.0 onResumeの後 4.1.1 onAttachの後 2.3.3 onAttachの後 どのバージョンで変わったかは不明。 後で調べる。

ネストしたFragmentのバックスタック時挙動について

実装方法によっては発生しないのかもしれないけれど、自分の開発状況下で発生している問題について。 結論 子フラグメントをバックスタックから復元することはできる。しかし色々変更しすぎてもはや何が決め手になったかよくわからず。以下は本結論に繋がら…

Android Studioのライブテンプレート

Android Studioのライブテンプレートを仕様すると短いコード数で自動的にそれにあったコードを自動生成してくれる。 最新版では以下のとおり。スクショで失礼。toolsNsが個人的には便利。 もちろん自分でも作れるのでプロジェクトでお約束のコードは独自の名…

Gridビューの周囲の枠線を非表示にする

課題 Android2.3系の話なので最新端末では関係なかったりするがGridViewをセットするとアイテムの周囲にスペース確保され、ヘッダーのような横一杯に表示したいようなフルサイズの画像などを貼ろうとするとずれる結果となる。 対応 listSelectorが指定されて…

RecyclerViewを使う

とりあえず一覧を表示するサンプル。 ポイント レイアウトの種類はLaytoutManagerで管理 ViewHolderの利用が前提になっている setOnItemClickListenerがRecyclerViewには存在しないので、RecyclerView.Adapter内のViewHolderのコンストラクタか、同Adapterの…

Material Design Color paletteをAndroidで使う

お題 Android Material Designでカラーパレットが提供されており、名前も決めてくれているので それを使いたい。Colors.xmlになってれば楽チンである。 回答 Githubにあったので素直にもらう。ダウンロードしてそのまま使用する。 https://gist.github.com/k…

パッケージ名による外部アプリの起動

パッケージ名がわかっているケースで、アプリがインストールされていればアプリを起動し、 されていなければGoogle Playに遷移する。 String packageName = "jp.theylive.android.app"; //AndroidManifest.xmlのpackageNameに相当 PackageManager pm = mCont…

ImageViewのsetBackgroundResourceとsetImageDrawableについて

ImageViewにはViewから継承したsetBackgroundResourceの他にsetImage系のメソッドがあって、 この二つのメソッドを同時に使うといい感じに画像を重ねて表示してくれて便利だったのだけど、 2.3系の端末でテストしてたら片方しか表示されなかった。どうやらse…

Facebookログイン直後にProfileがnullになるケース。

現象 Facebookログイン時にFacebookCallbackのonSuccessが呼ばれ、AccessTokenが取得できているにも関わらず、Profile.getCurrentProfile()がnullになるケースがあった。 FacebookCallback<LoginResult> mFacebookCallback = new FacebookCallback<LoginResult>() { @Override public v</loginresult></loginresult>…

FacebookCallbackが実行されない

ちょっと嵌ったのでメモ。Facebook Android SDKの4.2でCallbackManagerのonActivityResultまでバッチリ呼ばれたにも関わらず、FacebookCallbackが呼ばれないケースがあった。結論からいうとrequestCodeが一致していなかった。 //登録 mCallbackManager = Cal…

Lintエラーを無視してビルドしたい

リリースビルド時にLintの警告が出てビルドできない、しかしビルドしたい。そんな場合。 //build.gradleを編集 android { lintOptions { checkReleaseBuilds false abortOnError false } }

EditTextで改行入力

EditTextはデフォルトで複数行入力に対応している。しかしながらキーボード側にそれが伝えられていないとキーボード側に改行ボタンが出てこない。inputTypeで変更する。 <EditText android:inputType="textMultiLine" />似た項目にtextImeMultiLineがあるが、こちらは期待した挙動をしなかった。未調査。</edittext>

ソフトウェアキーボードの表示

画面表示のタイミングでEditTextにフォーカス当ててキーボードを表示させたいケース。 メモ書き。適宜修正。 getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE);Fragment画面の場合はInputMethodManagerのshowSoftInputで…

DockerによるMysql環境の構築

Docker Hubからイメージを探す 自分で作りたいところだが、時間の関係もあるのでdocker searchコマンドでイメージを探す。 $ docker search mysql NAME DESCRIPTION STARS OFFICIAL AUTOMATED mysql MySQL is a widely used, open-source relati... 590 [OK]…

ホストPCからboot2docker上のSinatraにアクセスする

Dockerのドキュメントを読んでいるとSinatraの例が出てくるが、実際に動作させてアクセスを確認しようとした際に少し嵌ったのでメモ。Mac上でDockerを使う場合、boot2dockerを使う事になると思うが、その場合ポートの転送を行う必要がある。 アクセス方法は…

環境セットアップ

Chef Development Kitのインストール Chefのインストーラがあったのでこちらを使う。Chef-soloとかBerkshelfとかお約束のものはセットでインストールされる。 https://downloads.chef.io/chef-dk/mac/#/ $ chef-solo -v Chef: 12.0.3/opt/chefdkの配下にファ…

boxコマンドあれこれ

ヘルプ $ vagrant help box Usage: vagrant box <subcommand> [<args>] Available subcommands: add list outdated remove repackage update For help on any individual subcommand run `vagrant box <subcommand> -h` box list リスト表示 $ vagrant box list ubuntu/trusty64 (virtualbo</subcommand></args></subcommand>…

OSを指定してinit

コピペ用メモ。 参照先 あらかじめ作られたboxがある。ここから目的のOSを探す。 https://atlas.hashicorp.com/boxes/search?utm_source=vagrantcloud.com&vagrantcloud=1 サンプル $ vagrant init ubuntu/trusty64

Vagrant上のMySQLにホストOSのMySQKWorkbenchから接続する

MySQLユーザーに外部接続許可を与えて・・・と思ったがうまくいかなかったのでSSH経由で接続する。 接続管理パネルを開く Connectionを選択 Standard TCP/IP over SSHを選択 Parametersを選択 入力項目 SSH Hostname 127.0.0.1:22 SSH Username vagrant SSH Pas…

Mac OS X Yosemise開発者ベータ版を入手するには

Mac

Apple Beta Software Program というベータプログラムを先行して試せるサービスがある。 https://appleseed.apple.com/sp/ja/betaprogram/welcome?locale=jaここにアクセスし、右上のMacを登録を選択すると以下に遷移する。 https://appleseed.apple.com/sp/…

debconfを使ったインストール

自動インストールなどでMySQLのrootパスワード入力を求められないために シェル作成 説明上、root_password パスワードは「root」にしてある。適宜変更して使う。 $ vi mysql-install.sh mysql-install.shの編集 #!/usr/bin/env bash echo "mysql-server-5.5…

a2enmodによる設定の変更

Apacheでmod_rewriteやSSLなどモジュール有効無効を切り替えたいときにa2enmodを使う。 例 sudo a2enmod rewrite sudo a2enmod ssl 参考 http://askubuntu.com/questions/48362/how-to-enable-mod-rewrite-in-apache

共有ディレクトリの定義

課題 ローカル環境で開発をしつつ、Vagrant上に構築したサーバーに共有ディレクトリを通じて反映したい。 言葉の定義 ホスト:Vagrantを起動するローカルPC ゲスト:Vagrantによって起動するOS 例題 -ホストOS上の ./www というディレクトリを ゲストOS上の…

Laravelのインストール

PHP

Laravelは最近注目のPHPフレームワークである。 インストールは http://readouble.com/laravel/4/2/0/ja/quick.html に従えばよい。 先にcomposerのインストールが必要なので注意。 インストーラーのダウンロード $ composer global require "laravel/instal…

Composerのインストール

PHP

ComposerはPHPのライブラリ依存関係管理ツールである。 インストール Ubuntu環境へのインストール $ sudo aptitude install php5-cli $ curl -sS https://getcomposer.org/installer | php $ ls composer.phar //どこからでも実行可能に $ sudo mv composer.…

パッケージ管理にaptitudeを使う

apt-get installしたいときにそもそも該当パッケージがあるか知りたいケースがある。 そんな時にはaptitudeが使える。というよりもaptitudeがより高レベルなパッケージ管理機能を提供してくれている。 //PHPパッケージを検索 $ sudo aptitude search php//PH…

Helperで条件式を作る

Handlebars組み込みHelperのIFにはオブジェクトの有無の判別しかない。なので、値の一致や大小比較ができないので、Helperを作って対応する。コード Handlebars.registerHelper('cond', function (v1,cond,v2, options) { if((cond === '==' || cond === 'eq…

局所変数を使用する

ループ中にローカル変数を保持しておきたいようなケースがあった。JSPのTaglibでいうところの <c:set>のようなものである。そこで、Helperを作ってみた。 opitonsにはdataオブジェクトが含まれているので、そこにattrというオブジェクトを作り、hashMap的に使う事に</c:set>…