我是android的新手,所以我不知道这个问题是否基本。
我想每隔 N 秒在画布上画一个圆圈。
寻找教程,我成功地在画布上画了一个圆圈。但随后问题出现了。我怎样才能擦除我以前画的圆圈。
我这样做的方式可能很糟糕,事实上,我只是画了另一个圆圈(但是是白色的)。这意味着,每次迭代我都会画一个白色圆圈以擦除前一个圆圈。然后是蓝色的新圆圈。
它在第一次迭代中完美地工作......但是一旦我开始在我已经画了一个圆圈的地方画一个圆圈......事情就开始出错了......就像再次绘制一些以前删除的圆圈一样又出现了。
我真的不知道该怎么解释。
你可以看到执行这段代码会发生什么。
我的游戏活动启动器
public class GameActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Float max = new Float(200.42);
ArrayList<Float> liste_test = new ArrayList<Float>();
liste_test.add(new Float(36.8));
liste_test.add(new Float(147.8));
liste_test.add(new Float(97.8));
liste_test.add(new Float(max));
liste_test.add(new Float(10));
setContentView(new ExampleSurfaceView(this,liste_test,max));
}
}
我的 ExampleSurfaceView 使用列表中的“标准化”数据绘制圆圈。
public class ExampleSurfaceView extends SurfaceView implements SurfaceHolder.Callback {
// Le holder
SurfaceHolder mSurfaceHolder;
// Le thread dans lequel le dessin se fera
DrawingThread mThread;
int oldPosition_x;
int oldPosition_y;
ArrayList<Integer> valeurs_capteurs;
int nb_valeurs;
public ExampleSurfaceView (Context context,ArrayList<Float> donees_capteur, Float max) {
super(context);
this.valeurs_capteurs=normalise(donees_capteur,max);
this.nb_valeurs=this.valeurs_capteurs.size();
mSurfaceHolder = getHolder();
mSurfaceHolder.addCallback(this);
mThread = new DrawingThread();
}
//pour récupérer des données uniforme peu importe le capteur
public ArrayList<Integer> normalise(ArrayList<Float> donnees, Float max){
valeurs_capteurs = new ArrayList<Integer>();
for (Float donnee : donnees) {
int donnee_normalized= (int)((donnee/max)*100);
valeurs_capteurs.add(donnee_normalized);
}
return valeurs_capteurs;
}
当我查看打印时,数据似乎是逻辑的,我擦除并打印到好的地方......但问题仍然存在......显然我做错了什么,但我不知道是什么经过多次搜索。感谢你的协助。
凤凰求蛊
相关分类