我在看一個子類以下程序:的onDraw()引發的,但結果並沒有顯示
它計算點組成的線陣列,然後擦除以前的線,然後繪製新線(影響是指用多條線繪製的像素寬度)。該線是您的基本鐘形曲線,通過方差和x因子進行擠壓或拉伸。
不幸的是,沒有任何東西顯示在屏幕上。以前的版本使用drawPoint()並且沒有數組工作,並且我已驗證數組內容正在被正確加載,並且我可以看到我的onDraw()正在被觸發。
任何想法,爲什麼它可能不會被繪製?提前致謝!
protected void drawNewLine(int maxx, int maxy, Canvas canvas, int impact, double variance, double xFactor, int color) {
// impact = 2 to 8; xFactor between 4 and 20; variance between 0.2 and 5
double x = 0;
double y = 0;
int cx = maxx/2;
int cy = maxy/2;
int mu = cx;
int index = 0;
points[maxx<<1][1] = points[maxx<<1][0];
for (x = 0; x < maxx; x++) {
points[index][1] = points[index][0];
points[index][0] = (float) x;
Log.i(DEBUG_TAG, "x: " + x);
index++;
double root = 1.0/(Math.sqrt(2 * Math.PI * variance));
double exponent = -1.0 * (Math.pow(((x - mu)/maxx*xFactor), 2)/(2 * variance));
double ePow = Math.exp(exponent);
y = Math.round(cy * root * ePow);
points[index][1] = points[index][0];
points[index][0] = (float) (maxy - y - OFFSET);
index++;
}
points[maxx<<1][0] = (float) impact;
for (int line = 0; line < points[maxx<<1][1]; line++) {
for (int pt = 0; pt < (maxx<<1); pt++) {
pointsToPaint[pt] = points[pt][1];
}
for (int skip = 1; skip < (maxx<<1); skip = skip + 2)
pointsToPaint[skip] = pointsToPaint[skip] + line;
myLinePaint.setColor(Color.BLACK);
canvas.drawLines(pointsToPaint, bLinePaint); // draw over old lines w/blk
}
for (int line = 0; line < points[maxx<<1][0]; line++) {
for (int pt = 0; pt < maxx<<1; pt++) {
pointsToPaint[pt] = points[pt][0];
}
for (int skip = 1; skip < maxx<<1; skip = skip + 2)
pointsToPaint[skip] = pointsToPaint[skip] + line;
myLinePaint.setColor(color);
canvas.drawLines(pointsToPaint, myLinePaint);/new color
}
}
更新:與drawPoint()在循環中,仍然沒有喜悅
for (int p = 0; p<pointsToPaint.length; p = p + 2) {
Log.i(DEBUG_TAG, "x " + pointsToPaint[p] + " y " + pointsToPaint[p+1]);
canvas.drawPoint(pointsToPaint[p], pointsToPaint[p+1], myLinePaint);
}
/// canvas.drawLines(pointsToPaint, myLinePaint);
實際上,它比這更簡單。第一個onDraw()命令從不會在onStart()結束之前發生。由於我試圖獲取視圖的寬度和高度來初始化點數組,並且它絕對拒絕這麼做,直到onStart()之後,我才被這個問題驅動。 我被使用onDraw()寫入canvas()的例子拋棄了,但當我看到第一個onDraw()從來沒有發生時,燈光終於明白了。您可以在不知道視圖大小的情況下設置畫布)並「繪製」到您心中的內容,但直到onStart()結束時纔會_renders_。 – 2010-03-12 12:31:24