Nano Hash - криптовалюты, майнинг, программирование

Разрешение пользовательскому представлению двигаться только вниз

Я использую следующий код, чтобы пользователи могли перемещать изображения. Я создал собственное изображение для того же.

public class MovableImageView extends android.support.v7.widget.AppCompatImageView implements ImageView.OnTouchListener{

    float x,y =0;
    private static final String TAG = MovableImageView.class.getSimpleName();

    public MovableImageView(Context context) {
        super(context);
        setOnTouchListener(this);

    }

    public MovableImageView(Context context, AttributeSet attrs) {
        super(context, attrs);
        setOnTouchListener(this);
    }

    public MovableImageView(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
        setOnTouchListener(this);
    }


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


            case MotionEvent.ACTION_DOWN:

                x = this.getX() - event.getRawX();
                y = this.getY() - event.getRawY();
                break;

            case MotionEvent.ACTION_MOVE:

                this.animate()
                        .x(event.getRawX() + x)
                        .y(event.getRawY() + y)
                        .setDuration(0)
                        .start();
                Log.e("pos","x:"+String.valueOf(event.getRawX() + x)+"y:"+String.valueOf(event.getRawX() + y));

                break;
            default:
                return false;
        }
        return true;
    }

}

Я использую приведенный выше код, чтобы позволить пользователю перетаскивать изображение. Этот код работает. Однако это также позволяет пользователю перемещать изображение влево и вправо. Я пытаюсь заставить его двигаться только вниз, а не вверх, влево или вправо. Могу ли я узнать, как я могу разобраться в этом?


Ответы:


1

Попробуй это:

public class MovableImageView extends android.support.v7.widget.AppCompatImageView implements ImageView.OnTouchListener{

    float y =0;
    private static final String TAG = MovableImageView.class.getSimpleName();

    public MovableImageView(Context context) {
        super(context);
        setOnTouchListener(this);

    }

    public MovableImageView(Context context, AttributeSet attrs) {
        super(context, attrs);
        setOnTouchListener(this);
    }

    public MovableImageView(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
        setOnTouchListener(this);
    }


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


            case MotionEvent.ACTION_DOWN:

                y = this.getY() - event.getRawY();
                break;

            case MotionEvent.ACTION_MOVE:

                if (this.getY() < event.getRawY() + y) { //checks if the new position is greater (means going down) to the current position
                   this.animate()
                        .y(event.getRawY() + y)
                        .setDuration(0)
                        .start();
                   Log.e("pos","y:"+String.valueOf(event.getRawY() + y));
                }
                break;
            default:
                return false;
        }
        return true;
    }

}

По сути, я только что удалил весь ваш код x-axis, поэтому будет использоваться только y-axis (вертикальный).

Обновлено: блокировка смахивания вверх

03.01.2018
  • работает нормально... однако можно ли предотвратить движение вверх? 03.01.2018
  • Вы имеете в виду, что нет никакого способа подняться наверх? После того, как он проведет его вниз, нет возможности вернуть его, верно? 03.01.2018
  • подождите, позвольте мне попробовать код, я его исправлю, так что он просто отключится. 03.01.2018
  • Обновил мой ответ, я также попробовал и протестировал его. Оно работает. 03.01.2018
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..