Ich baue eine Android-App, die die Linienzeichnung auf Leinwand, die über die Kamera anzeigen zeigt. Der Zweck davon ist es, Linien zu zeichnen, die eine Umrisse zum Aufnehmen eines Bildes in diesen Grenzen bereitstellen. Android zeichnen Linie und ziehen Sie es dann mit Touch
Ich bin in der Lage, Linien wie diese zu zeichnen, die als Grenzen verwendet werden, um ein Bild aufzunehmen. Aber was ich will ist, dass ich nicht in der Lage bin, die Linie zu ziehen, die ich zeichne oder wenn ich die Linie nach dem Zeichnen skalieren möchte. Da man beim Zeichnen der Linien zur Zeit sehr vorsichtig sein muss, und leichte Abweichungen erfordern, mach es nochmal.
So kann mir jemand helfen, wie ich Drag-Listener online implementieren kann, wie man eine Linie als Objekt erstellt, das zuhören kann, wenn der Finger auf einer Linie berührt wird?
Danke, Irfan
@Override
public boolean onTouchEvent(MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
downx = event.getX();
downy = event.getY();
fstTouch = downx;
fstTouchx = downx;
fstTouchY = downy;
break;
case MotionEvent.ACTION_MOVE:
break;
case MotionEvent.ACTION_UP:
upx = event.getX();
upy = event.getY();
if (actionE == 1) {
actionE = 2;
canvas.drawLine(downx, downy, upx, upy, Manage_Template.mPaint);
invalidate();
editor.putFloat("downx", fstTouchx);
editor.putFloat("downy", fstTouchY);
editor.putString("fst", "2");
editor.putFloat("newDownx", upx);
editor.putFloat("newDowny", upy);
editor.commit();
}
else {
fDownx = sharedPreferences.getFloat("downx", 0);
fDowny = sharedPreferences.getFloat("downy", 0);
newDownx = sharedPreferences.getFloat("newDownx", 0);
newDowny = sharedPreferences.getFloat("newDowny", 0);
fstLate = fstTouch - fDownx; //85-100=15
scndLate = fstTouch - newDownx;//120-100=30
st = String.valueOf(fstLate);
sl = String.valueOf(scndLate);
st = st.replace("-", "");
sl = sl.replace("-", "");
fstLate = Float.parseFloat(st);
scndLate = Float.parseFloat(sl);
if (fstLate >= scndLate) {
canvas.drawLine(newDownx, newDowny, upx, upy, Manage_Template.mPaint);
editor.putFloat("newDownx", upx);
editor.putFloat("newDowny", upy);
editor.commit();
invalidate();
Log.d("Action UP","fstlate>");
} else {
canvas.drawLine(fDownx, fDowny, upx, upy, Manage_Template.mPaint);
editor.putFloat("downx", upx);
editor.putFloat("downy", upy);
editor.putFloat("newDownx", newDownx);
editor.putFloat("newDowny", newDowny);
editor.commit();
invalidate();
Log.d("Action UP","scndlate");
}
}
// }
break;
}
return true;
}
Fügen Sie Ihren Testcode hinzu –