Функция длительного нажатия в котлине - PullRequest
0 голосов
/ 29 марта 2019

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

var walk1: ImageView?=null
var walk2: ImageView?=null
 walk1=findViewById(R.id.walky)
        walk2=findViewById(R.id.walky1)

        walk1?.setOnLongClickListener { walk2?.visibility = View.VISIBLE
           walk2?.setOnClickListener(){ walk2?.visibility=View.GONE
              return@setOnTouchListener true`enter code here`
           }
            return@setOnLongClickListener true

        }

1 Ответ

0 голосов
/ 29 марта 2019

Изменить:

Ваш вопрос задает две вещи. Один о OnLongClickListener, и я ответил ниже оригинальным ответом.

А другой касается отображения gif, и вам нужно использовать библиотеку изображений с именем Glide.

Читать это:
https://stackoverflow.com/a/44493206/850347

Сначала добавьте этот код в app/build.gradle

repositories {
  mavenCentral()
  google()
}

dependencies {
  implementation 'com.github.bumptech.glide:glide:4.9.0'
  annotationProcessor 'com.github.bumptech.glide:compiler:4.9.0'
}

А потом синхронизируй своего ученика. После редактирования файла build.gradle вы увидите панель уведомлений (вверху экрана).

Затем добавьте этот код в свой файл kotlin. Измените R.raw.image_gif на имя вашего gif-файла.

Glide.with(this).asGif().load(R.raw.image_gif).into(walk1);

Оригинал:

Вы устанавливаете LongClickListener на walk1 и ClickListener на walk2.

В этом случае вам необходимо сосредоточиться на возвращаемом значении LongClickListener.

Почти каждый метод, связанный с событием, return true означает «Я хочу использовать событие и не хочу, чтобы оно распространялось. Эта точка является концом события». return false означает «Я просто хочу обработать свое событие, и событие будет распространено на его родительское представление (или дочернее представление)»

Последняя строка метода kotlin (который требует возврата) означает «возврат». Таким образом, в этом коде false эквивалентно return false.

val walk1: ImageView = findViewById(R.id.walky)
val walk2: ImageView = findViewById(R.id.walky1)

walk1.setOnLongClickListener {
    walk2.visibility = View.VISIBLE
    false // Don't consume event, if return false. Consume event if true.
}

walk2.setOnClickListener {
    walk2.visibility = View.GONE
}
...