여러 개의 ImageView가 포함 된 FrameLayout이 있습니다. 주요 활동에서 손가락으로 내 FrameLayout 및 이미지를 드래그 (드래그)하기 위해 터치 이벤트를 기록합니다.Android : 캔버스 뒤의 클릭/터치 이벤트가 작동하지 않습니다.
이렇게하려면 activity touch 이벤트 처리기에서 invalidate()에 의해 호출 된 framelayout의 onDraw 내부에서 canvas.translate (x, y)를 호출합니다.
번역 후에는 ImageView를 클릭 할 수 없다는 점을 제외하면 모든 것이 매력처럼 작동합니다. 사실, 각 이미지의 클릭 리스너는 번역되기 전에 원래 위치에 있습니다.
번역 후 각 이미지의 레이아웃을 수동으로 업데이트해야한다는 것을 읽었지만 어떻게해야합니까? 변환 값으로 여백을 변경하면 이미지가 두 번 더 진행됩니다.
정말 도움이 될 것입니다.
건배.
다음은 onDraw() 메서드에서 캔버스를 변환하는 frameLayout입니다 (ImageView는 내 주 활동에서 해당 FrameLayout에 추가됩니다).
public class TopView extends FrameLayout {
public float mPosX = 0;
public float mPosY = 0;
public TopView(Context context)
{
super(context);
FrameLayout.LayoutParams lp = new FrameLayout.LayoutParams(1920, 3200, Gravity.CENTER);
this.setLayoutParams(lp);
setWillNotDraw(false);
}
@Override
public void onDraw(Canvas canvas) {
super.onDraw(canvas);
canvas.translate(this.mPosX, this.mPosY);
}
}