C'è un modo per impostare la posizione del titolo e del messaggio in una vista di Showcase? Vedo che la libreria utilizza una funzione per trovare la posizione migliore ma voglio sovrascriverla.Showcase Visualizza il testo gravità
risposta
Ho appena inserito il codice sorgente ShowcaseView
e sembra che non vi sia alcun modo per incorporare la posizione del testo. Così ho aggiunto la mia modifica alla libreria. Ecco i cambiamenti che ho fatto:
In classe ShowcaseView
aggiunti questi campi:
private boolean hasManualPostion = false;
private int xPosition, yPosition, width;
Poi nella classe Builder
che è classe interna in ShowcaseView
classe, aggiungere i seguenti metodi:
public Builder hasManualPosition(boolean hasManualPosition) {
showcaseView.hasManualPostion = hasManualPosition;
return this;
}
public Builder xPostion(int xPostion) {
showcaseView.xPosition = xPostion;
return this;
}
public Builder yPostion(int yPostion) {
showcaseView.yPosition = yPostion;
return this;
}
Dopo di che, aggiungere questo metodo nella classe TextDrawer
:
public void setTestPostionManually(int xPosition, int yPosition) {
mBestTextPosition[0] = xPosition;
mBestTextPosition[1] = yPosition;
}
e alla fine cambiamento onPreDraw
metodo ShowcaseView
di simile a questa:
@Override
public boolean onPreDraw() {
boolean recalculatedCling = showcaseAreaCalculator.calculateShowcaseRect(showcaseX, showcaseY, showcaseDrawer);
boolean recalculateText = recalculatedCling || hasAlteredText;
if (recalculateText) {
textDrawer.calculateTextPosition(getMeasuredWidth(), getMeasuredHeight(), this, shouldCentreText);
if (hasManualPostion) {
textDrawer.setTestPostionManually(xPosition, yPosition);
}
}
hasAlteredText = false;
return true;
}
Ora è necessario creare ShowcaseView
come questo:
sv = new ShowcaseView.Builder(this, true)
.setTarget(target)
.setContentTitle(R.string.showcase_main_title)
.setContentText(R.string.showcase_main_message)
.setStyle(R.style.CustomShowcaseTheme2)
.setShowcaseEventListener(this)
.hasManualPosition(true)
.xPostion(0)
.yPostion(240)
.build();
Enjoy!
quale versione è questa? qualche idea su come farlo funzionare in eredità? –
La modifica è per la versione 5.0.0 – Sadegh
conosci qualche modo per portare l'animazione a mano in 5.0.0? –
Si prega di elaborare quello che stai cercando di dire, mostrare il codice e quindi spiegare il problema che si sta ottenendo. –
aggiornato op. Non ho ancora trovato un modo per farlo. – arayray
Problema inviato su Showcase Visualizza github. https://github.com/Espiandev/ShowcaseView/issues/113 – arayray