タグ

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

  • InsetDrawableで余白のある区切り線を作る

    InsetDrawableについては「Android InsetDrawableを活用する」で取り上げましたが、これを使うとListView用に左右に余白のある区切り線を作ることができます。 res/drawable/list_divider.xml <?xml version="1.0" encoding="utf-8"?> <inset xmlns:android="http://schemas.android.com/apk/res/android" android:insetLeft="8dp" android:insetRight="8dp"> <shape> <solid android:color="#cccccc" /> <size android:height="1dp" /> </shape> </inset> public class MainListFragment

    InsetDrawableで余白のある区切り線を作る
    dmp939
    dmp939 2014/04/15
    InsetDrawable 汎用性高いなー
  • 「ギャラリーから選択」と「カメラで撮影」を1つのchooserで表示する。

    異なるActionのIntentそれぞれに対応するアプリを、1つのchooserで選択できるようにする方法です。 例えば、ギャラリーから画像を選択するときは Intent.ACTION_GET_CONTENT を使いますが、 カメラを起動して撮影した画像を取得するときは MediaStore.ACTION_IMAGE_CAPTURE を使います。 そのため、まず「ギャラリーから選択」と「カメラで撮影」のどちらかを選ぶためのダイアログを用意する例をよく見ます。 *ドキュメントプロバイダーが追加されたからか、ACTION_GET_CONTENT でギャラリーが出てこなくなり、代わりにドキュメントがでてきます。ここではギャラリーの方がわかりやすいので、ギャラリーとします。 Intent.EXTRA_INITIAL_INTENTSを使えば、1つのchooserダイアログに両方入れることができます。

    「ギャラリーから選択」と「カメラで撮影」を1つのchooserで表示する。
  • Android ListFragment でカスタムレイアウトを使うと setEmptyText() が使えない

    もともとは adakoda さんのブログのエントリ [Android] ListFragment の View をカスタマイズする方法 - adakoda - http://goo.gl/UBgyu で、onCreateView() を override してカスタムレイアウトを指定すると setEmptyText() で落ちるという話があって、正しい ID を指定してないからでは〜?的な流れになったのですが、どうもそうではないようなので調べてみました。 まず、setEmptyText(CharSequence text) は API Level 11 (Android 3.0) で追加された API です。 結果をまとめると ・ListActivity ・setEmptyView() : 使える ・getEmptyView() : 使える ・@android:id/list, @andr

  • Android Support Package の Fragment から startActivityForResult() を使うときの注意点

    Android Support Package の Fragment から startActivityForResult() を使うときの注意点 今回は Support Package で Fragment を使う場合の注意点です。 まず、FragmentActivity で startActivityForResult() を使う場合、requestCode は 16bit 以下にしなければなりません。 http://tools.oesf.biz/android-4.0.1_r1.0/xref/frameworks/support/v4/java/android/support/v4/app/FragmentActivity.java#654 654 /** 655 * Modifies the standard behavior to allow results to be deliv

    dmp939
    dmp939 2013/08/09
    "Fragment から startActivityForResult() で呼んだ Intent を FragmentActivity の onActivityResult() で処理する場合は、下位16ビットだけで比較しましょう。"
  • Android dip, dp, から pt, px に変換する

    ■ Converting from dips to pixel Android refenrece の Converting from dips to pixels に書いてある getContext().getResources().getDisplayMetrics().density で画面解像度の比率を取得して、dip, dp 単位の値に掛ければ pt, px 単位での値になる dip -> px // The gesture threshold expressed in dip private static final float GESTURE_THRESHOLD_DIP = 16.0f; // Convert the dips to pixels final float scale = getContext().getResources().getDisplayMetrics

  • Android アプリからスクリーンキャプチャを無効にする方法

    Android 4.0 からデバイスのハードキー(Volume down + Power)でスクリーンキャプチャが取れるようになりましたが、実はアプリからこの機能を無効にすることができます。 それが、WindowManager.LayoutParams.FLAG_SECURE です。 public class MainActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Window window = getWindow(); window.addFlags(WindowManager.LayoutParams.FLAG_SECURE); setContentView(R.layout.main);

    Android アプリからスクリーンキャプチャを無効にする方法
  • Android Overscroll を使う簡単な方法

    羊さんが素敵なエントリを書いてくれてました「OverScrollでListViewをビョーンってする方法 - hdk_embeddedの日記 -」 でも、やっぱりフレームワークの ListView とか ScrollView で on/off できないってことはないんじゃないのかな?と思って調べてみました。 ScrollView の onTouchEvent メソッドのなかでは、ちゃんと overScrollBy メソッドが呼ばれています。 android.wdiget.ScrollView public boolean onTouchEvent(MotionEvent ev) { ... case MotionEvent.ACTION_MOVE: if (mIsBeingDragged) { // Scroll to follow the motion event final int a

  • Android Menu の背景を変える

    Menu を作る方法は http://developer.android.com/guide/topics/ui/menus.html などに書いてありますが、まっとうな方法では、アイコンとタイトルしか 変更できません。 *Menuとはメニューキーを押したときに下から”にゅっ”と出てくる やつです。 ↑これの「使い方」とか「ネイル・ド・ロンジョについて」とかのパネルの部分 システムとの一貫性を保つためにそうなっているんだろうとは 思うのですが、アイコンにすごくカラフルなのとか使ったら 一貫性もなにもないだろぅ。とか思ったりもします。 例えば、ic_menu_**.png はアイコンが灰色ですが、このアイコンの 色を変えた画像を用意して、アイコンに指定すると となって、メニューパネルの背景色がアプリ全体の色バランスと 合ってない感じになってしまいます。 そこで、メニューパネル部分の背景を変え

    Android Menu の背景を変える
  • Android Action Bar をカスタマイズする

    Android Developers Blog: Customizing the Action Bar Action Bar のデザインパターンを紹介してから、多くのアプリケーションが Action Bar を使うようになりました。 そして、このデザインパターンは Android 3.0 でデフォルトの機能になりました。 Honeycomb をターゲットとしたアプリで Action Bar を使う方法は using Action Bar を参照してください。 Theme.Holo.* を継承した独自スタイルを定義して、ここで Action Bar をカスタマイズしていきます。 <style name="Theme.MyTheme" parent="android:style/Theme.Holo.Light"> … </style> ■ Icon Android Asset Studio

    dmp939
    dmp939 2011/07/26
    HoneycombのActionBarの見た目をカスタマイズする方法
  • Android Quick Action の Android ライブラリプロジェクトを作ってみた

    Google I/O の UI design pattern で紹介されていた、Quick Action (twitter アプリや Gmail アプリで使われている) は標準の SDK の中にはありません。 # Quick Action については以前のエントリ「Android UI Design Tips」でも簡単にかきました。 leibun さんのブログのエントリがわかりやすいです。 QuickActionの使い方 - leibunのテクニカルブログ - leibun さんのブログでも紹介されてますが、 ・http://code.google.com/p/simple-quickactions/ ・http://www.londatiga.net/it/how-to-create-quickaction-dialog-in-android/ とかでソースが公開されています。 http

    Android Quick Action の Android ライブラリプロジェクトを作ってみた
  • Android AlertDialog の背景を変更する

    ダイアログの背景(タイトル、メッセージ、ボタン部分で色が変わっているところ)を変更するには、 android:alertDialogStyle を設定します。 res/values/styles.xml <?xml version="1.0" encoding="utf-8"?> <resources> <style name="MyTheme" parent="@android:style/Theme.Black"> <item name="android:alertDialogStyle">@style/AlertDialog</item> </style> <style name="AlertDialog"> <item name="android:fullBright">@android:color/transparent</item> <item name="android:fu

    Android AlertDialog の背景を変更する
    dmp939
    dmp939 2011/02/23
    @android:style/Theme.Dialog を継承して、 android:windowIsFloating をfalseにすると android:windowBackground や android:layout_gravity などでカスタマイズ可能
  • 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

    dmp939
    dmp939 2011/02/16
    Parcelableインタフェースの実装
  • Android launchMode の違い

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

    Android launchMode の違い
  • Android ボタンを押したときにソフトキーボードを消す

    Button をクリックしたときにソフトキーボードを隠す方法です。 InputMethodManager を使います。 public void onClick(View v) { switch(v.getId()){ case R.id.search_button : InputMethodManager inputMethodManager = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); inputMethodManager.hideSoftInputFromWindow(v.getWindowToken(), 0); search(); break; } } hideSosfInputFromWindow に第2引数を InputMethodManager.HIDE_IMPLICIT_ONLY

  • Android Android2.3 - DownloadManager を使う

    ・DownloadManager は long-running HTTP ダウンロード用のシステムサービス ・ダウンロードするファイルのURIを指定してリクエストする ・ダウンロードはバックグラウンドで行われる ・接続が変わったり、リブートしたり、ダウンロードに失敗した場合は再試行される ・getSystemService(String) メソッドの引数に DOWNLOAD_SERVICE を渡してインスタンスを取得する ・このAPIを使ってダウンロードをリクエストするアプリは、ユーザーが notification や downloads UI からダウンロードを開始したことを適切にハンドルするために、ACTION_NOTIFICATION_CLICKED に対する broadcast receiver を登録しておかなければならない # DownloadManager.Query に渡す

    Android Android2.3 - DownloadManager を使う
    dmp939
    dmp939 2010/12/19
    DownloadManagerは、HTTPSを受け付けてくれないらしい
  • Android UI Design Tips

    UIを意識すべきなのはどうして? 良いUI → ユーザーが洗練された質に気が付く → 評価が良くなる → アプリのランキングが良くなる → さらにたくさんのインストール&購入につながる ■ Agenda 1. やるべきことと、やっちゃいけないこと 2. デザイン哲学と考慮すること 3. 絶対に使うべき UI framework の機能・特徴 4. 新しい UI デザインパターン 5. アイコンとガイドライン ■ やるべきことと、やっちゃいけないこと * やっちゃいけないこと ・単に他のプラットフォームのUIを移植しない! ・ユーザーがプラットフォームとアプリが合っていると感じるべき ・アプリのブランドとプラットフォームとのバランス ・modal progress と確認用ダイアログを使い過ぎない! ・柔軟性を持つ!(absolute-positioned layout はダメ) ・px

    Android UI Design Tips
    dmp939
    dmp939 2010/11/09
    Android UI design patternsの日本語訳
  • Android 自動でソフトキーボードが出るのを防ぐ

    Activity を起動したときに EditText にフォーカスがあたるようになっていると 自動でソフトキーボードが出ることがあります。 これを防ぐには Window の setSoftInputMode() で SoftInputMode を設定します。 こんな感じ @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); this.getWindow().setSoftInputMode(LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN); setContentView(R.layout.main); } ここでは、SOFT_INPUT_STATE_ALWAYS_HIDDEN を使っていますが、 SOFT_I

    dmp939
    dmp939 2010/08/23
    XMLで android:windowSoftInputMode=stateAlwaysHidden の設定も有効
  • Android textにリンクをはる

    ► 2024 (4) ► 6月 (1) ► 3月 (2) ► 2月 (1) ► 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)

    Android textにリンクをはる
  • Android 画面の縦横切り替え時に元の画面を保存

    画面の縦横が切り替わると、Activity は一度終了(onPause(), onStop(), onDestroy() )させられちゃいます。 (Activity が foreground や visibleだった時は、新たなインスタンス(前のインスタンスがonSaveInstanceState メソッドで作った savedInstance を伴って)が作られます) どうしてそうなるかと言うと、 デバイスのコンフィグレーション(画面の向き、入力デバイス、言語など) が変更されたら、UIはそのコンフィグレーションにマッチするように更新 する必要があるからなんです。 例えば、縦用のレイアウトと横用のレイアウトが用意されている場合は、 リソースの再取得が必要になりますよね。 でも、コンフィグレーションの変更があっても Activity の再スタートしたくない場合はどうすればいいのでしょう? そ

    dmp939
    dmp939 2010/04/14
    縦横切り替え/Ctrl+F12
  • 1