お世話になります。ネット等で調べても解決出来なかった為、投稿させて頂きます。
<困っている事>
ImageViewの移動を行う前に、ImageViewが画面の左上の初期位置に移動をしてしまいます。
左上に移動してからは、指の動きに合わせてImageViewは移動してくれます。
始めてタッチした時だけ起こります。
<実現したい事>
初期位置に移動せず、始めから指の動きに合わせてImageViewを移動させたいです。
以下、コードになります。ImageViewは3つあります。
public class SubActivity extends Activity { ImageView heri; ImageView airplain; ImageView track; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_sub); final View.OnTouchListener moving = new View.OnTouchListener() { private float downX; private float downY; private int downLeftMargin; private int downTopMargin; @Override public boolean onTouch(View v, MotionEvent event) { final ViewGroup.MarginLayoutParams param = (ViewGroup.MarginLayoutParams) v.getLayoutParams(); if (event.getAction() == MotionEvent.ACTION_DOWN) { downX = event.getRawX(); downY = event.getRawY(); downLeftMargin = param.leftMargin; downTopMargin = param.topMargin; return true; } else if (event.getAction() == MotionEvent.ACTION_MOVE) { param.leftMargin = downLeftMargin + (int) (event.getRawX() - downX); param.topMargin = downTopMargin + (int) (event.getRawY() - downY); v.layout(param.leftMargin , param.topMargin , param.leftMargin + v.getWidth() , param.topMargin + v.getHeight()); return true; } return false; } }; heri = (ImageView) findViewById(R.id.heri); heri.setOnTouchListener(moving); airplain = (ImageView) findViewById(R.id.airplain); airplain.setOnTouchListener(moving); track = (ImageView) findViewById(R.id.track); track.setOnTouchListener(moving); } }
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <ImageView android:id="@+id/airplain" android:layout_width="120dp" android:layout_height="170dp" android:layout_gravity="right|center_vertical" android:src="@drawable/airplain" /> <ImageView android:id="@+id/heri" android:layout_width="120dp" android:layout_height="170dp" android:layout_gravity="center_horizontal|bottom" android:src="@drawable/heri" /> <ImageView android:id="@+id/track" android:layout_width="120dp" android:layout_height="170dp" android:layout_gravity="center_horizontal|top" android:src="@drawable/track" /> </LinearLayout>
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。