2011-09-15 8 views
1

このトピックで過去1時間の精練を行っていますが、有望な結果がいくつか見つかりましたが、私はそれらをする必要があった。私はX Y座標を使ってサウンドをトリガーしていますが、これは素晴らしいことです。スクリーンを8つの四角形に分割し、それぞれの四角形で異なるサウンドをトリガーしたいとします。 1つの大きな問題があることを除いて、私はこれをかなり簡単に行うことができます。エミュレータ(私は800x440ピクセルです)にXとYの値を使用していて、私のEVO 3D(私は960x540だと思います)で同じプログラムを使用している場合、プロセス全体が本質的に台無しです。画面全体ではなく、私の画面が使用されています。 touchEventsの真のXとY値の代わりに、密度ピクセルに似た何かを使用する方法はありますか?そうすることで、すべてのデバイスごとにすべてがスケールされます。私はgetRawX()/ Yを使ってみましたが、何も変更していないようです。相対的なスケールではなく、各デバイスで動作するピクセルのピクセルです。誰かが私の周りの方法に指示することができますか?ありがとう、私はそれを感謝します!異なる解像度のデバイスにgetX()とgetY()の値を使用する(相対スケール)

編集: マウスの簡単なアドバイスのおかげで、私はそれを理解しました。私は不思議に思っている人のために何をしたのですか?

x = e.getX(); 
    y = e.getY();  
    DisplayMetrics gettotalY = new DisplayMetrics(); 
    getWindowManager().getDefaultDisplay().getMetrics(gettotalY);  
    toty = gettotaly.heightPixels; 
    ym1 = (float) (toty * 0.5);  

答えて

3

私はここで問題を見ることはできません。 MotionEvent.getX/Yは、アプリケーションのウィンドウの上端/上端を基準にしたピクセル値をそのサイズまで返します。 getRawX/Yはピクセル値も返しますが、画面全体を基準にします。

どのようにこのピクセル値を使用するかはあなた次第です。例えば。それをウィンドウの幅/高さで割り、任意の画面解像度で0-1の範囲の浮動小数点値を取得します。または他の数学をする。

これは単純な計算で、DPIはここでは役割を果たしません。 しかし、どこに描画するかは、ユーザーが画面に触れるはずのグラフィックスによって異なります。

+0

したがって、私は4つのボタンがY軸に均等に分割されているとします。画面が800ピクセル(Y方向)の場合、各ボタンは200ピクセルになります。基本的には、Yの値を4で割っています。私のコードをどのようにセットアップするのですか?私は現在、「if(y> 1&y <200 {\t PLAY SOUND}」と言っていますが、スクリーンを4にカットする方法を教えてください。「int y1 = "1/4"、int y2 = "2/4" "? – Tanner

+0

最初に、Androidではボタンとしてウィジェットを使用し、Androidシステムでボタンのクリックを管理できるようにします。 とにかく、 int buttonIndex = getY()* numButtons/windowHeight(); numButtons-1にインデックス0を取得します。 –

関連する問題