タグ

ブックマーク / qiita.com/KeithYokoma (15)

  • NavigationView と Fragment と BackStack: DroidKaigi 公式アプリの構造と設計・実装の判断の足跡を辿る - Qiita

    NavigationView と Fragment と BackStack: DroidKaigi 公式アプリの構造と設計・実装の判断の足跡を辿るJavaAndroidFragment 概要 DroidKaigi 公式アプリ誕生のお話は @konifar さんのブログ記事 を御覧ください。 この記事では、DroidKaigi 公式アプリの中でも、自分がプルリクエストを出した、NavigationView の操作とそれに連なる部分の構造について解説します。 NavigationView のイベントハンドリング NavigationView に表示するメニューの各項目は、従来の OptionsMenu などと同じMenuItemです。そのMenuItemが選択されたタイミングのイベントを拾うコールバックとして、NavigationView.OnNavigationItemSelectedLis

    NavigationView と Fragment と BackStack: DroidKaigi 公式アプリの構造と設計・実装の判断の足跡を辿る - Qiita
  • 新年のうちに抑えておきたい、イマドキなイカした Android のオープンソースライブラリ集 - Qiita

    以前の投稿(イマドキなイカした Android のオープンソースライブラリ集)から一年以上経過し、様々なライブラリが継続して開発されている中、どんどん便利なものが増えてきていますので、改めてそれらを纏めて見てみたいと思います。 プログラミング・パラダイムに関するもの Dagger2 Google が公式に Square, Inc. の Dagger をフォークし、リフレクションを排してパフォーマンスを上げたもの。より静的に DI をする方向に持って行っています。 RxJava リアクティブプログラミングを Java に持ち込むためのライブラリ。 デバッグ用途に使うもの u2020 デバッグ時に便利な各種のパラメータを NavigationDrawer に詰め込んで、デバッグビルドのアプリで操作できるようにすることで、様々な環境下でのテストが簡単になります。通信周りは、強制的にエラーを発生さ

    新年のうちに抑えておきたい、イマドキなイカした Android のオープンソースライブラリ集 - Qiita
    gfx
    gfx 2016/01/16
  • Java と Android の正規表現の動作の違い - Qiita

    この記事は、先日の potatotips #22 では説明しきれなかった部分を補足するものです。potatotips #22 でのスライドは Regular Expression in Android And Java です。 おさらい Pattern | Android Developers Java の正規表現 Patternクラスを用いて、正規表現文字列をコンパイルしてマッチする処理を描くことになります。Stringクラスには一部便利なメソッドがあり、正規表現文字列を渡してマッチするものに処理を施す事ができるようになっていますが、あまり複雑なことはできないため、Stringクラスで提供されている以上のことをする場合はPatternクラスを用います。 Java の正規表現は Perl5 のシンタックスのサブセットですが、Perl のように正規表現リテラルは存在せず、文字列を用いて正規表

    Java と Android の正規表現の動作の違い - Qiita
    gfx
    gfx 2015/10/14
  • チームとして少ないミスで素早くアプリを継続的・持続的に作り続けるためのメソッド - Qiita

    この投稿は DroidKaigi で話そうと思ったけど採択されなかった RejectedKaigi な内容です。 プログラムは、書けば書くほど複雑になります。行数が増え、分岐や繰り返しが増え、メソッドが増え、クラスが増え、パッケージが増え、管理するものは日に日に増えていきます。これらのものを使う側からすると、使うものが増えるということは、それだけ覚えることが増えることになります。勿論、IDE やエディタプラグインによって、そのような労力が極力減らされることもありますが、覚えることが少ないに越したことはありません。 この記事では、IDE やエディタプラグインはひとまず脇に置き、チームでコミュニケーションを取りながらコードを書くという観点で、従来のプログラミングのプラクティスを基に、開発時のミスを少なくし、チームで素早くアプリを作り続けていく方法論を深めていこうと思います。 Agenda 型を

    チームとして少ないミスで素早くアプリを継続的・持続的に作り続けるためのメソッド - Qiita
    gfx
    gfx 2015/05/01
    このbuilder patternはよくない。これは単にUserクラスのsetterでthisを返せばいい話。初期値を名前で指定しつつbuild()時のvalidationで非null強制などをできるのがbuilder patternのいいところじゃないかなー。
  • Multi-dex Support を使おう - Qiita

    Multi-dex とは 一個の dex に含められるメソッドの総数が 65,535 なのは有名な話ですが、Google Play Services や Guava などの大きなライブラリを使うと、わりとすぐにその数字に達してしまいます。 Guava の場合、ドメインに応じて dependency をつまみいできるので、不要なものは dependencies に記述しなければ良いだけで済みます。 しかし、Google Play Services は All in one なライブラリのため、つまみいができず、ProGuard で使わないものを無理やり削ぎ落とすなどの工夫が必要です。 それでも、ライブラリへの依存が増えれば、その分だけメソッドの総数も増えていきます。どうしても 65,535 を超える場合、Multi-dex Support を使うことで、この問題に対応することができます。

    Multi-dex Support を使おう - Qiita
    gfx
    gfx 2014/10/21
    時代はmulti-dex application!
  • Fragment は本当に多様なデバイスへ対応する唯一の方法なのか - Qiita

    参考:Advocating Against Android Fragments Fragment の基 Fragment といえば、Honeycomb から導入された、多様なデバイスへ対応するための仕組みで、Activity のライフサイクルに合わせて動作するモジュールのようなものです。 Fragment として細かく分けたモジュールを組み合わせることで、多様なデバイスへ対応しやすくする、という寸法です。 ライフサイクル Activity に付随して動くので、Fragment も勿論ライフサイクルを持つのですが、Activity よりもはるかに複雑なものとなっています。 Square のエンジニアブログに曰く、WTFs/min = 2^fragment countであると。 トランザクションとインスタンスの管理 Fragment Transactions によって、Fragment の操

    Fragment は本当に多様なデバイスへ対応する唯一の方法なのか - Qiita
    gfx
    gfx 2014/10/16
  • アプリがバージョンアップしたときの手続きをアノテーションを使って整理する - Qiita

    アプリのバージョンを上げた時、何かしら互換性を保つための作業が必要なことがあります。 たとえば、データベースのマイグレーションをしたり、その他永続化したデータを書き換えたり、など。時間のかかるものもあれば、かからないものもあります。 王道なやり方としては、Application#onCreate()でバージョンを覚えておいて、次にApplication#onCreate()に来た時に覚えておいたバージョンと PackageManager から取ってきたバージョン情報を突き合わせて、バージョンが変わっていたら、バージョンごとに必要な処理をする、と言った感じでしょうか。 public class MyApp extends Application { @Override public void onCreate() { super.onCreate(); if (isVersionChange

    アプリがバージョンアップしたときの手続きをアノテーションを使って整理する - Qiita
    gfx
    gfx 2014/10/16
    アノテーションじゃなくふつうにlistenerオブジェクト登録したい
  • What's new in Gradle Plugin 0.13 - Qiita

    メモ書き Gradle 2.1 が必要になるので、${project_root}/gradle/wrapper/gradle-wrapper.propertiesを書き換えましょう(Gradle Plugin のバージョンをあげたら書き換えを促すプロンプトが出るはず)。 テスト用にAndroidManifest.xmlが、src/androidTest以下に配置できるようになりました。 ライブラリモジュールのAndroidManifest.xmlでプレースホルダが使えるようになりました。ライブラリモジュール内で解決されないプレースホルダは、それを使用するプロジェクト側で解決されます。 ProductFlavor や Build Type ごとにプレースホルダが設定できるようになりました。 Variant.getMappingFile()で、ProGuard の mapping.txt へア

    What's new in Gradle Plugin 0.13 - Qiita
    gfx
    gfx 2014/09/19
    Gradle 2.1!
  • コールバックと上手に付き合う - Qiita

    コールバック、よく使いますよね。 非同期処理の結果を受け取るには、必ずと言っていいほど付き合うことになるコールバックですが、UI のようにライフサイクルを持つオブジェクトと共存するには、考慮すべきことがいくつかあります。 ここでは、おおまかに、上手にコールバックと付き合う方法を見ていきます。 基となるポイント なんといってもまず抑えなければいけないポイントは、ライフサイクルを持つオブジェクトとの共存です。世に出回っている様々なコールバック管理のためのライブラリは、このライフサイクルを持つオブジェクトとの共存をいかに楽に、あるいは直感的にするか、ということをもとに作られています。 ライフサイクルとはつまり、オブジェクトが生成されてから消滅するまでの一連の流れのことです。 newしたりallocしたりしたタイミングでオブジェクトが生成され、GC に回収されたりdeallocしたりするタイミン

    コールバックと上手に付き合う - Qiita
    gfx
    gfx 2014/08/25
  • Google よりも先に Android Studio 0.8.2 のリリースノートを書き出してみる - Qiita

    おおよそ、以下の URL を眺めることで、どんなリリースだったかが観測できます。 Gradle 2.0 がサポートされるようになった これとかこれとか見ると、2.0 がサポートされるようになったようです。ぱっと見最低バージョンが2.0になった感じも受けるが、特に何もいじらなくても良かったので、開発者が何かをする必要はなさそう。 Lint のバグフィクス これ SharedPreferences#commit()とSharedPreferences#apply()の警告が逆だった件。 依存管理のバージョンの書き方についての改善 これ +つかって、自動で最新のを追っかけるようにすることも多いかと思いますが、予期せず最新のものを使ってしまって悲しい思いをすることもあるため、Google 的には非推奨にしているようです。 このとき、警告はでるけどバージョンを自動で補完して、バージョンを固定するよう

    Google よりも先に Android Studio 0.8.2 のリリースノートを書き出してみる - Qiita
    gfx
    gfx 2014/07/10
  • ParseSDK のトラップを集めたページ - Qiita

    先日、potatotips #7 にて、Parse と上手に付き合うための tips を発表させていただきました。 この記事では、ParseSDK を使う上で気をつけていないとハマるポイントを、もう少し掘り下げつつ、発表には無かったものも含めてお送りしようと思います。 1. 非同期処理 1-1. **InBackground はメインスレッドをブロックする 名前からして、メインスレッドとは違うスレッドで非同期に処理をしてくれて、結果をコールバックにかえしてくれるように見えますが、メインスレッドをブロックするところがあるので Stop the World します。 内部的にはリクエストをキューに積んで逐次処理でさばいているようですが… 1-2. **InBackground のコールバックは Context の生死にかかわらず呼ばれる よくあるカンタンな実装として、以下の様なものがあると思い

    ParseSDK のトラップを集めたページ - Qiita
    gfx
    gfx 2014/05/18
  • Android のライブラリプロジェクトを爆速で Maven Central にデプロイする - Qiita

    5 つのステップを踏んで、Maven Central にライブラリをデプロイします。 1. Sonatype の JIRA にサインアップする Sonatype の JIRA にアカウントを登録します。 アカウントの ID と Pass は今後も使うので忘れないようにして下さい。 2. Sonatype の JIRA に、デプロイ設定の依頼を投げる Sonatype の JIRA の Community Support にチケットを投げます。 参考例 必須なのは、GroupId、Project URL、SCM url、UserName。 GroupId は Maven の GroupId です。自分が持つプロジェクトのドメインをいい感じにまとめる id を付けましょう。 Project URL は、コードやイシュー管理が行われている場所だったり、ランディングページ的な場所を指定しましょう。

    Android のライブラリプロジェクトを爆速で Maven Central にデプロイする - Qiita
    gfx
    gfx 2014/05/09
  • ParseQuery の取扱説明書 - Qiita

    Parse.com を使ってバックエンドを構築した時、Android からは、ParseSDK を用いてそれらにアクセスするのが最も簡単かつ手軽にできます。 そして、Parse に保存されたデータにアクセスする際頻繁に使うであろうクラスが、ParseQueryです。 ParseQuery の概要 ParseQuery は、指定した条件を満たすレコードの一覧を得るために使います。 例えば、あるカラムの数字が x 以上だとか、あるカラムの文字列が y と一致するとか、レコードのオフセットやリミットも指定できます。 リレーショナルなレコード Parse のデータベースは、リレーショナルなデータを持たせることが出来、いくつかの種類があります。 Pointer カラムのデータが、別のクラスが持つ特定のレコードを指し示す場合に用いられます。リレーショナルデータベースで言うところの外部キーのように働きま

    ParseQuery の取扱説明書 - Qiita
    gfx
    gfx 2014/04/30
  • 超ラクチンに端末の画像を複数選択するためのライブラリを作った話 - Qiita

    Android の端末に保存されている画像を、アルバム(ディレクトリ)を跨って複数枚選択するためのライブラリを作りました。 Intent の Action による画像選択の問題 Intent.ACTION_PICK や Intent.ACTION_GET_CONTENT を用いれば、ギャラリーアプリや KitKat のファイルセレクタが立ち上がって、使いたい画像を選択することができます。 ただし、この方法では、画像を 1 枚しか選択できないため、複数枚を同時に取り扱おうとすると、ユーザに何度も選択画面との往来をさせてしまいます。 一方で、Intent.ACTION_SEND_MULTIPLE という Action も宣言されており、ギャラリーアプリなどで複数選択して共有ボタンを押すと、この Action で Intent が発火され、選択した複数の画像 Uri が取得できます。 しかし、ギ

    超ラクチンに端末の画像を複数選択するためのライブラリを作った話 - Qiita
    gfx
    gfx 2014/03/28
  • イマドキなイカした Android のオープンソースライブラリ集 - Qiita

    今から Android やるならチェックしておきたい、厳選イカしたオープンソースライブラリ一覧。 support-v4 や support-v7-appcompat などは公式のものなので割愛。 開発環境 Android SDK Android SDK Installer 公式からダウンロードしてポチポチとチェックを入れてはダウンロードして…が面倒くさいならコレ。 シェルからコマンド一発でダウンロード出来るので、CI で使うのにも便利。 ADB Idea AndroidStudio および IntelliJ 用のプラグインで、IDE から ADB コマンドを簡単に利用できるようにするためのもの。メニューから選択してコマンドを実行できるようにしてくれる。 コード最適化 DI コンテナ Dagger square 社の Android および Java 向け DI コンテナ。 javax.in

    イマドキなイカした Android のオープンソースライブラリ集 - Qiita
    gfx
    gfx 2014/01/24
  • 1