Изменить:
Ваш вопрос задает две вещи.
Один о 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
}