Browsing articles tagged with " onTouchEvent"

タッチパネルのダブルタップや長押しを検出する

3月 20, 2011   //   by kseto   //   デバイス  //  No Comments

「タッチイベントを取得する(onTouchEventとMotionEvent)」でも紹介したように
タッチパネルのシングルタップや座標の取得はonTouchEventとMotionEventを利用することで
実現することができます。しかし、ダブルタップや長押しのように少し複雑なタッチイベントは
onTouchEventとMotionEventだけでは取得できません。

今回紹介するGestureDetectorクラスではダブルタップや長押しのような複雑なタッチイベントを簡単に取得するためのインタフェースやメソッドを提供しています。

詳しい説明はつづきからどうぞ。

Read more >>

Viewをカスタマイズ(独自実装)する

1月 25, 2011   //   by @mhidaka   //   アプリケーション  //  No Comments

AndroidではViewクラスも拡張して独自機能を追加することが可能です。カスタマイズのサンプルとして、Viewにお絵かきできる機能を追加してみます。
今回、タッチ座標の取得にはonTouchEventを使っています。onTouchEventについては以前の記事タッチイベントを取得する(onTouchEventとMotionEvent)を参考にしてください。

独自Viewの作成方法は続きをどうぞ。
Read more >>

ListViewでOverScrollする

1月 4, 2011   //   by @mhidaka   //   ユーザインターフェース  //  No Comments

Android SDK 2.3より、OverScrollが利用できるようになりました。OverScrollとは画面端まで到達した段階から遊びを持ってスクロールできる機能で、UIの向上に寄与します。サンプルプロジェクトを用意しました。GoogleCodeのTechBoosterこちら(SVNが必要です)からどうぞ。

OverScrollを使うのに必要な(代表的な)メソッドは以下の通りです

OverScroll関連メソッド

メソッド 概要
View#overScrollBy オーバースクロールに関する設定
View#onOverScrolled オーバースクロールした結果を受け取る
AbsListView#setOverScrollMode モード設定(ListViewなどで有効)


上記のうち、View#overScrollByやView#onOverScrolledがproctectedなメソッドです。そのためオーバースクロールの実装に当たっては、ListViewなどを継承した独自クラスを作成する必要があります。

本記事は

を参考に作成しました。より詳しい情報を必要な場合は、上記サイトを是非、参考にしてみてください。

サンプルコードは続きから
Read more >>

InputEventで入力デバイスを特定する

12月 21, 2010   //   by @mhidaka   //   アプリケーション  //  1 Comment

MotionEventでマルチタッチを検出する ではidによるマルチタッチ制御の方法を紹介しました。マルチタッチ検出の導入と同時に、入力デバイスを特定するための仕組み、InputEventも追加されています。InputEventはKeyEventMotionEventの親クラスで、入力機器に関する情報を持っています。

InputDeviceの主な定数

定数名 概要
SOURCE_DPAD 513 (0x00000201)十字キー
SOURCE_KEYBOARD 257 (0x00000101)キーボード
SOURCE_MOUSE 8194 (0x00002002)マウス
SOURCE_TOUCHPAD 1048584 (0x00100008)タッチパッド
SOURCE_TOUCHSCREEN 4098 (0x00001002)タッチスクリーン
SOURCE_TRACKBALL 65540 (0x00010004)トラックボール
SOURCE_UNKNOWN 0 (0x00000000)不明なデバイス


入力デバイス(ソース)を示す定数を抜粋しました。これらの定数値はビット演算のために、キリの良い値になっていません。たとえばSOURCE_KEYBOARDは0×00000101ですが下2桁が入力デバイスの分類(SOURCE_CLASS)を表します。

入力デバイスを特定するためのInputDeviceはInputEvent(MotionEvent, KeyEvent)から取得できます。
以下はサンプルコードです
Read more >>

タッチイベントを取得する(onTouchEventとMotionEvent)

7月 27, 2010   //   by @mhidaka   //   アプリケーション, ユーザインターフェース  //  4 Comments

Androidには様々な入力インターフェイスが備わっています。
ハードウェアキーボード、トラックボール、タッチスクリーンなどです。端末によっては複数の入力インターフェイスをサポートしていることがあります。今回は最も一般的なタッチスクリーンから、イベントを受け取る方法を解説します。

ユーザのスクリーン操作を受け取るにはonTouchEventメソッドを利用します。

ActivityとViewのTouchEvent

onTouchEventの呼び出し優先順位は上位のView>下位のView>Activityです。

クラスとメソッド 説明
Activity.onTouchEvent Viewで消費されなかった場合、呼び出される
View.onTouchEvent 上位レイヤーから順番に呼び出される

最も単純なソースコードは以下の通りです

public class touchEventActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }

    @Override
    public boolean onTouchEvent(MotionEvent event) {
    	Log.d("TouchEvent", "X:" + event.getX() + ",Y:" + event.getY());
    	return true;
    }
}

onTouchEventメソッドの返り値は標準でfalseですが、今回は、trueとしています。
返り値をtrueに設定すると「TouchEventを消化」したことになり、他のViewやActivityへの通知を抑制できます。

タッチパネルを指でなぞると以下のような座標値をLogcatへ出力します

07-26 16:59:22.098: DEBUG/TouchEvent(260): X:146.0,Y:320.0
07-26 16:59:22.120: DEBUG/TouchEvent(260): X:146.0,Y:316.0
07-26 16:59:22.139: DEBUG/TouchEvent(260): X:146.0,Y:316.0
07-26 16:59:24.898: DEBUG/TouchEvent(260): X:58.0,Y:154.0

MotionEventで受け取れるイベントは座標だけではなくAction(動作)など多様な情報を取り出せます。
Actionや境界値判定など続きで解説します
Read more >>

カメラの使用方法(2)

6月 19, 2010   //   by kseto   //   デバイス  //  1 Comment

今回はカメラの使用方法の後編になります。
前回はカメラをオープンして、SurfaceViewにカメラのプレビュー画面を表示するところまで紹介しました。
今回はプレビュー画面の内容を撮影し、SDカードに保存するという処理まで説明したいと思います。

詳細は続きからどうぞ。

Read more >>

技術書新刊 発売中

アンドロイドアカデミアには、CIやテスト、互換検証など実務に生きるノウハウをあつめています

技術書新刊 発売中

Android Next!はAndroid 7.0に対応したはじめての技術書です!


The Web Explorer 2はCSSの中央寄せやWebAudioなど未来を読み解く一冊です


Revised TypeScript in DefinitelylandはTypeScript 2.0(β)に対応した解説書です。インストールから型定義まで幅広くサポートしています


技術書をかこう!はエンジニアらしい執筆環境を構築、HowTo本です