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

Как управлять изображением, чтобы оно не выходило из imageView?

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


  • Какой код вы используете для перемещения изображения внутри ImageView? 19.12.2012
  • У меня такая же проблема, как вы справляетесь с этим, пожалуйста, дайте мне образец 25.06.2015

Ответы:


1

Мне трудно понять ваш вопрос. Но если я правильно истолковал ваш вопрос, у вас в настоящее время есть перетаскиваемое изображение, и вы хотите убедиться, что границы изображения не выходят за пределы экрана? Единственный способ предотвратить это — проверить, выходят ли границы изображения за пределы экрана. Приведенный ниже код НЕ является полным, он просто поможет вам в пути. finalHeight и finalWidth теперь будут содержать фактический размер вашего изображения на экране (т.е. фактический размер изображения в изображении).

int windowwidth = getWindowManager().getDefaultDisplay().getWidth();
int windowheight = getWindowManager().getDefaultDisplay().getHeight();
final ImageView mImage= (ImageView)findViewById(R.id.mImage);

int finalHeight, finalWidth;
ViewTreeObserver vto = mImage.getViewTreeObserver();
vto.addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() {
    public boolean onPreDraw() {
        finalHeight = mImage.getMeasuredHeight();
        finalWidth = mImage.getMeasuredWidth();
        return true;
    }
});

mImage.setOnTouchListener(new View.OnTouchListener() {

                @Override
                public boolean onTouch(View v, MotionEvent event) {
                    LayoutParams layoutParams = (LayoutParams) mImage.getLayoutParams();
                    switch(event.getAction())
                    {
                    case MotionEvent.ACTION_DOWN:   
                                                    break;
                    case MotionEvent.ACTION_MOVE:
                         int x_cord = (int)event.getRawX();
                         int y_cord = (int)event.getRawY();

                         if(x_cord>windowwidth){x_cord=windowwidth;}
                         if(y_cord>windowheight){y_cord=windowheight;}

                         layoutParams.leftMargin = x_cord - 10; // Set these to co-responding values
                         layoutParams.topMargin = y_cord - 10; // Set these to co-responding values
                         mImage.setLayoutParams(layoutParams);
                         break;
                    default:
                         break;
                    }
                    return true;
                }
        });

Это может помочь вам в пути =)

19.12.2012
  • Извините за мой плохой английский, я не хочу перемещать imageView, я хочу перетаскивать рисуемый объект в imageView. Большое спасибо, я решил это с помощью прямоугольника drawable 20.12.2012
  • Новые материалы

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

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

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

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

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

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

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