Domanda

Ho fatto una ImageView personalizzato che supporta lo scorrimento di base attraverso le chiamate a View.scrollBy() in un GestureDetector. Volevo aggiungere un feedback al raggiungimento di contorni a scorrimento in modo da ho permesso dissolvenza con:

setVerticalFadingEdgeEnabled(true);
setHorizontalFadingEdgeEnabled(true);

, ma le opere dissolvenza come mi aspettavo solo sui bordi sinistro e superiore, mentre quelle inferiori e di destra non sbiadiscono. Sono sicuro che i bordi non sono fuori dallo schermo perché la vista è impostato su fill_parent in altezza e larghezza. Allora, cosa c'è che non va?


EDIT: abilitando soltanto orizzontali conferma verticali / bordi dissolvenza che solo all'inizio / bordo sinistro vengono trascinati. Ora sto cercando di leggere View.java (6870 un on) ...

È stato utile?

Soluzione

Sembra che il problema è nella getBottomFadingEdgeStrength() e getRightFadingEdgeStrength(), o meglio, nel fatto che io non li override per lavoro con la mia vista personalizzata.

Questi metodi protetti dicono draw() di vista quando per disegnare le dissolvenze (e quanto fortemente - vedere ciò che un ScrollView fa quando ci si avvicina al limite di scorrimento).

Per superiore e bordi sinistro è facile perché il limite è 0 in entrambi i casi e le opere implementazione predefinita (nella sua on / off modo), ma per gli altri due ho bisogno di sostituire i metodi di prendere in considerazione il mio scrolling limiti (nel mio caso, le dimensioni disegnabili).

Altri suggerimenti

A che questo è vecchio, ma un lavoro rapido giro rispetto a override metodi è quello di utilizzare i gradienti e relativa disposizione nella vostra xml. Qui di seguito potete trovare una versione astratta, non è possibile copiare e incollare ma dovrebbe inoltrare il messaggio. Spiacente ho digitato il tutto a mano.

<!-- object with fading edges in layout -->
<RelativeLayout>
    <ImageView>
    <LinearLayout background="gradient_left" layout_alignParentStart="true">
    <LinearLayout background="gradient_right" layout_alignParentEnd="true">
</RelativeLayout>


<!-- gradient left xml in drawable-->
<shape>
    <gradient startColor="#000" endColor:"@android:color/transparent" angle="0"
</shape>


<!-- gradient right xml in drawable -->
<shape>
   <gradient startColor="#000" endColor:"@android:color/transparent" angle="180"
</shape>
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top