タグ

ブックマーク / y-anz-m.blogspot.com (21)

  • Android アプリ内課金(API Version3)の実装

    Implementing In-app Billing (IAB Version 3) 1. プロジェクトに In-app Billing ライブラリを追加する 2. AndroidManifest.xml を変更する 3. ServiceConnection を作成し、IInAppBillingService にバインドする 4. アプリから In-app Billing リクエストを IInAppBillingService に送る 5. Google Play からの In-app Billing レスポンスを処理する 1. プロジェクトに In-app Billing ライブラリを追加する TrivialDriva サンプルから IInAppBillingService.aidl ファイルを Android プロジェクトにコピーする。Eclipse なら /src ディレクトリにイ

  • 「よりよいコードを求めて命名について頭をひねる会」のログ

    http://www.zusaar.com/event/438105 アプリケーションを作る英語 の著者の西野さんを交えて、クラス名とかメソッド名とか変数名とか命名で困っている課題を1つ以上持ち寄りみんなで一緒に検討する勉強会をしました。 「アプリケーションを作る英語電子書籍 http://tatsu-zine.com/books/english4app 紙 http://www.amazon.co.jp/gp/product/4844332848/ はじめに:西野さんからちょっとお話 The Art of Readable Code から第2章と第3章 第2章:名前に情報を詰め込むようにする どういう情報をつめこむか。 明確な言葉を選ぶ get は不明確らしい getPage(url) -> FetchPage(url) や DownloadPage(url) 特色のある(color

    「よりよいコードを求めて命名について頭をひねる会」のログ
    mizoguche
    mizoguche 2012/11/13
    名前で設計の悪い兆候がわかったりするとか。
  • Android Bitmap 読み込みのコードを github に公開しました。

    ・大きい画像を効果的に読み込む ・バックグラウンドで Bitmap を処理する ・Bitmap をキャッシュする をまとめて、DiskLruCache として Displaying Bitmaps Efficiently のサンプル BitmapFun.zip の DiskLruCache.java をベースにしたコードを github に公開しました。Google I/O 2012 のコードも参考にしています。 github - yanzm/ImageLoadLib - 特徴は API Level 4 から使えるようにしてあることです(BitmapFun や Google I/O 2012 のコードはそうなっていません)。 こんな感じで使います。 private ImageFetcher mImageFetcher; @Override public void onCreate(Bund

  • Android Bitmap をキャッシュする

    Caching Bitmaps に補足をつけて解説しています。 前回のバックグラウンドで Bitmap を処理するで、最後に(でもキャッシュは、、、?)と書きました。 そう!キャッシュ!キャッシュ大事。 前回までの段階でもまだ ListView で使うには問題が残っています。 既にタスクが走り終わって ImageView に画像がセットされている行をいったんスクロールアウトし、再度スクロールして画面に表示すると、またタスクが走ってしまいます。 スクロールするたびに読み込み状態になるのはユーザーとしてはうれしくないですよね。 そこでキャッシュを使って、一旦読み込んだ画像が再度必要になったときに利用できるようにします。 キャッシュとしてはメモリキャッシュとディスクキャッシュを利用することができます。 ■ メモリキャッシュ メモリキャッシュの利点は読み込みが速いこと、欠点はメモリを消費することで

  • Android 大きい画像を効果的に読み込む

    Loading Large Bitmaps Efficiently の内容なのですが、補足も入れてメモっておきます。 端的にいうと、 実際に表示するサイズより大きい Bitmap を読みこむのはメモリの無駄 (拡大させるとかなら話は別だけど) ・高解像度のカメラで取られた写真は往々にしてディスプレイのピクセルサイズより大きい ・サムネイルとして使うのに元のサイズのまま読み込むのはばかげてる ・大きいサイズの Bitmap をメモリに展開したら OutOfMemoryException になる ステップとしては3つ 1. メモリに Bitmap 展開せずに、サイズや MimeType だけを取得する 2. 1. の情報をもとにサブサンプルにサイズを決める 3. 2. で決めたサブサンプルで Bitmap をメモリに読み込む 1. メモリに Bitmap 展開せずに、サイズや MimeType

  • Android Up の振る舞いパターンを実装する

    Android Design での Up と Back のガイドライン の振る舞いのパターンの実装方法を紹介します。 まず、Up と Back はそれぞれ次のように使い分けます。 ・Up : 画面間の階層関係に基づいたアプリ内のナビゲーションに使う ・Back : 最近行った操作を逆時系列順にさかのぼるナビゲーションに使う そのため、次のような違いがあります。 遷移範囲 ・Up : アプリ内の遷移だけ ・Back : アプリ内だけでなく別のアプリやホームアプリにも遷移する 振る舞い ・Up : 画面遷移だけ ・Back : 画面遷移の他に、フローティングウィンドウ(ダイアログやポップアップ)のキャンセル、Action Mode のキャンセルや選択中のアイテムのキャンセル、ソフトキーボードを隠すなどの操作にも使われる 基的には、Up は一つ上の階層に戻るナビゲーションに使います。 http

    Android Up の振る舞いパターンを実装する
  • Android カスタム ViewGroup 用XMLのルートタグを <merge> にする

    レイアウトXMLファイルから View を生成するときに LayoutInfalter の inflate() メソッドを使いますが、inflate() メソッドには引数が2つのものと3つのものがあります。 inflate(int resource, ViewGroup root) inflate(int resource, ViewGroup root, boolean attachToRoot) 引数が2つのメソッドは、内部で inflate(resource, root, root != null) のように引数が3つのメソッドを呼んでいます。 この attachToRoot に true を指定した場合と false にした場合で返ってくるルートビューが異なります。 例えば <?xml version="1.0" encoding="utf-8"?> <LinearLayout x

  • Android テーマでデフォルトの sp 単位を置き換える

    当は、きちんと sp 単位に対応すべきです” しかし、これまでデフォルトの文字サイズ(android:textSize や setTextSize() してない widget の文字サイズ)でアプリを作成していたが、 sp 単位のことを考慮していなかったためにレイアウトが崩れるなどの現象がおこり、どうしてもデフォルトの文字単位を一括で dp にしたいこともあるでしょう。 デフォルトの文字サイズについては Android UI Cookbook for 4. 0 の 1.2.2 タイポグラフィに書いたので、詳しくはそっちを参照してください。 例えば、TextView のテーマを見てみると、 437 <style name="Widget.TextView"> 438 <item name="android:textAppearance">?android:attr/textAppeara

  • Android ICS のキーストアアクセスの一元化

    元記事 Unifying Key Store Access in ICS Android 4.0 (ICS) では、人々がパーソナルな Android デバイスを仕事に使えるようにするための多くの機能拡張が追加されています。ここでは、キーストア機能について取り上げます。 Android 1.6 (Donut) で VPN を利用するためにシステムキーストアが追加されました。のちに WiFi 認証のサポートにも拡張されましたが、アプリケーションがアクセスすることはできない状態でした。 これまで、セキュアなSSLウェブサーバーの認証や、クライアント証明書を介してサーバーにユーザー認証する必要がある場合、アプリにとって自身のキーストア管理は共通の課題でした。このための処理では、メールやブラウザなどのいくつかのアプリに渡って複数の証明書が共有されるようなエンタープライズ向けの環境では、管理上の問題

  • ColorPicker の Action Provider を作った

    色選択するための Action Provider を作りました。 HSV の領域をタッチして色を変えます。 SとVはそれぞれの現在値に応じて領域の色が変わるようになっています。 いつものように github にもおきましたー。 yanzm/ColorPickerActionProvider - GitHub - public class MainActivity extends Activity { private int mSelectedColor = Color.BLACK; @Override public boolean onCreateOptionsMenu(Menu menu) { super.onCreateOptionsMenu(menu); getMenuInflater().inflate(R.menu.menu, menu); MenuItem item = men

    ColorPicker の Action Provider を作った
  • Android アプリのサイズ関係めも

    2023 (6) ► 12月 (1) ► 7月 (1) ► 5月 (1) ► 4月 (1) ► 3月 (2) ► 2022 (17) ► 12月 (2) ► 11月 (3) ► 9月 (2) ► 8月 (2) ► 7月 (2) ► 5月 (2) ► 4月 (2) ► 3月 (1) ► 2月 (1) ► 2021 (46) ► 12月 (2) ► 10月 (1) ► 9月 (1) ► 8月 (3) ► 7月 (2) ► 6月 (5) ► 5月 (12) ► 4月 (7) ► 3月 (5) ► 2月 (7) ► 1月 (1) ► 2020 (44) ► 12月 (6) ► 11月 (5) ► 10月 (1) ► 9月 (1) ► 8月 (2) ► 7月 (2) ► 6月 (7) ► 5月 (4) ► 3月 (8) ► 2月 (3) ► 1月 (5) ► 2019 (30) ► 12月 (8

  • Android NumberPicker を拡張して ItemPicker を作ってみた。

    Android には日時を設定するための DatePicker, 時刻を設定するための TimePicker が用意されています。これらの Picker の元になっているのが NumberPicker です。ちなみに NumberPicker は非公開クラスになっています。 この NumberPicker のレイアウトでは、 + ボタンが上にあるために、+ ボタンを押している間、設定している値が指で見えなくなってしまいます。そこで、この NumberPicker を元にして + ボタンと - ボタンが設定値の左右にある Picker を作ってみました。 ItemPicker at yanzm/yanzm-s-Custom-View-Project - GitHub ついでに、ボタンと入力部分の画像リソースと、選択範囲および選択アイテムを attribute として指定できるようにしました。

    Android NumberPicker を拡張して ItemPicker を作ってみた。
  • Android resource で integer を定義する

    2023 (6) ► 12月 (1) ► 7月 (1) ► 5月 (1) ► 4月 (1) ► 3月 (2) ► 2022 (17) ► 12月 (2) ► 11月 (3) ► 9月 (2) ► 8月 (2) ► 7月 (2) ► 5月 (2) ► 4月 (2) ► 3月 (1) ► 2月 (1) ► 2021 (46) ► 12月 (2) ► 10月 (1) ► 9月 (1) ► 8月 (3) ► 7月 (2) ► 6月 (5) ► 5月 (12) ► 4月 (7) ► 3月 (5) ► 2月 (7) ► 1月 (1) ► 2020 (44) ► 12月 (6) ► 11月 (5) ► 10月 (1) ► 9月 (1) ► 8月 (2) ► 7月 (2) ► 6月 (7) ► 5月 (4) ► 3月 (8) ► 2月 (3) ► 1月 (5) ► 2019 (30) ► 12月 (8

  • Android SDK Tools, Reviison 8

    http://developer.android.com/sdk/tools-notes.html SDK Tools, Revision 8 (December 2010) Dependencies: ADT を使って Eclipse で開発している場合、 SDK Tools r8 は ADT 8.0.0 以降を対象としているので、SDK Tools r8 をインストールした後、 ADT Plugin を 8.0.0 にアップデートしてください。 SDK Tools r8 は Platform-tools と呼ばれる新しい SDK コンポーネントが必要です。 新しい Platform-tools コンポーネントによって、すべての SDK platforms (Android 2.1, Android 2.2 など) で同じ(最新の)バージョンのビルドツール(adb, aapt, aidl

    mizoguche
    mizoguche 2011/05/13
    「Eclipse/ADT では、すべての incremental build はデバッグビルドを仮定し、tools は android:debuggable="true" を追加します。signed release build を export するときには、tools はこの属性を追加しません。」
  • Android 複雑な文字列を xml で定義する

    Android では、文字列を res/values/strings.xml の中に定義します。 *別に strings.xml という名前である必要はありません。stringsForScreen1.xml など任意のファイル名が使えます。 例えば、eclipse で Android プロジェクトを作成した場合、 デフォルトで作られる strings.xml は次のようになっています。 <?xml version="1.0" encoding="utf-8"?> <resources> <string name="hello">Hello World, MainActivity!</string> <string name="app_name">HelloWorld</string> </resources> この文字列にアクセスするには、例えば、 <TextView android:id

  • Android タブをサイドにする

    こういうのってなんていうのかな? 横タブ? 結構簡単にできちゃいました。 タブのつまみ部分は TabWidget というクラスです。 TabWidget のソースをみてみればわかりますが、このクラスは LinearLayout を継承しています。 つまり、各つまみは LinearLayout の子要素ということになります。 まずコンストラクタをみると 75 public TabWidget(Context context, AttributeSet attrs, int defStyle) { 76 super(context, attrs); 77 78 TypedArray a = 79 context.obtainStyledAttributes(attrs, com.android.internal.R.styleable.TabWidget, 80 defStyle, 0); 8

    Android タブをサイドにする
  • Android launchMode の違い

    android:launchMode については以前のエントリ 「Android Activity, Task, Stack, Launch mode」 にも少し書いたのですが、それぞれの違いについてもう少し詳しく説明したいと思います。 上記のエントリで私がまとめた launchMode の表を再掲します。 この表に載っている 「インテントに応答するアクティビティをどのタスクに保持するか」 「アクティビティのインスタンスを複数生成できるか」 「インスタンスに他のアクティビティを含めることができるか」 「クラスの新しいインスタンスを起動して新しいインテントを処理するかどうか」 について順番に説明します。 ■ インテントに応答するアクティビティをどのタスクに保持するか ここに アプリX があるとします。 このアプリは ACTION_SEND を処理できる Activity A を持っています。

    Android launchMode の違い
  • Eclipse Short cut

    自分のためのチートシート ■操作系 short cut を表示 : Ctrl + Shift + L 閉じる : Ctrl + W 全部閉じる : Ctrl + Shift + W Open Resource : Ctrl + Shift + R Editor を切り替える Next Editor : Ctrl + F6 Previous Editor : Ctrl + Shift + F6 Quick Switch Editor : Ctrl + E View を切り替える Next View : Ctrl + F7 Previous View : Ctrl + Shift + F7 Perspective を切り替える Next Perspective : Ctrl + F8 Previous Perspective : Ctrl + Shift + F8 ■リファクタリング系 Ref

  • Android 複数画面 1 Activity で画面遷移

    1画面 1Activity は設計も実装も楽なんですけど、なんせ Activity 間の遷移は時間がかかります。一瞬待たされるよね? setContentView() を使って画面遷移を実現すると、待たされることはなくなります。 では、コード。 R.layout.main -> R.layout.first -> R.layout.second -> finish という画面遷移になっています。 package yanzm.products.screentransition.lib; import android.app.Activity; import android.content.Context; import android.content.SharedPreferences; import android.os.Bundle; import android.view.View;

    Android 複数画面 1 Activity で画面遷移
    mizoguche
    mizoguche 2011/02/05
    ウィザードはこんな感じで作ったらいいんすね。
  • Android Parcelable を使ってクラスのメンバを一時保存

    さて、前回のエントリで、Bundle で状態を保存する方法を 書きました。 Android Bundle で状態を保存 ここでは、Bundle の Method (例えば putString と getString) を使ってパラメータを保存する方法を紹介しました。 しかーし、ここで問題が発生 「独自にデータクラスを用意していて、このクラスのメンバごと保存したいんだけど…」 さぁ、この場合どうする? ここで登場するのが Parcelable さんです。 Parcelable はリファレンス http://developer.android.com/intl/ja/reference/android/os/Parcelable.html に書いてあるように、Parcel にデータを書き/読みするためのインタフェースです。 "Interface for classes whose instan

    mizoguche
    mizoguche 2010/04/22
    状態を一時保存するときに実装するインターフェイス。