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);
}
}
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
Bei der Nase sind es die Koordinaten des als Touch-Sense gesetzten Punktes? –