2016-12-18 4 views
1

Ich habe einige benutzerdefinierte Ansicht mit onTouchEvent, wo ich mX und mY einstellen.Wie bekomme ich Koordinaten von der benutzerdefinierten Ansicht Android

mx=event.getX(); 
my=event.getY(); 

dies ist für den Ziehweg von Berührungsereignis bekommen - das Arbeiten groß, und ich kann die Koordinaten in meiner Textansicht sehen, die in der Haupttätigkeit definiert ist.

Ich möchte dieses Bild 2 Attribut in meiner Haupttätigkeit Layout zur Einstellung der Hintergrundfarbe zum Beispiel

if (mx > 1000 && my > 100){ 
set color 
} 

verwenden, aber es scheint, dass mx und my bekommt keine Werte was habe ich versuchte, ist

vielleicht habe ich das getmx nicht korrekt in der benutzerdefinierten Ansicht definiert?

public float getmx(){ 
return mx; 
} 

Ich bin neu in Java und Android so einfach sein mit mir :)

MainActiviy hinzufügen.

public class MainActivity extends AppCompatActivity { 


    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     // Drawing - custom view 
     drawView = (Drawing) findViewById(R.id.drawing); 

     findCoordinates(); 

     TextView Coordinates = (TextView) findViewById(R.id.CNcoordinates); 

     //Coordinates - message with coordinates 
     paintView.setTextView(Coordinates); 

    } 

    private Drawing drawView; 


    public void findCoordinates() { 
     Drawing paintView = (Drawing) findViewById(R.id.drawing); 
     float xX = drawView.getmX(); 
     float yY = drawView.getmY(); 
     int nColor = Color.BLUE; 
     View buttonmove1 = findViewById(R.id.layoutMove); 
     if (Math.abs(xX) > 1000 && Math.abs(yY) > 1000) { 
      buttonmove1.setBackgroundColor(nColor); 
     } 
    } 

die Koordinaten kommen aus:

protected void onDraw(Canvas canvas) { 
     canvas.drawBitmap(canvasBitmap, 0, 0, canvasPaint); 
     canvas.drawPath(drawPath, drawPaint); 
    } 
    @Override 
    public boolean onTouchEvent(MotionEvent event) { 

     mX = event.getX(); 
     mY = event.getY(); 

     View buttonmove = findViewById(R.id.drawing); 
     switch (event.getAction()) { 
      case MotionEvent.ACTION_DOWN: 
       drawPath.moveTo(mX, mY); 

       if(myCoordinates!=null){ 
        myCoordinates.setText(":" + mX + " , " + ":" + mY); 
       } 
       break; 




public void setTextView(TextView tv){ 
     myCoordinates = tv; 
    } 
+0

Von wo Sie x, y-Koordinaten zu erhalten versuchen? In onCreate()? – Rahul

+0

in MainActivity.java im setzen sie in onTouchEvents auf custom_view. – user7258123

+0

Canvas Zeichnung in benutzerdefinierte Ansicht – user7258123

Antwort

0

Verwenden Schnittstelle oder Rückruf nach dem Touch beenden. Sie müssen Ihre

findCoordinates erneut aufrufen()

so wird es Ihre UI Bezug auf neue Werte aktualisieren.

+0

können Sie Beispielcode geben? – user7258123

+0

Überprüfen Sie, wie Sie Schnittstellen für die Kommunikation oder den Rückruf verwenden. – Rahul

0

i erfolgreich als Callback verwenden OnViewTouchListener:

die Methode in benutzerdefinierter Ansicht hinzufügen:

private OnViewTouchListener OnViewTouchListener; 
public interface OnViewTouchListener { 
public void onViewTouched (float x, float y, boolean touched); 
} 

public void setOnViewTouchListener (OnViewTouchListener listener){ 
OnViewTouchListener = listener; 
} 
Verwandte Themen