应该是没问题的,但运行的时候提示出错了……源码:
package sv.t;import java.util.Timer;
import java.util.TimerTask;import android.app.Activity;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Rect;
import android.os.Bundle;
import android.view.SurfaceHolder;
import android.view.SurfaceView;public class SurfaceViewTestActivity extends Activity {
/** Called when the activity is first created. */
SurfaceView sfv;
SurfaceHolder sth;
private Timer mTimer;
private MyTimerTask mTimerTask;
int Y_axis[],centerY,beforeX,beforeY,currentX;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
sfv=(SurfaceView)this.findViewById(R.id.SurfaceView01);
sth=sfv.getHolder();
mTimer = new Timer();
mTimerTask = new MyTimerTask();
centerY = (getWindowManager().getDefaultDisplay().getHeight()-sfv.getHeight())/2;
Y_axis = new int[getWindowManager().getDefaultDisplay().getWidth()];
for (int i = 1; i < Y_axis.length; i++) {
Y_axis[i - 1] = centerY
- (int) (100 * Math.sin(i * 2 * Math.PI / 180));
}
beforeY = centerY;
mTimer.schedule(mTimerTask, 0, 5);
}
class MyTimerTask extends TimerTask {
public void run() {
SimpleDraw(currentX);
currentX++;
if (currentX == Y_axis.length - 1)
ClearDraw();
currentX = 0;
beforeY = centerY;
}
}
void SimpleDraw(int length) {
if (length == 0)
beforeX = 0;
Canvas canvas = sth.lockCanvas(new Rect(beforeX, 0, beforeX + length,
getWindowManager().getDefaultDisplay().getHeight()));
Paint mPaint = new Paint();
mPaint.setColor(Color.GREEN);
mPaint.setStrokeWidth(2);
int y;
for (int i = beforeX + 1; i < length; i++) {
y = Y_axis[i - 1];
canvas.drawLine(beforeX, beforeY, i, y, mPaint);
beforeX = i;
beforeY = y;
}
sth.unlockCanvasAndPost(canvas);
}
void ClearDraw() {
Canvas canvas = sth.lockCanvas(null);
canvas.drawColor(Color.BLACK);
sth.unlockCanvasAndPost(canvas);
}
}
package sv.t;import java.util.Timer;
import java.util.TimerTask;import android.app.Activity;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Rect;
import android.os.Bundle;
import android.view.SurfaceHolder;
import android.view.SurfaceView;public class SurfaceViewTestActivity extends Activity {
/** Called when the activity is first created. */
SurfaceView sfv;
SurfaceHolder sth;
private Timer mTimer;
private MyTimerTask mTimerTask;
int Y_axis[],centerY,beforeX,beforeY,currentX;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
sfv=(SurfaceView)this.findViewById(R.id.SurfaceView01);
sth=sfv.getHolder();
mTimer = new Timer();
mTimerTask = new MyTimerTask();
centerY = (getWindowManager().getDefaultDisplay().getHeight()-sfv.getHeight())/2;
Y_axis = new int[getWindowManager().getDefaultDisplay().getWidth()];
for (int i = 1; i < Y_axis.length; i++) {
Y_axis[i - 1] = centerY
- (int) (100 * Math.sin(i * 2 * Math.PI / 180));
}
beforeY = centerY;
mTimer.schedule(mTimerTask, 0, 5);
}
class MyTimerTask extends TimerTask {
public void run() {
SimpleDraw(currentX);
currentX++;
if (currentX == Y_axis.length - 1)
ClearDraw();
currentX = 0;
beforeY = centerY;
}
}
void SimpleDraw(int length) {
if (length == 0)
beforeX = 0;
Canvas canvas = sth.lockCanvas(new Rect(beforeX, 0, beforeX + length,
getWindowManager().getDefaultDisplay().getHeight()));
Paint mPaint = new Paint();
mPaint.setColor(Color.GREEN);
mPaint.setStrokeWidth(2);
int y;
for (int i = beforeX + 1; i < length; i++) {
y = Y_axis[i - 1];
canvas.drawLine(beforeX, beforeY, i, y, mPaint);
beforeX = i;
beforeY = y;
}
sth.unlockCanvasAndPost(canvas);
}
void ClearDraw() {
Canvas canvas = sth.lockCanvas(null);
canvas.drawColor(Color.BLACK);
sth.unlockCanvasAndPost(canvas);
}
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货