Ich entwickle eine Android-Anwendung, muss ich eine Funktion implementieren, die mir erlauben, verschiedene Punkte in einer Aktivität zu zeichnen.Wie zeichne ich verschiedene Punkte mit Leinwand in Android
Dies ist mein Code:
public class MainActivity extends AppCompatActivity {
public Paint paint;
public List<Point> coords;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(new DrawingView(this));
paint = new Paint();
coords = new ArrayList();
ImageView iv = new ImageView(getApplicationContext());
iv.setImageResource(R.drawable.car);
iv.setScaleType(ImageView.ScaleType.CENTER_INSIDE);
LinearLayout.LayoutParams parms = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,LinearLayout.LayoutParams.MATCH_PARENT);
iv.setLayoutParams(parms);
}
class DrawingView extends SurfaceView {
private final SurfaceHolder surfaceHolder;
private final Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);
public DrawingView(Context context) {
super(context);
surfaceHolder = getHolder();
paint.setColor(Color.BLACK);
paint.setStyle(Paint.Style.FILL);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
if(event.getAction() == MotionEvent.ACTION_DOWN) {
addpoint(event.getX(), event.getY());
}
return false;
}
public void addpoint(float x, float y){
Point point = new Point();
point.x = Math.round(x);
point.y = Math.round(y);
coords.add(point);
for(int i = 0; i< coords.size(); i++) {
Canvas canvas = surfaceHolder.lockCanvas();
canvas.drawColor(Color.WHITE);
canvas.drawCircle(coords.get(i).x, coords.get(i).y, 20, paint);
surfaceHolder.unlockCanvasAndPost(canvas);
}
}
}
}
Jedesmal, dass ich den Bildschirm berühren, ich und die Koordinaten in einer Liste speichern, dann versuche ich die Liste des Punktes zu ziehen, aber nur ein Punkt bleibt auf dem Bildschirm Ich verstehe nicht warum.
Also, wie kann ich verschiedene Punkte auf dem Bildschirm zeichnen (und speichern)?
Eine andere Frage: Wie kann ich ein Hintergrundbild zeigen?
Ok, ein weiteres Problem: wenn ich einen Punkt zeichne, wenn ich mein Telefon die Ausrichtung drehen Veränderung und der Punkt verschwindet, wie kann ich den Punkt halten? –
Gut hat meine Antwort Ihr Problem gelöst? Kannst du es akzeptieren? Dann erstellen Sie bitte eine andere Frage für ein anderes Problem, und ich werde versuchen, es zu beantworten. – abbath
Ich löste dieses Problem in einem Teil, Löschen der Zeile relativ zur Zeichenfarbe, jetzt erscheinen mehr Punkte, aber nicht alle. –