如何移动旋转过的图像?

时间:2020-06-15 16:13:04

标签: java android android-studio rotation imageview

我有一个程序,可以让我用手指移动图像。 我的问题是这些图像中的某些已在我的.xml文件中旋转,如果它们不是直线,我的程序将无法移动它们。 如果您需要更多信息,我们将很乐意为您提供帮助,如果您对我的问题有解决方案,请先谢谢您。

这是我的.xml文件的一部分(一直都是同一件事):

<ImageView
        android:id="@+id/carte2"
        android:layout_width="100dp"
        android:layout_height="120dp"
        android:layout_marginStart="12dp"
        android:layout_marginLeft="12dp"
        android:layout_marginTop="1dp"
        android:src="@drawable/carte_arriere"
        app:layout_constraintLeft_toLeftOf="@id/carte1"
        app:layout_constraintTop_toTopOf="@id/carte1"
        android:rotation="186.923"
        />

    <ImageView
        android:id="@+id/carte3"
        android:layout_width="100dp"
        android:layout_height="120dp"
        android:layout_marginStart="24dp"
        android:layout_marginLeft="24dp"
        android:layout_marginTop="3dp"
        android:src="@drawable/carte_arriere"
        app:layout_constraintLeft_toLeftOf="@id/carte1"
        app:layout_constraintTop_toTopOf="@id/carte1"
        android:rotation="193.846"
        />

    <ImageView
        android:id="@+id/carte4"
        android:layout_width="100dp"
        android:layout_height="120dp"
        android:layout_marginStart="36dp"
        android:layout_marginLeft="36dp"
        android:layout_marginTop="7dp"
        android:src="@drawable/carte_arriere"
        app:layout_constraintLeft_toLeftOf="@id/carte1"
        app:layout_constraintTop_toTopOf="@id/carte1"
        android:rotation="200.769"
        />

这是我的JAVA文件的一部分(也总是一样):

import androidx.appcompat.app.AppCompatActivity;

import android.annotation.SuppressLint;
import android.content.Intent;
import android.os.Bundle;
import android.view.GestureDetector;
import android.view.KeyEvent;
import android.view.MotionEvent;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;

import ch.maxbi.haveadrink.main.ListeJeuxActivity;
import ch.maxbi.haveadrink.R;


public class Jeu5 extends AppCompatActivity /*implements View.OnTouchListener, GestureDetector.OnGestureListener, View.OnDragListener, GestureDetector.OnDoubleTapListener*/ {

    private static final String TAG = "Jeu5";
    Button back_second_page;
    ImageView essai_mouvement = null, essai_mouvement1 = null, essai_mouvement2 = null, essai_mouvement3 = null, essai_mouvement4 = null, essai_mouvement5 = null, essai_mouvement6 = null, essai_mouvement7 = null;
    ImageView essai_mouvement8 = null;
    private GestureDetector mGestureDetector;
    float x, y;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_jeu5);

        this.back_second_page = (Button) findViewById(R.id.back_second_page);

        back_second_page.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent back_second_page = new Intent(getApplicationContext(), ListeJeuxActivity.class);
                startActivity(back_second_page);
                finish();

            }
        });

        essai_mouvement = findViewById(R.id.carte1);
        essai_mouvement1 = findViewById(R.id.carte2);
        essai_mouvement2 = findViewById(R.id.carte3);
        essai_mouvement3 = findViewById(R.id.carte4);
        essai_mouvement4 = findViewById(R.id.carte5);
        essai_mouvement5 = findViewById(R.id.carte6);
        essai_mouvement6 = findViewById(R.id.carte7);
        essai_mouvement7 = findViewById(R.id.carte8);
        essai_mouvement8 = findViewById(R.id.carte9);

        //essai_mouvement.setOnTouchListener(this);
        /*mGestureDetector = new GestureDetector(this,this);*/

        essai_mouvement.setOnTouchListener(new View.OnTouchListener() {
            @SuppressLint("ClickableViewAccessibility")
            @Override
            public boolean onTouch(View v, MotionEvent event) {

                switch (event.getAction()){

                    case MotionEvent.ACTION_DOWN:

                        essai_mouvement.setRotation(0);

                        x = event.getX();
                        y = event.getY();

                        break;

                    case MotionEvent.ACTION_MOVE:

                        float movedX, movedY;
                        movedX = event.getX();
                        movedY = event.getY();

                        float distanceX = movedX - x;
                        float distanceY = movedY - y;

                        essai_mouvement.setX(essai_mouvement.getX()+distanceX);
                        essai_mouvement.setY(essai_mouvement.getY()+distanceY);

                        break;
                }

                return true;
            }
        });

        essai_mouvement1.setOnTouchListener(new View.OnTouchListener() {
            @SuppressLint("ClickableViewAccessibility")
            @Override
            public boolean onTouch(View v, MotionEvent event) {

                switch (event.getAction()){

                    case MotionEvent.ACTION_DOWN:

                        essai_mouvement1.setRotation(0);

                        x = event.getX();
                        y = event.getY();

                        break;

                    case MotionEvent.ACTION_MOVE:

                        float movedX, movedY;
                        movedX = event.getX();
                        movedY = event.getY();

                        float distanceX = movedX - x;
                        float distanceY = movedY - y;

                        essai_mouvement1.setX(essai_mouvement1.getX()+distanceX);
                        essai_mouvement1.setY(essai_mouvement1.getY()+distanceY);

                        break;
                }

                return true;
            }
        });

        essai_mouvement2.setOnTouchListener(new View.OnTouchListener() {
            @SuppressLint("ClickableViewAccessibility")
            @Override
            public boolean onTouch(View v, MotionEvent event) {

                switch (event.getAction()){

                    case MotionEvent.ACTION_DOWN:

                        essai_mouvement2.setRotation(0);

                        x = event.getX();
                        y = event.getY();

                        break;

                    case MotionEvent.ACTION_MOVE:

                        float movedX, movedY;
                        movedX = event.getX();
                        movedY = event.getY();

                        float distanceX = movedX - x;
                        float distanceY = movedY - y;

                        essai_mouvement2.setX(essai_mouvement2.getX()+distanceX);
                        essai_mouvement2.setY(essai_mouvement2.getY()+distanceY);

                        break;
                }

                return true;
            }
        });

在“ essai_mouvement.setOnClickListener”中,我添加了setRotation(0),因为这样我仍然可以移动卡,但是我想不拉直就移动它们。

0 个答案:

没有答案
相关问题