2011/10/15

子Viewのタッチイベントを取得する

子Viewの実装の有無に関わらず、親となるViewGroupでタッチイベントを取得したい時ってありますよね。
そんな時に便利なのがViewGroup#onInterceptTouchEventというメソッド。

これを利用するには下のサンプルのようにViewGroupを継承した独自ViewGroupクラスを作成し、その中のonInterceptTouchEventを上書きする必要があります。
ひとまず流れだけ。


ちなみにこれをXMLから指定する場合は
こんな感じで使います。

2011/10/10

LayoutInflaterでツボにはまる

LayoutInflaterを利用する際は こんな感じで利用していると思いますが、ここで落とし穴。

LayoutInflater#inflate(int resource, ViewGroup root, boolean attachToRoot)
これの第2引数ViewGroupにnullを指定すると、item.xmlのパラメーターが自動でwrap_contentになってしまう。


item.xml
こんな風に指定してあったパラメーターが実際の表示上では こんなことに。。。


面倒臭くてもinflateでmatch_parent(fill_parent)パラメーターが必要なViewをもってくる時は、第2引数の親となるViewGroupをきっちり指定しましょう。

2011/09/25

Windowsでメーカー製USBドライバーを利用せずにADBで接続する

Windowsで利用していると実機を認識させるのにUSBドライバーを毎回インストールするのは面倒臭いです。
実際はメーカーのUSBドライバーを利用せずとも、Android SDKで入手できるGoogle製のドライバーを数行書き換えるだけで利用できるらしいです。


...android-sdk\extras\google\usb_driver
に「android_winusb.inf」というファイルがありますが、これに2行ほど加えるだけ。


まずは端末のハードウェアIDを確認します。
認識させたい端末を接続するとデバイスマネージャー上で不明なデバイスとして登録されているはずです。プロパティー>詳細>ハードウェアIDを確認すると

こんな文字列が得られます。

今回必要なのは
USB\VID_04DD&PID_939A&REV_0100&MI_01
この部分です。


上に記したandroid_winusb.infを開くと こんな文字列が見られるかと思います。,
ここに こんな感じで2行書き加えればOKです。
ちなみにこれは64ビット版Windowsの場合ですので、32ビット版を利用中の場合は[Google.NTx86]下に書き加え。。。た方がいいかもしれません?(未検証)


これを書き加えたらデバイスマネージャーから手動で上記フォルダーを指定してドライバーのインストールをすれば終了です。