드래그 가능한 뷰는 처음부터 뷰의 맨 위에 직접 배치해야하는 요구 사항이 있습니다. 즉, 터치 포인트와 관련하여 전체 뷰를 덮는 것입니다. .View.DragShadowBuilder.onProvideShadowMetrics에서 캔버스를 배치하는 방법
저는이 서브 클래스 인 View.DragShadowBuilder
으로이 작업을 수행하려고했지만 모든 행운이 없었습니다. drawRect
을 사용하면 직사각형 점을 지정하여 내 사각형과 같은 직사각형에 그릴 수 있기를 기대했지만 캔버스가 그려지지 않습니다.
그러나 단지 canvas.drawColor(Color.CYAN)
을 사용하면 사각형이 그려지지만 터치 지점과 관련됩니다. 여기
drawRect
을 사용하고 있습니다 : 여기
private class VideoDragShadowBuilder extends View.DragShadowBuilder {
public VideoDragShadowBuilder(View v) {
super(v);
}
@Override
public void onProvideShadowMetrics (Point size, Point touch) {
int width, height;
width = getView().getWidth();
height = getView().getHeight();
size.set(width, height);
touch.set(width/2, height/2);
}
@Override
public void onDrawShadow(Canvas canvas) {
//canvas.drawColor(Color.CYAN);
Paint paint = new Paint();
paint.setAntiAlias(true);
paint.setAlpha(45);
paint.setStyle(Paint.Style.FILL);
paint.setColor(Color.CYAN);
canvas.drawRect(getView().getLeft(), getView().getTop(), getView().getRight(), getView().getBottom(), paint);
}
}
이 파란색 사각형이 약간 아래에 있기 때문에 내가 감동 곳의 전망과 잘못 정렬되어있다 -에 관계없이 위치를 사용자의 터치 내가 완전히 뷰를 포함 할 .
게시, 그렇지 않은 경우는 실제로 제안을 – pskink
@pskink 감사를 달성하기 위해 원하는 것을 이야기하기 어려운,이 같은 질문 –
뭔가를 수정했습니다. co.kr/3KuF8EmZ? action이 ACTION_DOWN 일 때 onTouchEvent와 같이이 빌더를 작성하십시오. DragShadowBuilder builder = new DSB (this, event); – pskink