Я сделал чтобы мой ImageView реагировал на касания(двигался по экрану). Когда картинка выходит за пределы сверху и слева, тот она просто заходит туда и все. Но когда картинка касается правой и нижней части, то она уменьшается в размерах и не выходит за пределы. Я не могу понять из-за чего такое поведение и как это можно устранить.
public class MainActivity extends AppCompatActivity implements View.OnTouchListener {
LinearLayout mainLayout;
ImageView image;
private int xDelta;
private int yDelta;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mainLayout = (LinearLayout) findViewById(R.id.MyLayout);
image = (ImageView) findViewById(R.id.imageView2);
image.setImageResource(R.drawable.dama);
Log.d(LOG_TAG, "image: " + image);
Log.d(LOG_TAG, "mainLayout: " + mainLayout);
image.setOnTouchListener(this);
}
@Override
public boolean onTouch(View v, MotionEvent event) {
int x = (int) event.getRawX();
int y = (int) event.getRawY();
switch (event.getAction()) {
// касание началось
case MotionEvent.ACTION_DOWN:
LinearLayout.LayoutParams lParams = (LinearLayout.LayoutParams) v.getLayoutParams();
xDelta = x - lParams.leftMargin;
yDelta = y - lParams.topMargin;
break;
// тащим
case MotionEvent.ACTION_MOVE:
LinearLayout.LayoutParams layoutParams = (LinearLayout.LayoutParams) v.getLayoutParams();
layoutParams.leftMargin = x - xDelta;
layoutParams.topMargin = y - yDelta;
layoutParams.rightMargin = 0;
layoutParams.bottomMargin = 0;
v.setLayoutParams(layoutParams);
break;
// касание завершено
case MotionEvent.ACTION_UP:
break;
}
mainLayout.invalidate();
return true;
}
}