ブックマーク / sakplus.jp (22)

  • setHasOptionsMenu(true) を忘れるな!

    今日の話題は ICS(Android 4.0)から ActionBar を取り上げます。 ActionBar は Android 3.0 (API Level 11) から導入された Android の新しいメニューの仕組みです。 これまでは体にハードウェアキーとして「メニュー」ボタンがありましたが Android 3.0 以降では、「メニュー」を含むハードウェアボタンが基的に廃止されました。メニュー以外のボタンはそれでもソフトウェアキーとして引き続き画面下部に配置されるのですがメニューボタンだけは廃止され Action Bar を使うことが推奨されています。 Action Bar の構成 Action Bar は4つの部分から構成されています。(参考サイト) App Icon View Control Action Buttons Action Overflow App Icon

    kkeisuke
    kkeisuke 2012/02/26
    ActionBar
  • Fragment を生成するもう1つの方法

    前回の記事ではレイアウトファイルを使用して Fragment の生成を行いました。レイアウトが固定の場合はそれで良いのですが、レイアウトを動的に変更したい、あるいはボタンを押すなどの操作を行いその結果としてレイアウトの一部を変更させたい場合などは今回取り上げる方法が有効です。 その方法とは、予め Fragment を挿入する領域を確保し(サンプルでは LinearLayout)そこに Fragment を挿入する方法です。 今回のサンプルの画面は前回とほぼ同じです。 まず、レイアウトファイルでは Fragment を挿入する枠組みを用意します。 (res/layout/main.xml) <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/re

    kkeisuke
    kkeisuke 2011/08/21
    Android
  • レイアウトを分割しよう!(Fragment 編)

    以前、『レイアウトを分割しよう!』という記事を書きましたがそれと同じことが fragment を使うと簡単に実現できちゃいます。Fragment は Honeycomb(Android 3.0)から導入された機能ですが、Backport を使えば、それ以前のバージョンの Android でも使用できちゃいます。Google の中の人も積極的に使ってくださいと言っていますので、これを使わない手はないですね。 Fragment を使ったサンプルはまだ意外と少ないのでなるべき最小構成でのサンプルを目指します。といってもそれだけでは寂しいのでActionButton を付けてみました。ActionButton はメニューに変わる新しい機能でよく使うボタンはメニューを開くことなく押せるようになっています。この ActionButton は Fragment をホストする Activity に付与して

    kkeisuke
    kkeisuke 2011/08/16
    Fragment は Honeycomb(Android 3.0)から導入された機能ですが、Backport を使えば、それ以前のバージョンの Android でも使用できる。
  • WebView でロード中にダイアログを表示する

    インターネットアクセスには時間がかかる場合が多いので、画面遷移中にプログレスダイアログを表示させたい場合があります。今日はそんな時に使用できる Tips です。 ただ WebView の画面遷移中にプログレスダイアログを出すだけでは面白くないのでダイアログにはカスタムビューを使用します。また、進捗を分かり易く表現するためにアニメーションを使用してみましょう。 サンプルアプリ 今日のサンプルアプリではページの切替時に以下のような進捗を示すダイアログを表示させます。ちょっと見づらいですが画面中央に透過の背景を持つダイアログが表示されています。中央のインディケータはアニメーションしています。 ダイアログの表示/非表示のタイミング ダイアログを表示/非表示させるタイミングには WebView の持つ WebViewClient の onPageStarted, onPageFinished を使い

    kkeisuke
    kkeisuke 2011/07/18
    Android
  • Scroller を使ってみる。

    今回のテーマは Scroller を使用したカスタムビューの作成です。Scroller は座標を管理するオブジェクトで初期位置とターゲットの座標、あとそれに要する時間を指定してあげることでその時点での座標を計算し取得できます。オブジェクトの生成時に Interpolator を指定できるので移動量を任意に調整することもできます。 また View には computeScroll というメソッド持ち、その表示位置を変更させることができます。カスタムビューの中で computeScroll をオーバーライドしてあげることでカスタムビューにアニメーションを持たせる事ができるようになります。Scroller はここで使います。こんな感じで。 @Override public void computeScroll() { if (mScroller.computeScrollOffset())

    kkeisuke
    kkeisuke 2011/07/08
    Android 座標を管理するオブジェクトで初期位置とターゲットの座標、あとそれに要する時間を指定してあげることでその時点での座標を計算し取得
  • レイアウトを分割しよう!

    まずはお詫びから、6/5のエントリで「カスタムダイアログと遷移アニメーション」のソースコードが GoogleCode のレポジトリに登録されていませんでした。なぜかローカルの svn のレポジトリに登録されていました。orz 日、登録しましたのでよろしくー。 で、今日のお題は「レイアウトを分割しよう!」です。簡単な場合やひとりで開発する場合はさておき複雑な画面(Activity)やひとつの画面を複数人で開発しなければならない場合、レイアウトファイルが大きくなりすぎて見通しが悪くなったり他の人の修正とコンフリクトを起こしひどいめにあったりする場合がよくあると思います。今回はそんなときに使える Tips です。 今日のサンプルアプリ 今日のサンプルアプリの画面はこんな感じです。リセットボタンが1つに数字が3つ。数字はそれぞれ別個のTextViewです。青のビューの数字が1の位、緑のビューの数

    kkeisuke
    kkeisuke 2011/06/30
    Android
  • カスタムダイアログと遷移アニメーション

    今日はカスタムダイアログ作成の話しです。標準のダイアログではなく iPhone のような洒落たダイアログを作成するにはどうしたら良いでしょう。そのためには、レイアウトのカスタマイズと画面遷移の際のアニメーションの設定が必要です。この2つをすることで Android でもこんなカスタムダイアログを作成できます。(サンプルの画面はそれほど洒落た画面ではありませんね。 (^^; でも頑張ればちゃんとイカした画面が作成できます!) 左のダイアログは中央に表示するカスタムダイアログです。レイアウトはレイアウトファイルで自由に指定できます。右は iPhone のアクションシートのようなカスタムダイアログです。ダイアログ画面が下からせり上がります。 このような画面遷移のアニメーションはアニメーションファイル(res/anim/*.xml)で作成します。これをスタイルファイル(res/value/styl

    kkeisuke
    kkeisuke 2011/06/06
  • プログレスダイアログから処理を中断する。

    処理を別スレッドにしてその間はプログレスダイアログを出す。こんなこと良くあると思います。では途中で処理を止めたいときはどうすればいいんだろう?こんな時のテクニックです。 まずはサンプルアプリをご覧ください。ボタンを押すと中止ボタンのついたプログレスダイアログを表示し、中止ボタンを押すと「中止しました」のトーストメッセージを表示し、中止ボタンを押さないで処理が終了すると「終了しました」のトーストメッセージを表示します。 開始ボタンを押すと中止ボタン付きのプログレスダイアログを表示すると同時にバックグラウンドで動作するスレッドを作成します。 Button btnStart = (Button)findViewById(R.id.btnStart); btnStart.setOnClickListener(new OnClickListener() { @Override public v

    kkeisuke
    kkeisuke 2011/05/25
    Android progressdialogue
  • 必要になってから ListView にデータを追加する。

    昨日に続き ListView ネタをもうひとつ紹介します。 サーバからデータを取ってくる時などで一度にデータを持ってくるのではなく必要に応じてデータを追加したい時があります。なるべくならユーザ操作無しで。そんな時に使えるテクニックです。 サンプルアプリは47都道府県を10件ずつ表示させるアプリです。リストの最後に到達する毎に10件のデータを追加します。データはサーバではなく自前で持っているので瞬時に入手できるのですが、サーバにアクセスしている雰囲気を出すため少々タメを入れています。 ListView が最後の行まで到達したかどうかは ListView に setOnScrollListener を指定することで取得できます。データを追加したあとにデータの更新が完了したことを adapter の notifyDataSetChanged を使って ListView に知らせてあげます。 @O

    kkeisuke
    kkeisuke 2011/05/23
    Android 最後までスクロールしたら追加
  • ListView で複数選択

    今回は ListView を使って複数選択する Activity を作る場合の Tips です。 ListView の要素上に CheckBox 風の画像をのせたい場合がままあります。でも、CheckBox 部品をそのままのせてしまっては上手く動きません。これでは CheckBox 部分のタッチにのみ反応し、それ以外の部分を押しても選択できなくなってしまいます。 ListView の要素の選択状態は isItemChecked メソッドで取得できることができます。これを使いましょう。このメソッドで取得した選択状態を使って On/Off の画像を切替えたり、On 画像の表示/非表示を切替えるのです。要素自体の背景色を変えてしまう事もできます。 左図は On/Off 画像の切替、右図は On 画像の表示/非表示の切替の例です。ともに選択された要素の背景色をも変更させています。OKボタンを押すと

    kkeisuke
    kkeisuke 2011/05/21
    Android
  • カスタムタブのプレス状態とフォーカス状態

    以前、カスタムタブについてのエントリ『カスタムタブと selector』を書きましたが、カスタムタブを使うとタブのプレス状態やフォーカス状態で背景イメージが変わらないという指摘を頂きました。試してみようと思いましたが、このエントリのサンプルアプリではプレス状態やフォーカス状態の背景を設定していませんでしたので新たにサンプルアプリを作成しました。 左図は「さん」のタブがフォーカス状態です。右図は「さん」のタブがプレス状態です。 drawable/tab_focus.xml, drawable/tab_press.xml を追加し、念のため drawable/tab.xml は Android のソースのタブの部分の内容にそっくり入れ替えました。また、Main.java の内容を一部修正しました。 private class MyView extends FrameLayout { priv

    kkeisuke
    kkeisuke 2011/05/17
    Android tab
  • 第8回 Android勉強会 in 札幌 でしゃべったよー

    Google Code ブログ記事中のサンプルコードを Google Code で公開しています。 Ads CF電話帳を公開しました。アンドロイド端末から直接ダウンロードする場合はここをクリック [ダウンロード] 紹介ページを表示する場合はここをクリック [紹介ページ] Twitter Profile 札幌のフリーランスです。Android やってます。このブログでは自作のAndroidアプリの紹介や Androidの話題を中心に自分の興味を持った話題に関して取り上げていきます。 I am a IT engineer in Sapporo, Japan. I am interested in Google Technology such as Android. I have published some Android Applications to Google's Android Ma

    kkeisuke
    kkeisuke 2011/04/26
    Android 3.0 (Honeycomb) で始める Android Tablet アプリ開発
  • getDrawingCache で View をキャプチャーせよ!

    今日は View をキャプチャーする getDrawingCache の紹介です。 Android でアプリケーションを書いていると表示している画面のサムネイル表示をしたい場合が出てきます。こんなときに getDrawingCache が使えます。getDrawingCache は View クラスのメソッドですので ImageView や View を継承して自前で作成したカスタムViewなどで使用することができます。 SDK の APIDemos FingerPaint を元にサンプルアプリを作りました。描いた画像をファイルに保存しそのサムネイルを表示することができます。 private void saveToFile(String filename) { try { FileOutputStream out = openFileOutput(filename, MODE_PRIV

    kkeisuke
    kkeisuke 2011/04/19
    Android
  • ボタンをチューンしよう!

    今日はボタンのカスタマイズの話しです。 Android で用意されているボタン類はカスタマイズで見栄えを変えることができます。ここでは Button, CheckBox, RadioButton, ToggleButton で見栄えをチューンしてみました。左がチューン前、右がチューン後です。(チューン後に見栄えが良くなっているかどうかは微妙ですが、、) ボタンのクラス階層 よく使うボタン部品には Button, CheckBox, ToggleButton, RadioButton, ImageButton などがありますが、これらの部品のクラス階層は以下のようになっています。 java.lang.Object android.view.View android.widget.TextView android.widget.Button android.widget.Compoun

    kkeisuke
    kkeisuke 2011/03/31
    Android Button, CheckBox, RadioButton, ToggleButton カスタマイズ
  • カスタムインデックス

    次に『CF電話帳』で使用しているインデックスの実装方法を紹介します。 といっても難しいことをしているわけではありません。 インデックスには Gallery を使用しています。 サンプルアプリ 今回のサンプルアプリではこのカスタムインデックスの部分を抜き出して紹介します。 このサンプルアプリでは連絡先のグループへのアクセスを行います。 AndroidManifest.xml でパーミッションの追加を忘れないように。 <uses-permission android:name="android.permission.READ_CONTACTS" /> 次にメインとなるソースコードです。至って普通ですね。選択した項目は selector を使って表示色を変えています。また選択内容によってコンテンツの内容および背景色を変えています。 public class Main extends Activ

    kkeisuke
    kkeisuke 2011/03/22
    Android Gallery
  • カスタムタブと selector

    今日はタブのカスタマイズの話題です。CF電話帳では電話帳、発着信履歴、連絡先をタブで切替えています。この際、標準のタブではなくカスタムタブを使用しています。 サンプルアプリ 今回のサンプルアプリではこのカスタムタブの部分を抜き出して紹介します。 まずは肝となる部分のソースを記載します。ここで大事な部分は tabHost の indicator に独自に作成した View を指定するところです。 public class Main extends TabActivity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); final TabHost tabHost = getTa

    kkeisuke
    kkeisuke 2011/03/20
    Android
  • Call をフックするもうひとつの方法

    Android の会のメーリングリストで電話の発信のフックについての議論が盛り上がってますが、ACTION_CALL_PRIVILEGED をフックするっていう手もあるんですね。私も知りませんでした。というわけで team-hiroq さんの「CALLアクションをフック – Android」という記事を参考に実際にやってみました。 うーむ。フィルターに追加するだけで簡単に Call をフックできちゃうんですね。知らなかったー せっかくなのでこれもサンプルに加えちゃいます。ただ team-hiroq さんと同じ方法では面白くないので設定によってこのフィルターを有効にしたり無効にしたりできるようにしました。この際 IntentFilter 自体を Activity に追加したり削除したりできないか調べたんですがそのような API が見当たりません。そんなとき Twitter で @dumapi

    kkeisuke
    kkeisuke 2011/03/11
    発信のアクション
  • Drag and Drop を使う

    今回は2つの View の間でアイテムを Drag and Drop で行き来させるサンプルです。 まず、上下に2つの GridView ベースのカスタムビューを用意します。その中に予め5つのアイテムを配置します。これらのアイテムは Drag and Drop で上下の View を行き来させることができます。 サンプルコード このサンプルは明日の鍵さんのブログの記事を参考にさせてもらいました。 res/layout/main.xml Drag and Drop をサポートした GridView ベースのカスタムビュー (sak.samples.DragAndDropView) を2つ配置します。 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/a

    kkeisuke
    kkeisuke 2011/03/04
    Android ドラッグ & ドロップ
  • overridePendingTransition って何?

    前回に引き続き、技術ネタです。これまでに取得した Andorid に関するノウハウを忘れないうちに記録しちゃいます。 さて、表題に挙げた overridePendingTransition。使った事(聞いた事)ありますか? overridePendingTransition は Activity 間の遷移にアニメーション効果を加えることができる Activity クラスのメソッドです。API Level 5 で追加されたメソッドなので Android 2.0 以降で使用可能です。 使い方は簡単で startActivity() または finish() の後でこのメソッドをコールするだけです。(後ってとこが重要なので間違えないように!)指定するのは今の画面を閉じるアニメーションと次の画面を開くアニメーションでいずれもリソースで定義したアニメーションのリソースIDを指定します。プログラムで

    kkeisuke
    kkeisuke 2011/02/28
    Andorid Activity 間の遷移にアニメーション
  • View 切替でアニメーション効果を使う

    昨日の続きです。昨日は Activity の切替を overridePendingTransition を使って Activity の遷移にアニメーション効果を付ける方法を書きましたが、今日は同じことを View で行う方法を記載します。 複数の View を切替えるには ViewAnimator を使うのが便利です。似た機能を持つクラスで ViewFlipper と ViewSwitcher がありますが、ViewFliper は定期的にビューを自動的に切替える機能が追加したクラスで、ViewSwitcher は2枚の View に特化したクラスです。ここでは ViewAnimator を使います。 この手法の長所はシステム設定(アニメーション設定)に影響を受けないことです、一方、画面レイアウトや実装が複雑になってしまうかもしれません。 サンプルコード サンプルアプリの仕様は機能と同じで

    kkeisuke
    kkeisuke 2011/02/28
    Android