#java #android #kotlin
Вопрос:
Я хочу написать приложение для серии пенальти, теперь я настроил фон и добавил мяч и вратаря на карту. Как мне сделать так, чтобы, когда я нажимаю на экран, мяч следовал за моим прикосновением к экрану. Как это сделать? Как отслеживать касание на экране и вводить мяч после моего прикосновения.
Основная активность.тыс. т
class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) window.decorView.systemUiVisibility = View.SYSTEM_UI_FLAG_LAYOUT_STABLE or View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN or View.SYSTEM_UI_FLAG_FULLSCREEN }
activity_main.xml
lt;?xml version="1.0" encoding="utf-8"?gt; lt;androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@drawable/main_bg" tools:context=".MainActivity"gt; lt;ImageView android:id="@ id/ball" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/ball" app:layout_editor_absoluteX="150dp" app:layout_editor_absoluteY="500dp" tools:ignore="MissingConstraints" /gt; lt;ImageView android:layout_width="150dp" android:layout_height="150dp" app:layout_editor_absoluteX="125dp" app:layout_editor_absoluteY="300dp" android:src="@drawable/goalkeeper" lt;/androidx.constraintlayout.widget.ConstraintLayoutgt;
Ответ №1:
Я нашел ответ на свой вопрос, вам нужно использовать OnTouchListener. Мой код выглядит так:
ImageView ballView; float xDown = 0, yDown = 0; @SuppressLint("ClickableViewAccessibility") @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); getSupportActionBar().hide(); ballView = findViewById(R.id.ball); ballView.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View view, MotionEvent motionEvent) { switch (motionEvent.getActionMasked()) { ///пользователь просто прикоснулся к мячу case MotionEvent.ACTION_DOWN: xDown = motionEvent.getX(); yDown = motionEvent.getY(); break; ///пользователь водит по экрану case MotionEvent.ACTION_MOVE: float movedX, movedY; movedX = motionEvent.getX(); movedY = motionEvent.getY(); float distanceX = movedX - xDown; float distanceY = movedY - yDown; ballView.setX(ballView.getX() distanceX); ballView.setY(ballView.getY() distanceY); break; } return true; } });