2013-10-02 24 views
5

Come si può trovare l'intersezione tra due ImageView ???Trova l'Intersect tra due View?

Per questo ho provato questo, ma nessun progresso

Qualcuno mi può suggerire di fare questo?

Codice snnipet

imageView = (ImageView) findViewById(R.id.imageView1); 
imageView2 = (ImageView) findViewById(R.id.imageView2); 

    Rect rect =new Rect(); 
    imageView.getHitRect(rect); 

    Rect rect1 = new Rect(); 
    imageView2.getHitRect(rect1); 

    if(Rect.intersects(rect, rect1)){ 
     Toast.makeText(this, "hoho", Toast.LENGTH_SHORT).show(); 
    } 

file xml:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
tools:context=".IntersectActivity" > 

<ImageView 
    android:id="@+id/imageView1" 
    android:layout_width="100dp" 
    android:layout_height="100dp" 
    android:layout_centerHorizontal="true" 
    android:layout_centerVertical="true" 
    android:src="@drawable/ic_launcher" /> 

<ImageView 
    android:id="@+id/imageView2" 
    android:layout_width="100dp" 
    android:layout_height="100dp" 
    android:layout_alignParentRight="true" 
    android:layout_centerVertical="true" 
    android:layout_marginRight="121dp" 
    android:src="@drawable/ic_launcher" /> 

</RelativeLayout> 
+0

A che punto del ciclo di vita di un'attività/frammento è il vostro frammento di codice eseguito? 'getHitRect()' non produrrà nulla di utile fino a dopo che le viste sono state misurate, disposte, ecc. In altre parole: non puoi semplicemente inserire quel frammento, ad esempio, 'onCreate()' o 'onStart() '- Non funzionerà. –

+0

quindi dove dovrei chiamare questa cosa? @MH. –

+0

qual è la possibile soluzione per questo? @MH. –

risposta

3

In sostanza, in onCreate(), Android non ha ancora creato la vista, in modo che qualsiasi tentativo ottenere ottenere la posizione larghezza altezza di un punto ecc non funzionerà.

Invece, ignorare onWindowFocusChanged(boolean focus) e mettere il codice in là

+0

+1 .... grazie a una tonnellata –

+2

non devi farlo, basta pubblicare un Runnable in onCreate e fare le tue cose nel suo metodo run() – pskink

+0

Se userò la funzionalità di trascinamento della selezione su un ImageView che ora dovrei fare per questo? Ad esempio: un trascinamento ImageView su un altro ImageView statico. –