Ich arbeite an einer Kamera-App, die vier Kreise in der Mitte des Bildschirms hat.Android-Koordinaten von locationonsreen passen nicht zum aktuellen Bildschirm
Es sieht so aus;
Mein Ziel ist nur die Bilder auf dem Mittelkreis Teile zu bekommen.
Meine Testtaktiken waren so;
- eine Vollbild-Kamera mit Overlay implementieren (done, erfolgreich)
das aufgenommene Foto von 1 bekommen, und es auf einem Image Anzeige (done, erfolgreich)
die Leinwand verwenden zu zeichnen ein blauer Kreis auf der Position der Overlay-Kreise. (gescheitert)
der blaue Kreis gezeichnet wird, aber in einigen seltsamen Orten.
Hier ist mein Code.
//x, y = x, y coord of the left-top circle of the overlay.
//width = width of the left-top circle of the overlay.
Paint paint = new Paint();
paint.setAntiAlias(true);
paint.setColor(Color.BLUE);
Canvas canvas = new Canvas(b);
canvas.drawCircle(x, y, width/2, paint);
imageView.setImageBitmap(b);
Der Kreis ist gezeichnet, aber an einem wirklich weit entfernten Ort; fast unter dem unteren Bildschirmrand.
Und der Radius ist fast doppelt so groß wie ich erwartet hatte.
Ich versuchte canvas.drawCircle (x + width/2, y + height/2, ...), aber es scheint nicht die Antwort zu sein.
Ich habe die folgenden Codes verwendet, um die x, y, Breite zu erhalten.
int [] loc = new int[2];
circle1.locationOnScreen(loc);
int x = loc[0];
int y = loc[1];
int width = circle1.getWidth();
Ist etwas falsch mit meinem Code? Die x, y, width Werte sind nicht 0, sie haben aussagekräftige Werte. Aber es stimmt einfach nicht mit dem, wo die Kreise sein müssen.
Es hat keine Aktionsleisten. Ich habe es mit dem Thema Wert deaktiviert. Die Bildansicht ist im Vollbildmodus. Aber wenn es auf 1/4 herunterskaliert wird, wird es auf der Höhe etwas kleiner, also habe ich die fitxy-Skalierung von imageView verwendet, um perfekt auf den Bildschirm zu passen. – March3April4