wie setzen backgroundColor einer surfaceview in android?
ich bin mit einer Oberfläche anzeigen, zu zeichnen, interaktive piechart. hier ist mein code, die sieht aus wie alle Oberfläche Beispiele.
class PieChart extends SurfaceView implements SurfaceHolder.Callback {
public PieChart(Context context) {
super(context);
//Log.i("PieChart", "PieChart : constructor");
getHolder().addCallback(this);
}
@Override
public void onDraw(Canvas canvas) {
if (hasData) {
resetColor();
try {
canvas.drawColor(getResources().getColor(R.color.graphbg_color));
graphDraw(canvas);
} catch (ValicException ex) {
}
}
}
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width,
int height) {
Log.i("PieChart", "surfaceChanged");
}
public int callCount = 0;
@Override
public void surfaceCreated(SurfaceHolder holder) {
try {
//Log.i("PieChart", "surfaceCreated");
mChartThread = new ChartThread(getHolder(), this);
mChartThread.setRunning(true);
if (!mChartThread.isAlive()) {
mChartThread.start();
}
Rect mFrame = holder.getSurfaceFrame();
mOvalF = new RectF(0, 0, mFrame.right, mFrame.right);
} catch (Exception e) {
//No error message required
}
}
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
//Log.i("PieChart", "surfaceDestroyed");
boolean retry = true;
callCount = 0;
mChartThread.setRunning(false);
while (retry) {
try {
mChartThread.join();
retry = false;
} catch (InterruptedException e) {
//No error message required
}
}
}
}
class ChartThread extends Thread {
private SurfaceHolder mSurfaceHolder;
private PieChart mPieChart;
private boolean mRefresh = false;
public ChartThread(SurfaceHolder surfaceHolder, PieChart pieChart) {
//Log.i("ChartThread", "ChartThread");
mSurfaceHolder = surfaceHolder;
mPieChart = pieChart;
}
public void setRunning(boolean Refresh) {
//Log.i("ChartThread", "setRunning : " + Refresh);
mRefresh = Refresh;
}
@Override
public void run() {
Canvas c;
//Log.i("ChartThread", "run : " + mRefresh);
while (mRefresh) {
c = null;
try {
c = mSurfaceHolder.lockCanvas(null);
// c.drawColor(0xFFebf3f5);
synchronized (mSurfaceHolder) {
mPieChart.onDraw(c);
}
} catch (Exception ex) {
} finally {
//do this in a finally so that if an exception is thrown
//during the above, we don't leave the Surface in an
//inconsistent state
if (c != null) {
mSurfaceHolder.unlockCanvasAndPost(c);
}
}
}
}
}
damit bin ich in der Lage zu zeichnen Kreisdiagramme erfolgreich. aber hier das Problem ist "vor dem laden Kreisdiagramm Schwarzes Rechteck sichtbar ist, für eine zweite, die sich surfaceview Standard-Boden zurück". so möchte ich, um den hintergrund Farbe für Oberfläche anzeigen zu vermeiden, das schwarze Rechteck.
Folgenden ist der geänderte code für das zeichnen von hintergrund-Farbe an die Oberfläche anzuzeigen.
public PieChart(Context context) {
super(context);
//Log.i("PieChart", "PieChart : constructor");
getHolder().addCallback(this);
setBackgroundColor(getResources().getColor(R.color.graphbg_color));
}
@Override
public void onDraw(Canvas canvas) {
if (hasData) {
setBackgroundColor(getResources().getColor(R.color.graphbg_color));
resetColor();
try {
canvas.drawColor(getResources().getColor(R.color.graphbg_color));
graphDraw(canvas);
} catch (ValicException ex) {
}
}
}
mit diesen änderungen, schwarz Rechteck-Problem behoben ist. aber piechart ist nicht richtig erfrischend. kann mir jemand helfen bei der Lösung aller von diesen beiden Themen.
InformationsquelleAutor Raj | 2011-11-12
Du musst angemeldet sein, um einen Kommentar abzugeben.
und in yout Klasse client, den Sie verwenden können, die setBackGroundColor(Ihre Farbe) 😉
Hi, was in den Daten unvollständig sind?
wo ist dein resetcolor () - Methode ? Wird die obige Umsetzung machen die Oberfläche Ansicht traslucent und bunte unserer Wahl ?
ahh, es ist der code, der Raj, ich habe gerade ein code in Ihre Vorherige code 🙂
kann u pls helft mir ich m immer Fehler mit deinem code ich habe versucht, verwenden Sie diesen code, um live-Kamera-Hintergrundfarbe der Fehler ist, da die Leinwand hier ist der Fehler-Liste : Ausnahme Arretierung und Fehler kontinuierlich läuft Ihre nicht zu stoppen
InformationsquelleAutor ademar111190