我使用非常标准的拖放实现来拖动一个图钉并将其放置在图像视图的顶部以指向图像的特定部分:在捏和缩放时保持在imageview上的拖放视图位置
@Override
public boolean onDrag(View v, DragEvent event) {
int action = event.getAction();
switch (event.getAction()) {
case DragEvent.ACTION_DRAG_STARTED:
break;
case DragEvent.ACTION_DRAG_ENTERED:
break;
case DragEvent.ACTION_DRAG_EXITED:
break;
case DragEvent.ACTION_DROP:
View view = (View) event.getLocalState();
ViewGroup owner = (ViewGroup) view.getParent();
owner.removeView(view);
FrameLayout container = (FrameLayout) v;
container.addView(view);
FrameLayout.LayoutParams lp = new FrameLayout.LayoutParams(FrameLayout.LayoutParams.WRAP_CONTENT, FrameLayout.LayoutParams.WRAP_CONTENT);
int a = Math.round((event.getX() - (view.getWidth()/2)));
int b = Math.round((event.getY() - (view.getHeight()/2)));
lp.setMargins(a,b,0,0);
view.setLayoutParams(lp);
view.setVisibility(View.VISIBLE);
//Gets actual pixel location on image - currently unused
float[] point = new float[] {event.getX(), event.getY()};
Matrix inverse = new Matrix();
iv.getImageMatrix().invert(inverse);
inverse.mapPoints(point);
float density = getResources().getDisplayMetrics().density;
point[0] /= density;
point[1] /= density;
break;
case DragEvent.ACTION_DRAG_ENDED:
break;
default:
break;
}
的ImageView的是可缩放的图像视图(chrisbanes/PhotoView中),如果图像保持在它的通常的100%比例的坐标的所有工作,因为他们应该并且将标记物放置正确。但是,如果我放大图像,将标记放在特定点上进行更好的控制,同时在缩小标记时获得正确的坐标并不会保留在与图像相同的位置。简单说就是父母。请让我知道你想什么代码,看看(有没有多少人),或者如果我需要重新解释
感谢
您好,我有相关的矩形区域上的图像相同的问题。我可以分享整个代码,但它很长吗?您只需使用Marker的代码管理矩形区域的代码。我用'TouchListener'代替。 – Tauqir
因此,您在图像上放置一个图钉,然后放大图像。缩放后,图钉保持放置状态,不随图像移动。这是问题,还是放大后放置引脚的问题?如果前者,你是否编写了任何代码来移动缩放视图中的引脚? – Cheticamp