-1

重複の可能性:
Androidでタッチして画像をドラッグする方法は?

指をドラッグしてビットマップを左右に移動する方法

イラスト

B--------o1-----------o2-----------o3

B = ビットマップ

o1 = 私の目的地 1

o2 = 私の目的地 2

o3 = 私の目的地 3

ビットマップを右にドラッグすると、宛先ポイント 1 にビットマップします

---------B---------o2-----------o3

宛先ポイント 1 のビットマップを右にドラッグすると、ビットマップが宛先ポイント 2 に変更されます

----------o1--------B-------------o3

宛先ポイント 2 のビットマップを左にドラッグしてから、ビットマップを宛先ポイント 1 に戻す場合

----------B--------o2-------------o3

等々..

私のアイデアをAndroidコードに実装するにはどうすればよいですか?

私はAndroidの初心者なので、サンプルコードを教えてください。

4

2 に答える 2

0

このチュートリアルを試してみませんか。を使用するonTouchEventと、チュートリアルのリンク例に従って、必要なものがすべて提供されます。サンプルコード-

@Override
public boolean onTouchEvent(MotionEvent event) {
    mX = (int) event.getX() - mBitmap.getWidth() / 2;
    mY = (int) event.getY() - mBitmap.getHeight() / 2;
    return super.onTouchEvent(event);
}
于 2012-10-15T06:27:20.073 に答える
0

XML レイアウト:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:orientation="vertical"
   android:layout_width="fill_parent"
   android:layout_height="fill_parent"
   android:id="@+id/vg"
   >

    <ImageView
        android:id="@+id/img"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="10px"
        android:src="@drawable/image" />

</LinearLayout>

ドラッグ アクティビティ:

public class DragActivity extends Activity {

    private View selected_item = null;
    private int offset_x = 0;
    private int offset_y = 0;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_drag);
    ViewGroup vg = (ViewGroup)findViewById(R.id.vg);
    vg.setOnTouchListener(new View.OnTouchListener() {

                    @Override
                    public boolean onTouch(View v, MotionEvent event) {
                            switch(event.getActionMasked())
                            {
                                    case MotionEvent.ACTION_MOVE:
                                            int x = (int)event.getX() - offset_x;
                                            int y = (int)event.getY() - offset_y;
                    int w = getWindowManager().getDefaultDisplay().getWidth()- 70;
                    int h = getWindowManager().getDefaultDisplay().getHeight()- 70;
                    if(x > w)
                        x = w;
                    if(y > h)
                        y = h;
                                     LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(
                                    new ViewGroup.MarginLayoutParams(
                                                    LinearLayout.LayoutParams.WRAP_CONTENT,
                                                    LinearLayout.LayoutParams.WRAP_CONTENT));
                                     lp.setMargins(x, y, 0, 0);
                                            selected_item.setLayoutParams(lp);
                                            break;
                                    default:
                                            break;
                            }
                            return true;
                    }
});
   ImageView img = (ImageView)findViewById(R.id.img);
    img.setOnTouchListener(new View.OnTouchListener() {

                    @Override
                    public boolean onTouch(View v, MotionEvent event) {
                            switch(event.getActionMasked())
                            {
                                    case MotionEvent.ACTION_DOWN:
                                            offset_x = (int)event.getX();
                                            offset_y = (int)event.getY();
                                            selected_item = v;
                                            break;
                                    default:
                                            break;
                            }

                            return false;
                    }
            });
}

}
于 2012-10-15T05:49:40.310 に答える