Событие прикосновения Проблема просмотра изображения - PullRequest
0 голосов
/ 09 сентября 2011

Моя проблема в том, что я перемещаю изображение на TouchEvent в ImageView, у меня есть два изображения на одном экране, но проблема в том, что я касаюсь image2 и перемещаю его, что отлично работает, но если я касаюсь image1, в это время перемещается изображение2 в исходное положение, так в чем же проблема? Извините за плохой английский.

Пожалуйста, помогите мне.

Ниже приведен мой код: -

main.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
    <ImageView android:layout_width="50sp" android:layout_height="50sp"
        android:id="@+id/image" android:src="@drawable/image">
    </ImageView>
    <ImageView android:layout_y="30dip" android:layout_x="118dip"
        android:layout_width="50sp" android:layout_height="50sp" android:id="@+id/image1"
        android:src="@drawable/image1">
    </ImageView>
</RelativeLayout>

MainActivity.java: -

public class MainActivity extends Activity implements OnTouchListener {
    int windowwidth;
    int windowheight;

    private RelativeLayout.LayoutParams layoutParams;
    private RelativeLayout.LayoutParams layoutParams1;

        ImageView image, image1;
    int x_cord, y_cord;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        windowwidth = getWindowManager().getDefaultDisplay().getWidth();
        windowheight = getWindowManager().getDefaultDisplay().getHeight();

        image = (ImageView) findViewById(R.id.image);
        image.setOnTouchListener(this);

        image1 = (ImageView) findViewById(R.id.image1);
        image1.setOnTouchListener(this);

    }

    public boolean onTouch(View v, MotionEvent event) {
        switch (v.getId()) {
        case R.id.image:
            System.out.println("Image is Touched");

            image = (ImageView) findViewById(R.id.image);
            layoutParams = (RelativeLayout.LayoutParams) image.getLayoutParams();
            switch (event.getAction()) {
            case MotionEvent.ACTION_DOWN:
                break;
            case MotionEvent.ACTION_MOVE:
                int x_cord = (int) event.getRawX();
                int y_cord = (int) event.getRawY();

                if (x_cord > windowwidth) {
                    x_cord = windowwidth;
                }
                if (y_cord > windowheight) {
                    y_cord = windowheight;
                }

                layoutParams.leftMargin = x_cord - 25;
                layoutParams.topMargin = y_cord - 75;

                image.setLayoutParams(layoutParams);
                break;
            default:
                break;
            }
        case R.id.image1:
            System.out.println("Image 1 is Touched");
            image1 = (ImageView) findViewById(R.id.image1);
            layoutParams1 = (RelativeLayout.LayoutParams) image1
                    .getLayoutParams();
            switch (event.getAction()) {
            case MotionEvent.ACTION_DOWN:
                break;
            case MotionEvent.ACTION_MOVE:
                x_cord = (int) event.getRawX();
                y_cord = (int) event.getRawY();

                if (x_cord > windowwidth) {
                    x_cord = windowwidth;
                }
                if (y_cord > windowheight) {
                    y_cord = windowheight;
                }

                layoutParams1.leftMargin = x_cord - 25;
                layoutParams1.topMargin = y_cord - 75;

                image1.setLayoutParams(layoutParams1);

                break;
            default:
                break;
            }
        }
        return true;
    }
}

Ответы [ 2 ]

2 голосов
/ 09 сентября 2011

используйте, как это вы можете достичь:

tv1 = (TextView)findViewById(R.id.text_view1);
    tv1.setOnTouchListener(new View.OnTouchListener() {         

        @Override
        public boolean onTouch(View v, MotionEvent event) {
            layoutParams1 = (RelativeLayout.LayoutParams) tv1.getLayoutParams();
           switch(event.getActionMasked())
           {
        case MotionEvent.ACTION_DOWN:
            break;
        case MotionEvent.ACTION_MOVE:
            int x_cord = (int) event.getRawX();
            int y_cord = (int) event.getRawY();
            if (x_cord > windowwidth) {
                x_cord = windowwidth;
            }
            if (y_cord > windowheight) {
                y_cord = windowheight;
            }
            layoutParams1.leftMargin = x_cord - 25;
            layoutParams1.topMargin = y_cord - 75;
            tv1.setLayoutParams(layoutParams1);
            break;
        default:
            break;
        }
        return true;
    }
    });

    tv2 = (TextView)findViewById(R.id.text_view2);
    tv2.setTextColor(Color.MAGENTA);
    tv2.setOnTouchListener(new View.OnTouchListener() {         

        @Override
        public boolean onTouch(View v, MotionEvent event) {
            layoutParams2 = (RelativeLayout.LayoutParams) tv2.getLayoutParams();
           switch(event.getActionMasked())
           {
        case MotionEvent.ACTION_DOWN:
            break;
        case MotionEvent.ACTION_MOVE:
            int x_cord = (int) event.getRawX();
            int y_cord = (int) event.getRawY();
            if (x_cord > windowwidth) {
                x_cord = windowwidth;
            }
            if (y_cord > windowheight) {
                y_cord = windowheight;
            }
            layoutParams2.leftMargin = x_cord - 25;
            layoutParams2.topMargin = y_cord - 75;
            tv2.setLayoutParams(layoutParams2);
            break;
        default:
            break;
        }
        return true;
    }
    });
0 голосов
/ 09 сентября 2011

хотя у вас есть больше репутации здесь, но я не вижу, относительная ориентация расположения, горизонтальная или вертикальная ?? если ваши изображения находятся рядом или перекрываются, значит, может быть проблема с положением изображения на событии Touch, получая 2-е изображение каждый раз, когда любое изображение касается экрана. извините за мой английский тоже, если вы не понимаете ..

...