0

私は Android アプリに取り組んでおり、UI に目を見張るものを追加したいと考えています。いくつかのテキスト フィールド、ボタン、ギャラリーがあるアクティビティ (MainActivity と呼びましょう) があります。私が達成したいことは次のとおりです。ユーザーがこのアクティビティのどこかに触れると、触れた場所に何らかの視覚効果があるはずです (たとえば、輝きなど)。

したがって、私の質問の重要な部分は次のとおりです。a)ユーザーがどこに触れたかを判断するにはどうすればよいですかb)効果を画面に(アクティビティへの「オーバーレイ」として)描画するにはどうすればよいですか。

役立つ回答をお寄せいただきありがとうございます。

(この回答を確認しましたが、私の状況には当てはまらないようです。)

4

4 に答える 4

2

まず、ルート レイアウトに onTouchListener を追加する必要があります。次に、ユーザーが画面に触れた座標を取得できます。例 :

   float x,y;
   rl = (RelativeLayout) findViewById(R.id.root_layout);
   rl.setOnTouchListener(new OnTouchListener() {

        @Override
        public boolean onTouch(View v, MotionEvent event) {
            float x = event.getX();
            float y = event.getY();
                return super.onTouchEvent();
        }

    });
于 2012-08-28T08:03:54.347 に答える
1

あなたの質問にさらに答えるには、オーバーレイを表示するには、APIDemos -> Graphics -> OpenGL ES -> Translucent GLSurfaceView を見てください。これは、アクティビティにオーバーレイを作成するのに役立ちます。API デモには、他の例もあるかもしれません。Android の API デモは、いくつかの既知の問題に対処するための良い例です。

于 2012-08-28T08:50:39.147 に答える
1

onTouchEventアクティビティのメソッドをオーバーライドする必要があります。その後、タッチ イベントの座標を取得できます。

@Override
public boolean onTouchEvent(MotionEvent event) {

    float touchX = event.getX();
    float touchY = event.getY();

    switch(event.getAction()) {
    case MotionEvent.ACTION_DOWN:
        // touch down
        break;
    case MotionEvent.ACTION_MOVE:
        // movement
        break;
    case MotionEvent.ACTION_UP:
        // touch up
        break;
    default:
        // default
    }

    return super.onTouchEvent(event);
}
于 2012-08-28T08:02:06.090 に答える
0

ICS を使用している場合は、[設定] アプリケーションの [開発者向けオプション] を確認することをお勧めします。ICS を使用していない場合は、APIDEMOS で touchevents を確認できると思います。彼らはタッチで線を引きます。その中のコードは、あなたを始めることができます。

于 2012-08-28T08:02:38.883 に答える