1
我有一個FrameLayout包含幾個ImageView。在主要活動中,我記錄了觸摸事件,以便用手指移動我的FrameLayout和圖像(拖動)。Android:單擊/觸摸事件不工作後畫布翻譯
爲此,我在framelayout的onDraw中調用了由activity中的invalidate()調用的canvas.translate(x,y)。
除了在翻譯之後,我無法點擊我的ImageView,一切都像魅力一樣。實際上,每個圖像的點擊監聽器仍然位於翻譯之前的原始位置。
我讀過,我應該手動更新翻譯後每個圖像的佈局,但如何做到這一點?如果我用翻譯值更改邊距,圖像進一步進行兩次...
我真的很感謝任何幫助。
乾杯。
這裏是我在onDraw()方法中翻譯畫布的frameLayout(ImageView被添加到我的主Activity中的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);
}
}