मैं जानना चाहता हूं कि ImageView पर एक रेखा कैसे खींचना है क्योंकि उपयोगकर्ता अपनी उंगली को स्वाइप करता है?Android पर ImageView में कोई रेखा कैसे आकर्षित करें?
क्या कोई शरीर इसे समझा सकता है? या शायद इस पर शुरू करने के लिए कोई लिंक।
मैं जानना चाहता हूं कि ImageView पर एक रेखा कैसे खींचना है क्योंकि उपयोगकर्ता अपनी उंगली को स्वाइप करता है?Android पर ImageView में कोई रेखा कैसे आकर्षित करें?
क्या कोई शरीर इसे समझा सकता है? या शायद इस पर शुरू करने के लिए कोई लिंक।
आपके पास अपना स्वयं का छवि दृश्य होना चाहिए और ड्रॉ फ़ंक्शन पर ओवरराइड होना चाहिए। वस्तु MyImageView
बनाने इस
public class MyImageView extends ImageView{
public MyImageView(Context context) {
super(context);
// TODO Auto-generated constructor stub
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
Paint p = new Paint(Paint.ANTI_ALIAS_FLAG);
canvas.drawLine(0, 0, 20, 20, p);
}
}
की तरह है और अपने मुख्य वर्ग में कुछ का उपयोग करें; और जब आप अपने प्रदर्शन कॉल को स्पर्श करते हैं तो update();
फ़ंक्शन
हाय जॉर्ज, क्या आपको ऑन टच() ईवेंट पर अद्यतन विधि को कॉल करने का मतलब था? मुझे बहुत पूछने के लिए खेद है, मैं इसमें नया हूं। – user776550
हाँ, मेरा मतलब है। कोई समस्या नहीं है, आप पूछ सकते हैं कि आप कितना चाहते हैं)) – George
आपको ऑन टच लिस्टनर को ओवरराइड करना होगा और आप में अल्ट टच फ़ंक्शन अमान्य – George
उस रेखा को चित्रित करने के लिए जिस उपयोगकर्ता ने वास्तव में आपको आकर्षित किया है, आपको प्रेषण टचवेन्ट को ओवरराइड करना होगा। उस घटना से आप लाइन के निर्देशांक प्राप्त कर सकते हैं और उन्हें जॉर्ज द्वारा दिखाए गए अनुसार ड्रा में आकर्षित कर सकते हैं।
ApiDemos नमूना FingerPaint पर एक नजर डालें।
इसका उपयोग करके आप स्क्रीन पर छूकर ImageView पर रेखा खींच सकते हैं।
इस तरह आप एक और छवि पर हरे आयत आकर्षित कर सकते हैं की एक पूरी उदाहरण है:
<CustomWidgets.DrawImageView
android:id="@+id/widgetMap"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:src="@drawable/map_small"
/>
:
package CustomWidgets;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.util.AttributeSet;
/**
* Allows to draw rectangle on ImageView.
*
* @author Maciej Nux Jaros
*/
public class DrawImageView extends ImageView {
private Paint currentPaint;
public boolean drawRect = false;
public float left;
public float top;
public float right;
public float bottom;
public DrawImageView(Context context, AttributeSet attrs) {
super(context, attrs);
currentPaint = new Paint();
currentPaint.setDither(true);
currentPaint.setColor(0xFF00CC00); // alpha.r.g.b
currentPaint.setStyle(Paint.Style.STROKE);
currentPaint.setStrokeJoin(Paint.Join.ROUND);
currentPaint.setStrokeCap(Paint.Cap.ROUND);
currentPaint.setStrokeWidth(2);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
if (drawRect)
{
canvas.drawRect(left, top, right, bottom, currentPaint);
}
}
}
जब आप यह परिभाषित किया है आप उदाहरण के लिए ऊपर देखें (विजेट) के साथ imageView जगह ले सकता है
mapImageView.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
DrawImageView drawView = (DrawImageView) v;
// set start coords
if (event.getAction() == MotionEvent.ACTION_DOWN) {
drawView.left = event.getX();
drawView.top = event.getY();
// set end coords
} else {
drawView.right = event.getX();
drawView.bottom = event.getY();
}
// draw
drawView.invalidate();
drawView.drawRect = true;
return true;
}
});
:
तो फिर तुम गतिविधि के स्पर्श घटना है कि लेआउट को नियंत्रित करता है, उदाहरण के लिए इसका उपयोग कर सकते
बेशक आप कुछ गेटर्स और सेटर्स और अन्य जावा ओवर-इंजीनियरिंग दिनचर्या बना सकते हैं ;-)।
क्या आप कुछ रेखा खींचना चाहते हैं या उस पर पेंट करना चाहते हैं? –