/
Libra
/
my-application
Обзор
Документация
Войти
/
Libra
/
my-application
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
app/src/main/java/com/libraprogramming/myapplication/control/ClickableMotionLayout.java
66 строк
2 KB
Толмачёв Владимир Викторович
Initial commit
18 ноя 2025, 13:36
18 ноя 2025, 13:36
1263a57
Код
Авторство
О чём код?
package com.libraprogramming.myapplication.control; import android.content.Context; import android.util.AttributeSet; import android.view.MotionEvent; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.constraintlayout.motion.widget.MotionLayout; import org.jetbrains.annotations.NotNull; public class ClickableMotionLayout extends MotionLayout { private static final float TOUCH_TOLERANCE = 8.0f; private float mLastX; private float mLastY; private boolean mIsFired; public ClickableMotionLayout(@NonNull @NotNull Context context) { super(context); } public ClickableMotionLayout( @NonNull @NotNull Context context, @Nullable AttributeSet attrs) { super(context, attrs); } public ClickableMotionLayout( @NonNull @NotNull Context context, @Nullable AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } @Override public boolean onInterceptTouchEvent(MotionEvent event) { switch (event.getActionMasked()) { case MotionEvent.ACTION_DOWN: { this.mLastX = event.getX(); this.mLastY = event.getY(); this.mIsFired = false; break; } case MotionEvent.ACTION_MOVE: { final float deltaX = Math.abs(event.getX() - mLastX); final float deltaY = Math.abs(event.getY() - mLastY); if (((deltaX > TOUCH_TOLERANCE) || (deltaY > TOUCH_TOLERANCE)) && !mIsFired) { MotionEvent downEvent = MotionEvent.obtain(event); downEvent.setAction(MotionEvent.ACTION_DOWN); dispatchTouchEvent(downEvent); onTouchEvent(downEvent); mIsFired = true; return true; } } } return super.onInterceptTouchEvent(event); } }