EditText の inputType とは EditText に入力される文字の種類を限定したいとき、 inputType プロパティを指定することで IME に入力制限をかけることができます。XML で指定することもできますし、 Java から指定することもできます。例えば以下のように電話番号に使われる文字だけ入力させるようにできます。 XML で指定する場合 <EditText android:id="@+id/edit_text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:inputType="phone" />
30億のデバイスのみなさん、こんにちは、ジャバです。 何の前触れもなく、2013年 Androidアプリ開発で使いたいライブラリを発表します。 JsonConverter => gson JSONRPCでサーバーサイドと通信を行うときに、毎回パーサーを書くのは面倒なので、JsonConverterを使いたくなります。 そこで開発ではgoogleが開発しているgsonを使っていました。 NamingPolicyやDeserializerの使い方を覚えれば、手でjsonのパーサーを書くより圧倒的に楽で、 Person person = gson.fromJson(json, Person.class); このように一行でjsonからオブジェクトに変換できるようになり、 String json = gson.toJson(person); 一行でオブジェクトからStringに変換することも出来ま
Android3.0(HoneyComb)から、AndroidにはLoaderという非同期にデータをロードする仕組みが追加されています。 本エントリでは、そのLoaderの仕組みの中でもAsyncTaskに似た汎用的なLoaderのAsyncTaskLoaderの使い方を紹介しています。 以下スクリーンショットの様な、端末内のアプリケーション一覧を読み込むアプリケーションを作成し、 AsyncTaskLoaderを紹介していきます。 本サンプルは、Android Developersのサンプルを参考に処理を簡略化しています。 AsyncTaskLoaderを深く理解するために、リンク先も参考にするとよいと思います。 それでは続きをどうぞ。 AsyncTaskLoaderを利用する はじめにAsyncTaskLoaderを利用する場合の重要なメソッドを以下に纏めます。 以下に挙げたメソッドは
ADT Rev.20でAndroidプロジェクトを新規作成する際の"Create Activity"(図1)で "MasterDetailFlow"を選択した場合に作成される雛形の設計・実装を調査しました。 MasterDetailFlowはよくある2パネルのアプリを作成します。 ただし、画面領域を十分に確保できない場合は1ペインで表示します。 イメージはこんな感じです。 http://developer.android.com/images/fundamentals/fragments.png MasterDetailFlowなプロジェクトを作成すると下記の構成で雛形が作成されます。 パッと見でこの辺がパネル数を制御してそうですね。 layout/activity_item_twopane.xml values-large/refs.xml values-sw600dp/refs.xml
フォーカスがどこにあるのかわからなくなるから、キーボード操作できなくなる。 「タッチ操作には何の問題もない!!」と思うかもしれないけど、タッチしたときのフィードバック(押されたときに色が変わるやつ)が無くなるから、タッチ操作もしにくくなる。 よく知らないけど Google TV でアプリが動くようになったらカーソルキーできないと困るんじゃないかな。たぶん...。 直接指定してしまう list_row.xml <?xml version="1.0" encoding="utf-8"?> <TextView xmlns:android="http://schemas.android.com/apk/res/android" android:background="#fff" android:layout_width="fill_parent" android:layout_height="wr
第9引数のisTouchEventはonTouchEventからの呼び出しを判定するためのフラグです。overScrollByメソッドは実装者が独自に呼び出すことが可能な一方、onTouchEventの処理中にフレームワークによって呼び出されています。このような理由から第9引数は、onTouchEventでの処理と重複しないために必要とされています。 サンプルでは簡略化のためY座標(縦方向)に対する操作のみを行います。サンプルコードではXに関する要素を0として、Yに関する要素を残しています。第8引数のmaxOverScrollYに関しては互換性維持のためフレームワークのデフォルトでは0、つまりオーバースクロールしない設定になっています。ここは適当な値(今回は200)に変更します。 onOverScrolledメソッドの実装 オーバースクロールした結果はonOverScrolledメソッドに
ダイアログの周りの領域をタッチしたときにダイアログを閉じるかどうかは setCanceledOnTouchOutside() で設定できます。 Honeycomb 以降では、ダイアログの外部をタッチしたときにダイアログが閉じるようになっているので、それが嫌な場合は Dialog のインスタンスに対して setCanceledOnTouchOutside(false) を呼べば OK です。 DialogFragment なら onActivityCreated() で getDialog() で Dialog のインスタンスを取得できます。 なんでこうなってるのかを調べたら意外に深かった。。。 まず、Dialog の setCanceledOnTouchOutSide() は内部では Window に対して setCloseOnTouchOutside() を呼んでいます。 http://
もともとは 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
それではつづきをどうぞ。 1.GridLayoutへのパラメータ指定 GridLayout自身へは、表1の通り2つのパラメータを設定する必要があります。 columnCount,rowCountは column × row の格子を用意するという宣言に当たります。 サンプルでは、以下の通り、4×4マスの格子を作成しています。 <GridLayout android:id="@+id/gridLayout1" android:layout_width="match_parent" android:layout_height="wrap_content" android:columnCount="4" android:rowCount="4" > ...省略 2.GridLayoutの子Viewへのパラメータ指定 column,rowの指定 GridLayoutの子Viewには、android
xmlリソースファイルにメニューを定義して、これを読み込んで表示させる事ができる。 xmlリソースファイルの作成 メニューのリソースファイルを作成するには、eclipseのパッケージ・エクスプローラにてAndroidプロジェクトを選択し、 右クリックにて表示されるメニューより、「新規(W)」→「Android XML File」を選択する。 以下のようなダイアログボックスが表示されるので、 ファイル欄にxmlリソースファイルを保存するファイル名を(ここではmenu.xmlを入力)、 「What type of resource would you like to create?」の下に表示されているラジオボタンより、 「メニュー」をチェックして完了ボタンを押す。 これにより、「プロジェクトルート/res/layout/」デレクトリに、 xmlファイルが作成され、以下のような画面が表示される
2012年05月28日14:11 カテゴリandroid(開発)雑記 ViewPagerで表示ページが変わったことを検知する方法 いやー久しぶりにはまった。 AndroidのUIとして 画面の左右フリックでページを遷移する。というものがある。 AndroidのHOME画面みたいな動き。 フリック時に指に追従し、ある程度フリックしてから離すと前後のページが表示されるUI iPhoneではおなじみだが、Androidで開発しようとするとちょっと大変だった。 最近ではそれが簡単に実装できる android.support.v4.view.ViewPager というものがある事を知った。 まぁ、この際使い方はさておき。 何にはまったかというとタイトルにあるように、標準では左右にフリックした時の現在表示したページの情報が取れないのである。 そいういうプロパティも無いし、取得するようなメソッドも無い。
私はViewPagerが嫌いだ。 正確に言うとPageの要素にListFragmentを置いてるViewPagerが嫌いだ。 リストをスクロールしたいのにちょっとした指の動きでそれがスワイプに変わるからだ。 しかしスワイプが便利であることは事実なので、妥協案として端っこからのスワイプのみ受け付けるViewPagerを作ろうと思い立った。 まず、ViewPagerのスワイプを単に無効化するのはググればすぐに出てくるが、ViewPagerをextendしたカスタムViewPagerを作り、オーバーライドしたonTouchEvent(MotionEvent event)とonInterceptTouchEvent(MotionEvent event)の返り値にfalseを与えればいい。 まったくスワイプしない前提なら、他にボタンなどを作って、onClick時にsetCurrentItem()など
PagerTabStrip とは PagerTabStrip は ViewPager にタブ機能を追加するための View です。Support Package に含まれているので Android 1.6 (APIレベル4) から使用することができます。代表的な例として Google Play ストアアプリのアプリ一覧画面で使われています。 今回は PagerTabStrip を使ったサンプルとして Google Play ストアアプリを真似た下図のようなアプリを作ってみたので、その手順を解説したいと思います! PagerTabStrip の使いかた 1. レイアウトを作る まずはレイアウトを作ります。ViewPager にタブを表示するには、以下のように ViewPager に PagerTabStrip をネストします。これでタブを表示するための最低限の実装は完了したも同然です。簡単で
FragmentTabHost とは FragmentTabHost は Fragment をタブで切り替えるための View です。Android 1.6 から使用することができます。Activity にタブを表示して View を切り替える実装は以前は TabActivity を使っていましたが、現在は非推奨になっています。この機会に最新の実装方法を覚えておきましょう! FragmentTabHost の使いかた 1. レイアウトを作る まずはレイアウトを作ります。 <android.support.v4.app.FragmentTabHost xmlns:android="http://schemas.android.com/apk/res/android" android:id="@android:id/tabhost" android:layout_width="match_pa
今更な感じですが、TabActivityとかActivityGroupがdeprecatedになっちゃってタブ画面を作るにはどうすればいいか試行錯誤した結果です。 そもそもTabActivityとかActivityGroupは非常に使いにくいものでしたが… 作ったのはGitHubにあげてあります。(名前は良いのがまったく思いつかず…) STAR-ZERO/TabNyan · GitHub 使い方はREADMEにそれっぽく書いてますがソース見ればだいたい分かると思います。 これを使うとFragmentのほうは特に意識せず使うことができると思います。 これを作るために色々試したことを書いておきます。 FragmentTabHost 今はFragmentを使うのが普通ですが、TabHostをFragmentに対応させるためのものがSupportLibraryにあります。 FragmentTabH
Androidのビュー(View)における各種属性の初期化処理は、従来のJSC/Swingのように手続きで書くこともXMLで宣言的に書くこともできるが、重要なのは宣言的に書く方法だ。 標準的なビューはandroidネームスペースの語彙を使用して属性を設定できる。また、カスタムビューのようにAndroidネームスペース(パッケージ)に属さないビューは要素名に直接ビュークラスの完全修飾名を設定することで記述を行う。 project\layout\main.xml この仕組みの一部を利用することで、カスタムビューも独自の属性をXMLに記述してビューに反映することができる。 拙作のCalendarViewではインフレート直後に表示する年月をXMLから読みこむことができるが、その属性値はXMLから"yyyy/mm"のフォーマットで入力された文字列を使用する。 CalendarView要素だけを抜粋
ListFragmentにデータを表示する際、単純にリストのデータを表示したい場合は、ArrayAdapterを使って表示すると思いますが、データが大量にある場合にはやっぱりバックグラウンドでやるべきですよね。 最近はバックグラウンドでの読み込みはLoaderを使ってやるのが良いみたいなのでLoaderを使ってみました。 データをCursorから読み込み場合にはCursorLoaderというクラスがあって簡単に実装できるのですが、Listから読み込むにはAsyncTaskLoaderで独自のLoaderを作成する必要があります。 とうわけでコードです。 まずはLoader。 import java.util.List; import android.content.Context; import android.support.v4.content.AsyncTaskLoader; pub
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く