Как я могу переместить изображение на основе прикосновения пользователя?

Я пытаюсь заставить изображение двигаться либо влево, либо вправо, когда пользователь касается левого или правого экрана своего устройства. У меня есть следующий код... Я запустил эмулятор в Android Studio, и когда я нажимаю на правую или левую стороны экрана эмулятора... ничего не происходит. Что не так с этим кодом? Все ответы приветствуются! Я ввел следующий код в действие, в котором есть изображение, которое я хочу переместить:

public class GameScreen1 extends AppCompatActivity implements View.OnTouchListener{


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


    ImageView circle1 = (ImageView) findViewById(R.id.circle1);

}

@Override
public boolean onTouch(View v, MotionEvent event) {
    switch (v.getId()) {
        case R.id.circle1:
            if (event.getAction() == MotionEvent.ACTION_DOWN) {
                //WHAT CODE SHOULD I PUT INSTEAD OF THE FLOAT X AND X++
                int ScreenWidth = getResources().getDisplayMetrics().widthPixels;
                float Xtouch = event.getRawX();
                int sign = Xtouch > 0.5*ScreenWidth ? 1 : -1;
                float XToMove = 50;
                int durationMs = 50;
                v.animate().translationXBy(sign*XToMove).setDuration(durationMs);
            }
            break;
    }
    return false;
}

}


person Laurelton Studios    schedule 14.06.2018    source источник
comment
Используйте return true; вместо того, чтобы ломать дело.   -  person Jay    schedule 14.06.2018


Ответы (1)


Добавьте идентификатор в свой корневой макет в действии и добавьте на него TouchListener.

Вот пример:

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:id="@+id/cl_root"
    android:layout_height="match_parent"
    tools:context=".MainActivity">


</android.support.constraint.ConstraintLayout>

И это код вашей деятельности:

public class MainActivity extends AppCompatActivity {

    ConstraintLayout layout;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        layout = findViewById(R.id.cl_root);
        layout.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View v, MotionEvent event) {
                int screenWidth = getResources().getDisplayMetrics().widthPixels;
                int x = (int)event.getX();
                if ( x >= ( screenWidth/2) ) {
                    //Right touch
                }else {
                    //Left touch
                }
                return false;
            }
        });

    }
}
person Amine Harbaoui    schedule 14.06.2018