Wie man Touch-Position auf dem Bildschirm (Android)

Ich entwickle Spiel in android, in diesem Spiel, ich bin mit Leinwand zu zeigen, Gitter(5*6) Kreise. Ich möchte, um zu überprüfen, Lage des Touch-Bereichs. Zum Beispiel, wenn ich berühren/Tippen Sie auf dem Bildschirm, um die zwei benachbarten Kreisen sollte es wieder Ort oder, wenn möglich, es sollte Zeile der Anzeige zwischen diesen Kreisen. Für die, die ich verwendet diese onTouchEvent () - Methode. Aber ich bin nicht immer alle Ausgabe auf meinem Bildschirm. Ich habe auf Stackoverflow gab es Verfahren gibt, aber es hilft mir nicht, hier ist der link(Wie man die Touch-position in android?). Ich bitten Sie, überprüfen Sie bitte diesen code ein und empfehlen die Lösung. Hier ist der code-Datei:

   package com.example.tap;

import android.os.Bundle;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.Context;
import android.gesture.Gesture;
import android.graphics.Bitmap;
import android.graphics.Bitmap.Config;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.util.Log;
import android.view.Menu;
import android.view.MotionEvent;
import android.view.View;

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(new board(this));
    }

    public class board extends View
    {
        Paint pBack = new Paint();
        Paint pDot  = new Paint();
        int xpos=0;
        int ypos=0;

        int cols = 5;
        int rows = 6;

        public board(Context context)
        {
            super(context);
            pBack.setARGB(255, 15, 102, 0);
            pDot.setARGB(255, 255, 255, 255);
        }

        @SuppressLint("DrawAllocation")
        protected void onDraw(Canvas canvas)
        {
            super.onDraw(canvas);
            canvas.drawPaint(pBack);
            float xStep = canvas.getWidth() / (cols + 1);
            float yStep = canvas.getHeight() / (rows + 1);
            float curCirclXpos, curCirclYpos, lastCirclXpos = 0, lastCirclYpos =0;
            //float vertical= 
//         boolean onTap(Gesture g, Point p)
//         {
//             
//         }

            for (int y = 0; y < rows; y++)
            {
                for (int x = 0; x < cols; x++)
                {
                    canvas.drawCircle((x + 1) * xStep, (y + 1) * yStep, 20, pDot);
                    curCirclXpos=x;
                    curCirclYpos=y;

                    if (y == 0)
                    {
                        //canvas.drawLine((x + 1) * xStep, yStep, (x + 1) * xStep, rows * yStep, pDot);
                        //canvas.drawLine(xpos, ypos, xpos, yStep, pDot);
                        canvas.drawLine(curCirclXpos, curCirclYpos, lastCirclXpos, lastCirclYpos, pDot);
                    }                   
                }

                //canvas.drawLine(xStep, (y + 1) * yStep, cols * xStep, (y + 1) * yStep, pDot);
            }
        }
        public boolean onTouchEvent(MotionEvent e)
        {
            xpos=(int) e.getX();
           ypos=(int) e.getY();
            switch (e.getAction())
            {
            case MotionEvent.ACTION_DOWN:
            case MotionEvent.ACTION_UP:
            case MotionEvent.ACTION_MOVE:
                //Log.d("Umar",String.valueOf(xpos));
                //Log.d("Farooq",String.valueOf(ypos));

            break;

            }
            return false;


        }
    }


    @Override
    public boolean onCreateOptionsMenu(Menu menu) {

        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }


}
  • Sie müssen code hinzufügen, um Ihre switch-event, die derzeit Ihr code wahrscheinlich bekommen die X-und Y-Werte aber nichts zu tun mit Ihnen Versuchen", Log.d("DEBUG", String.valueOf(xpos));" und überprüfen Sie Logcat sehen, wenn es zeigt die X-co-ord auf touch.
  • Ja, es hat funktioniert. Was wäre die print-Anweisung für den Bildschirm.
  • Sie müssten müssen die co-ords aus dem touch-Ereignis zu ziehen, was auch immer es ist, Sie möchten, um zu zeichnen auf dem Bildschirm. Ich werde aktualisieren, unten meine Antwort.
  • Ich brauche zum zeichnen einer Linie entweder vertikal oder horizontal. Diese Linie sollte zwischen nur zwei Kreise nicht mehr als zwei.
  • Es wäre gefallen, wenn Sie aktualisieren Sie Ihre Antwort.
InformationsquelleAutor Umar Farooq | 2014-03-31
Schreibe einen Kommentar