Sie haben einen kleinen Hack-around zu tun, um jede Hintergrundarbeit in Surface zu machen, wie folgt aus:
überschreiben die setBackground
und setBackgroundDrawable
Methoden
Drawable background
@Override
public void setBackgroundDrawable(Drawable background) {
this.background = background;
}
@Override
public void setBackground(Drawable background) {
this.background = background;
}
vergessen Sie nicht setBounds
auf dem ziehbar zu nennen
@Override
protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
super.onLayout(changed, left, top, right, bottom);
matrix = null;
if (background != null)
background.setBounds(left, top, right, bottom);
}
dann auf dem Code, den Sie sperren, zeichnen, Entriegeln und veröffentlichen die Leinwand fügen Sie den Hintergrund
Canvas c = holder.lockCanvas();
if (background != null)
background.draw(c);
// do your stuff here
holder.unlockCanvasAndPost(c);
funktioniert für XML und Java-Hintergründe.
Hi @ Swarnedu. Ihre Antwort ist richtig, aber es wird die Oberfläche als undurchsichtig, ich möchte nur eine transparente Hintergrundfarbe –
Ich bin mir nicht sicher, aber nur einen Versuch mit diesem Farbcode 0X00ffffff –
Ich habe es überprüft. Es macht immer die opake Oberflächenansicht –