2014-10-20 4 views
5

an dem Blick Drawable docs, haben wir eine neue Methode setHotspot (float x, float y) mit der Beschreibung von:Was ist der Zweck von Drawable setHotspot auf Android 5.0 (API 21)?

Gibt den Standort des Hotspot im ziehbar.

Ohne weitere Erklärungen auf dieser Seite frage ich mich, was der Zweck ist.

+0

ich diesen Artikel gefunden (aber es ist alt): http: // blahti .wordpress.com/2012/06/26/images-with-clickable-areas/Vielleicht hat dieser Hotspot den gleichen Sinn ... – krossovochkin

+0

Bei der Nase sind es die Koordinaten des als Touch-Sense gesetzten Punktes? –

Antwort

9

Hotspots werden verwendet, um Berührungsereignisse in RippleDrawable zu leiten, können aber auch von benutzerdefinierten Zeichenabbildern verwendet werden. Wenn Sie eine benutzerdefinierte Ansicht implementieren, die ihre eigenen Zeichenelemente verwaltet, müssen Sie setHotspot() von der drawableHotspotChanged() -Methode aufrufen, damit Berührungs-zentrierte Ripples ordnungsgemäß funktionieren.

Von View.java:

@Override 
public boolean onTouchEvent(MotionEvent event) { 
    ... 
      case MotionEvent.ACTION_MOVE: 
       drawableHotspotChanged(x, y); 
    ... 
} 


/** 
* This function is called whenever the view hotspot changes and needs to 
* be propagated to drawables managed by the view. 
* <p> 
* Be sure to call through to the superclass when overriding this function. 
* 
* @param x hotspot x coordinate 
* @param y hotspot y coordinate 
*/ 
public void drawableHotspotChanged(float x, float y) { 
    if (mBackground != null) { 
     mBackground.setHotspot(x, y); 
    } 
} 

Von FrameLayout.java, die ihre eigenen mForeground ziehbar verwaltet:

@Override 
public void drawableHotspotChanged(float x, float y) { 
    super.drawableHotspotChanged(x, y); 

    if (mForeground != null) { 
     mForeground.setHotspot(x, y); 
    } 
}