मेरे पास DrawView है। अगर मैं इस दृश्य को छूता हूं तो यह छोटी सर्कल खींचता है। मैं सर्किल खींचने के लिए नहीं बल्कि दृश्य को स्पर्श नहीं करना चाहता हूं - सहायता फ़ंक्शन "सेट पॉइंट्स" के साथ। मैं क्या करता हूं:वर्तमान कैनवास कैसे प्राप्त करें?
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;
}
}
कृपया मुझे बताएं, सेटपॉइंट्स को कैनवास कैसे प्राप्त करें?
अद्यतन: वाह, यह वास्तव में दिलचस्प समस्या है। मेरा DrawView क्षैतिज ScrollView में शामिल है। क्योंकि अगर मैं इस DrawView में सही निर्देशांक सेट करता हूं, तो कोई भी नहीं जानता कि ड्रॉइंग मंडल कहां हैं।
यह प्रश्न समझना मुश्किल है। कृपया इसकी समीक्षा करें – Raffaele
यह समझना आसान नहीं है कि आप क्या हासिल करना चाहते हैं :) सबसे पहले, 'canvas2' को हटाएं: यह आपके विचार के अनुसार काम नहीं करता है। मुझे संदेह है कि आप पहले खींचे गए सर्कल को बनाए रखना चाहते हैं, है ना? यदि यह आपका लक्ष्य है, तो आपको ड्रॉ कॉल का इतिहास बनाए रखना होगा, और इसे दो तरीकों से कर सकते हैं: 1) आप 'प्वाइंट []' सरणी संग्रहीत करते हैं और प्रत्येक सर्कल को 'ऑन ड्रा' में खींचते हैं; या 2) प्रत्येक बार जब एक सर्कल जोड़ा जाता है तो आप 'बिटमैप' – Raffaele
कैश अपडेट करते हैं, मैं इस सर्कल को आकर्षित नहीं करता लेकिन स्क्रीन को स्पर्श नहीं करता! – Leo