Androidアプリ開発入門のFAQとおすすめアンドロイドアプリ・ゲーム紹介サイトです。

タッチパネルの位置情報を調べる

2011年6月14日(火) 4:02 PM

タッチパネルの位置情報を調べるには、onTouchEventメソッド内で、

event.getX()
event.getY()

を使います。パネルのタッチしているX座標とY座標がわかります。

ブログ記事「char配列を、String変数に変換する」のサンプルに、タッチパネルの位置情報を表示する機能を加えてみました。

タッチパネル位置情報1

画面をタッチすると

タッチパネル位置情報2

*src/com.example.android.sample/Sample.javaの変更後の全ソース:


package com.example.android.sampletwo;

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.MotionEvent;
import android.view.Window;
import android.view.WindowManager;
import android.widget.TextView;

public class SampleTwo extends Activity {
 private TextView aTextView;
 private TextView bTextView;
 private char[] charactor = new char[4];
 private String moji;
 private int x, y;

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);

        setContentView(R.layout.main);
    }

    @Override
    public boolean onTouchEvent(MotionEvent event) {

     aTextView = (TextView) findViewById(R.id.myTextView);
     bTextView = (TextView) findViewById(R.id.myTextPosition);
     x = (int)event.getX();
     y = (int)event.getY();

     switch (event.getAction()) {

      case MotionEvent.ACTION_DOWN:
       charactor[0] = (char)(68); //D
       charactor[1] = (char)(79); //O
       charactor[2] = (char)(87); //W
       charactor[3] = (char)(78); //N
       moji = String.valueOf(charactor);
       aTextView.setText(moji);
       bTextView.setText("X:" + x + " Y:" + y);
       break;

      case MotionEvent.ACTION_UP:
       charactor[0] = (char)(85); //U
       charactor[1] = (char)(80); //P
       charactor[2] = (char)(32); //スペース
       charactor[3] = (char)(32); //スペース
       moji = String.valueOf(charactor);
       aTextView.setText(moji);
       bTextView.setText("X:" + x + " Y:" + y);
       break;

      case MotionEvent.ACTION_MOVE:
       charactor[0] = (char)(77); //M
       charactor[1] = (char)(79); //O
       charactor[2] = (char)(86); //V
       charactor[3] = (char)(69); //E
       moji = String.valueOf(charactor);
       aTextView.setText(moji);
       bTextView.setText("X:" + x + " Y:" + y);
       break;

      case MotionEvent.ACTION_CANCEL:
       aTextView.setText("ACTION_CANCEL");
       break;

       }

     return super.onTouchEvent(event);
     }

}


*res/layout/main.xmlの変更後の全ソース:


<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
<TextView
 android:id="@+id/myTextView"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="@string/hello"
    />
<TextView
 android:id="@+id/myTextPosition"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="@string/position"
    />
</LinearLayout>


*res/values/strings.xmlの変更後の全ソース:


<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="hello">Hello World, SampleTwo!</string>
    <string name="app_name">Sample02</string>
    <string name="position">X:00 Y:00</string>
</resources>


その他のソースコードは、ブログ記事「char配列を、String変数に変換する」のサンプルと同じです。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

コメントの更新情報

トラックバックURL

http://www.appli-info.jp/archives/814/trackback

* RSS FEED

広告