1

レイアウト内のボタンをクリックすると、LinearLayout を画面の外に半分移動したいのですが、半分移動したレイアウトでボタンをクリックすると、元の位置に戻ります。

translate layout を使用し、レイアウトの x 位置を 0% から -50% に移動し、その逆を行うだけで簡単に実行できることを私は知っています。

私が直面している問題は次のとおりです。

  • レイアウトは中途半端に描画されますが、実際には移動されません。つまり、レイアウトは描画されますが、その子の座標 (クリックを取り込むため) は新しい位置に応じて移動されません。

レイアウト プロパティを移動する方法はありますか。最初にクリックして半分に移動するボタンを2回目にクリックすると、レイアウトが元に戻るようにしたい。

4

1 に答える 1

0

これで試してみることができます:

@SuppressWarnings("unused")
private void setLeftMargin(int value) {
    ((LinearLayout.LayoutParams)myLinearLayout.getLayoutParams()).leftMargin = value;
    myLinearLayout.requestLayout();
}

使用法:

ObjectAnimator.ofInt(this, "leftMargin",
            0, -1 * halfWidth).setDuration(ANIM_DURATION).start();

ObjectAnimator.ofInt(this, "leftMargin",
            -1 * halfWidth, 0).setDuration(ANIM_DURATION).start();

アニメーション ライブラリに関する @damian のコメントを読んでください。

于 2013-02-28T12:49:34.753 に答える