0

ボタンをタッチして他のボタンの位置にドラッグしたい場合は、この画像から明確なアイデアを得ることができます。 誘導イメージ

私を助けてください

私もこれがとても役に立ちました。 Androidで画像をタッチアンドドラッグします が、画面上に他のボタンの位置ではなく、他のボタンの位置にドラッグしたいのですが、ボタンが他のボタンの寸法に入力されたことをどのように検出するのかわかりません。

これまでのところ、私は単なるアニメーションですが、クリックするだけでボタンをまっすぐに動かしたくありません。ユーザーが自分でボタンを他のボタン位置に移動したい。

コード

public class AnimationActivity extends Activity implements OnClickListener {

public Button btn_a1, btn_a2;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.mainsec);
    btn_a1 = (Button) findViewById(R.id.btn_a1);
    btn_a2 = (Button) findViewById(R.id.btn_a2);

    btn_a1.setOnClickListener(this);
    btn_a2.setOnClickListener(this);

}

@Override
public void onClick(final View v) {
    // TODO Auto-generated method stub
    switch (v.getId()) {
    case R.id.btn_a1: {
        int direction = -1;
        DisplayMetrics displaymetrics = new DisplayMetrics();
        getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
        RelativeLayout.LayoutParams absParams = (RelativeLayout.LayoutParams) btn_a1
                .getLayoutParams();

        final float xDelta = (displaymetrics.widthPixels / 2)
                - absParams.leftMargin - (btn_a1.getWidth() / 2);

        final Animation animation = new TranslateAnimation(0, xDelta
                * direction, 0, 0);
        AnimationListener animationOutListener = new AnimationListener() {
            public void onAnimationEnd(Animation animation) {
                btn_a2.setBackgroundDrawable(R.id.blank);// Unselect
            }

            public void onAnimationRepeat(Animation animation) {
                // TODO Auto-generated method stub
            }

            public void onAnimationStart(Animation animation) {
                // TODO Auto-generated method stub
                btn_a2.setBackgroundDrawable(R.id.red);// Select
            }
        };
        animation.setAnimationListener(animationOutListener);
        animation.setDuration(1000);
        btn_a2.startAnimation(animation);

        break;
    }
    case R.id.btn_a2: {
        int direction = 1;
        DisplayMetrics displaymetrics = new DisplayMetrics();
        getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
        RelativeLayout.LayoutParams absParams = (RelativeLayout.LayoutParams) btn_a1
                .getLayoutParams();

        final float xDelta = (displaymetrics.widthPixels / 2)
                - absParams.leftMargin - (btn_a1.getWidth() / 2);

        final Animation animation = new TranslateAnimation(0, xDelta
                * direction, 0, 0);
        AnimationListener animationOutListener = new AnimationListener() {
            public void onAnimationEnd(Animation animation) {
                btn_a1.setBackgroundDrawable(R.id.blank);// Unselect
            }

            public void onAnimationRepeat(Animation animation) {
                // TODO Auto-generated method stub
            }

            public void onAnimationStart(Animation animation) {
                // TODO Auto-generated method stub
                btn_a1.setBackgroundDrawable(R.id.red);// Select
            }
        };
        animation.setDuration(1000);
        btn_a1.startAnimation(animation);
        break;
    }
    }
}
4

1 に答える 1

1

これはどう:

ボタンのparentViews onTouchEventsを評価する必要があり、ヒットした場合は、ボタンに関連付けられたonClickメソッドを開始するか、指を離したときに、アプリに合ったものを開始できます.

ただし、指を下/移動​​している間は、ボタンの座標を変更して、親ビューで再描画をトリガーすることができます。

ボタンの移動をサポートする新しいビューを作成する必要がある場合があります。レイアウト内でそれができるかどうかはわかりません。

于 2013-09-22T22:29:17.393 に答える