У меня есть FrameLayout, у которого есть изображение большого пальца, которое пользователь может перетаскивать.
Ширина большого пальца составляет 10 dp, а высота — 10 dp.
f = (FrameLayout) findViewById(R.id.fl);
f.setOnTouchListener(flt);
f.measure(MeasureSpec.UNSPECIFIED, MeasureSpec.UNSPECIFIED);
width = f.getMeasuredWidth();
height = f.getMeasuredHeight();
@Override
public boolean onTouch(View v, MotionEvent event) {
float x = event.getX();
float y = event.getY();
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
if (x<0) {
x = x + 10;
iv.setX(x);
iv.setY(y);
}
if (x>f.getWidth()) {
x = x - 10;
iv.setX(x);
iv.setY(y);
}
else {
iv.setX(x);
iv.setY(y);
}
// Write your code to perform an action on down
break;
case MotionEvent.ACTION_MOVE:
if (x<0) {
x = x + 10;
iv.setX(x);
iv.setY(y);
}
if (x>f.getWidth()) {
x = x - 10;
iv.setX(x);
iv.setY(y);
}
else {
iv.setX(x);
iv.setY(y);
}
// Write your code to perform an action on contineus touch move
break;
case MotionEvent.ACTION_UP:
// Write your code to perform an action on touch up
break;
}
// TODO Auto-generated method stub
return true;
}
Моя цель состоит в том, что если использование перетаскивает поле за пределы представления слева, дайте большому пальцу x + 10, чтобы оставаться в поле зрения, и если пользователь перетаскивает вправо за пределы представления, дайте большому пальцу x-10, чтобы оставаться в пределах Посмотреть. Но большой палец просто исчезает, если я перетаскиваю влево и вправо за пределы FrameLayout.
Вот мой XML:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:padding="20dp"
android:id="@+id/ll"
android:background="#000000" >
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/palette2"
android:id="@+id/fl" >
<ImageView
android:id="@+id/iv"
android:layout_width="10dp"
android:layout_height="10dp"
android:src="@drawable/esquare" />
</FrameLayout>
</LinearLayout>
Как я могу изменить код, чтобы добиться результата?
iv.setX(x-image-width)
, чтобы изображение оставалось в поле зрения, и для Y,iv.setY(y-image-height)
. Пожалуйста, дайте мне знать ваши мысли по этому поводу. Спасибо 03.02.2014