android SurfaceView 画图为什么保留上一次的图?
android SurfaceView 画图为什么保留上一次的图??? 就像让一条线动。package com.surface;<br/><br/>import java.util.Date;<br/><br/>import android.app.Activity;<br/>import android.content.Context;<br/>import android.graphics.Canvas;<br/>import android.graphics.Color;<br/>import android.graphics.Paint;<br/>import android.os.Bundle;<br/>import android.util.Log;<br/>import android.view.SurfaceHolder;<br/>import android.view.SurfaceHolder.Callback;<br/>import android.view.SurfaceView;<br/><br/>public class Test extends Activity {<br/> private SurfaceView sv;<br/><br/> /** Called when the activity is first created. */<br/> @Override<br/> public void onCreate(Bundle savedInstanceState) {<br/> super.onCreate(savedInstanceState);<br/> sv = new GameView(this);<br/> setContentView(sv);<br/><br/> }<br/><br/> public class GameView extends SurfaceView implements Callback {<br/><br/> private SurfaceHolder holder;<br/><br/> public GameView(Context context) {<br/> super(context);<br/> // TODO Auto-generated constructor stub<br/> holder = getHolder();<br/> holder.addCallback(this);<br/> }<br/><br/> @Override<br/> public void surfaceChanged(SurfaceHolder holder, int format, int width,<br/> int height) {<br/> // TODO Auto-generated method stub<br/> Log.i("///surfaceChanged", "surfaceChanged");<br/> // new Thread(new rungame()).start();<br/> }<br/><br/> @Override<br/> public void surfaceCreated(SurfaceHolder holder) {<br/> // TODO Auto-generated method stub<br/> Log.i("///surfaceCreated", "surfaceCreated");<br/> new Thread(new rungame()).start();<br/> }<br/><br/> @Override<br/> public void surfaceDestroyed(SurfaceHolder holder) {<br/> // TODO Auto-generated method stub<br/> Log.i("///surfaceDestroyed", "surfaceDestroyed");<br/> }<br/><br/> boolean isStart = true;<br/><br/> public class rungame implements Runnable {<br/><br/> private Canvas c;<br/> private Date d;<br/><br/> @Override<br/> public void run() {<br/> // TODO Auto-generated method stub<br/> // 游戏逻辑<br/> int fangxiang = 1;<br/> float startX = 0, startY = 0, stopX = 340, stopY = 0;<br/> while (isStart) {<br/> d = new Date();<br/> c = holder.lockCanvas();<br/> Paint p = new Paint();<br/> p.setColor(Color.RED);<br/> c.drawLine(startX, startY, stopX, stopY, p);<br/><br/> holder.unlockCanvasAndPost(c);<br/> <br/> try {<br/> Thread.sleep(33);<br/> } catch (InterruptedException e) {<br/> // TODO Auto-generated catch block<br/> e.printStackTrace();<br/> }<br/><br/> if (startY 480) {<br/> fangxiang *= (-1);<br/> fangxiang *= (-1);<br/> }<br/> startY = 2 * fangxiang;<br/> stopY = 2 * fangxiang;<br/> }<br/> }<br/><br/> }<br/> }<br/><br/>}[展开]
回***
2018-03-04 02:52:11
举报