DrawView'im var. Bu görüşe dokunursam küçük daireler çizer. "SetPoints" yardım işleviyle çevreleri çizmeye değil, görünüme dokunmayacağım. Ne yapıyorum:Geçerli tuval nasıl alınır?
package com.samples;
import ...
public class DrawView extends View {
ArrayList<Point> points = new ArrayList<Point>();
Paint paint = new Paint();
private int pSize = 5;
private int pColor = Color.BLACK;
public DrawView(Context context, AttributeSet attrs) {
super(context, attrs);
setFocusable(true);
setFocusableInTouchMode(true);
this.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
v.setOnTouchListener(this);
Point point = new Point();
point.x = event.getX();
point.y = event.getY();
points.add(point);
invalidate();
}
return true;
}
});
requestFocus();
}
@Override
public void onDraw(Canvas canvas) {
for (Point point : points) {
canvas.drawCircle(point.x, point.y, pSize, paint);
}
}
public void setPoints(Float xP, Float yP)
{
Point point = new Point();
point.x = xP;
point.y = yP;
points.add(point);
postInvalidate();
}
}
class Point {
float x, y;
@Override
public String toString() {
return x + ", " + y;
}
}
Lütfen, tuvalin setPoints işlevini nasıl belirlediğini söyleyin?
Güncelleme: Wow, gerçekten ilginç bir problem. DrawView'um HorizontalScrollView'da bulunur. Çünkü bu DrawView doğru koordinatlarını ayarlamış olsaydım, kimse nerede çizilebilen daireler olduğunu bilmiyor.
Bu sorunun anlaşılması zor. Lütfen gözden geçirin – Raffaele
Bunu yapmak istediğin şeyi deşifre etmek kolay değil :) İlk şey, bunu kaldır 'canvas2': düşündüğün gibi çalışmıyor. Daha önce çizilen daireyi korumak istediğinden şüpheleniyorum, değil mi? Eğer bu sizin hedefinizse, çekiliş çağrılarının geçmişini sürdürmeniz ve bunu iki şekilde yapabilmeniz gerekir: 1) 'Point [] 'dizisini saklar ve her daireyi" onDraw "içine çizersiniz; veya 2) bir daire eklendiğinde, 'Bitmap' – Raffaele
önbelleğini güncellediğinizde bu çemberi çizmeyeceğim ama ekrana dokunmadım! – Leo