2011-07-27 86 views
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); 

} 

} 

回答

1

您可以在構造函數中使用setPadding(this.mPosX,this.mPosY,0,0)。它應該工作。