Methoden OnTouchListener

Hannah

Mitglied
Hallo,
Hallo, steh da grade bischen auf dem Schlauch.
Mein Vorhaben ist es über den OnTouchListener mehrere Objekte(imageviews) frei zu bewegen.
Mit einem Objekt klappt das . Meine Frage ist, wie kann ich das mit mehreren objekten umsetzen. Unten der Code mit einem Objekt.
--
Java:
public class MainActivity extends Activity implements View.OnTouchListener {

    private ImageView mImageView01;
    private ImageView mImageView02;
    private ViewGroup mRrootLayout;
    private int _xDelta;
    private int _yDelta;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);

        mRrootLayout = (ViewGroup) findViewById(R.id.root);
        mImageView01 = (ImageView) mRrootLayout.findViewById(R.id.imageView01);
        //mImageView02 = (ImageView) mRrootLayout.findViewById(R.id.imageView02);

        RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(250, 250); //Default 150/150
        mImageView01.setLayoutParams(layoutParams);
        mImageView01.setOnTouchListener(this);

    }
    @Override
    public boolean onTouch(View v, MotionEvent event) {

            final int X = (int) event.getRawX();
            final int Y = (int) event.getRawY();
            switch (event.getAction() & MotionEvent.ACTION_MASK) {
                case MotionEvent.ACTION_DOWN:
                    RelativeLayout.LayoutParams lParams = (RelativeLayout.LayoutParams) v.getLayoutParams();
                    _xDelta = X - lParams.leftMargin;
                    _yDelta = Y - lParams.topMargin;
                    break;
                case MotionEvent.ACTION_UP:
                    break;
                case MotionEvent.ACTION_POINTER_DOWN:
                    break;
                case MotionEvent.ACTION_POINTER_UP:
                    break;
                case MotionEvent.ACTION_MOVE:
                    RelativeLayout.LayoutParams layoutParams = (RelativeLayout.LayoutParams) v.getLayoutParams();
                    layoutParams.leftMargin = X - _xDelta;
                    layoutParams.topMargin = Y - _yDelta;
                    layoutParams.rightMargin = -250; //Default -250
                    layoutParams.bottomMargin = -250;  // Default -250
                    v.setLayoutParams(layoutParams);
                    break;
            }

            mRrootLayout.invalidate();
            return true;
        }
}

Vielen Dank

lg.
 
Zuletzt bearbeitet von einem Moderator:

krgewb

Top Contributor
Bitte immer in Code-Tags posten.

Java:
public class MainActivity extends Activity implements View.OnTouchListener {

    private ImageView mImageView01;
    private ImageView mImageView02;
    private ViewGroup mRrootLayout;
    private int _xDelta;
    private int _yDelta;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);

        mRrootLayout = (ViewGroup) findViewById(R.id.root);
        mImageView01 = (ImageView) mRrootLayout.findViewById(R.id.imageView01);
        //mImageView02 = (ImageView) mRrootLayout.findViewById(R.id.imageView02);

        RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(250, 250); //Default 150/150
        mImageView01.setLayoutParams(layoutParams);
        mImageView01.setOnTouchListener(this);
    }

    @Override
    public boolean onTouch(View v, MotionEvent event) {

        final int X = (int) event.getRawX();
        final int Y = (int) event.getRawY();

        switch (event.getAction() & MotionEvent.ACTION_MASK) {
            case MotionEvent.ACTION_DOWN:
                RelativeLayout.LayoutParams lParams = (RelativeLayout.LayoutParams) v.getLayoutParams();
                _xDelta = X - lParams.leftMargin;
                _yDelta = Y - lParams.topMargin;
                break;
            case MotionEvent.ACTION_UP:
                break;
            case MotionEvent.ACTION_POINTER_DOWN:
                break;
            case MotionEvent.ACTION_POINTER_UP:
                break;
            case MotionEvent.ACTION_MOVE:
                RelativeLayout.LayoutParams layoutParams = (RelativeLayout.LayoutParams) v.getLayoutParams();
                layoutParams.leftMargin = X - _xDelta;
                layoutParams.topMargin = Y - _yDelta;
                layoutParams.rightMargin = -250; //Default -250
                layoutParams.bottomMargin = -250; // Default -250
                v.setLayoutParams(layoutParams);
                break;
        }

        mRrootLayout.invalidate();
        return true;
    }
}
 

Neue Themen


Oben