2011-07-27 5 views
1

私は、いくつかのImageViewを含むFrameLayoutを持っています。メインアクティビティでは、FrameLayoutと画像を指でドラッグ(ドラッグ)するために、タッチイベントを記録します。Android:click/touchイベントがキャンバスの後に動作しない翻訳する

これを行うには、activity touchイベントハンドラでinvalidate()によって呼び出されるframelayoutのonDrawの中でcanvas.translate(x、y)を呼び出しています。

翻訳後、ImageViewをクリックすることができない点を除いて、すべてが魅力的です。実際、各画像のクリックリスナーは翻訳前の元の場所にあります。

翻訳後に各イメージのレイアウトを手動で更新する必要がありますが、それを行うにはどうすればよいですか?変換値で余白を変更すると、画像はさらに2回表示されます...

私は本当にその1つの助けに感謝します。

乾杯。

ここでは、onDraw()メソッドでキャンバスを変換するframeLayout(メインアクティビティのFrameLayoutにImageViewが追加されています)です。

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)を使用できます。それは動作するはずです。

関連する問題