kotlin中的长按功能

问题描述 投票:0回答:1

当我意识到它应该是正常的时候我试图转换一个gif。代码在Kotlin下面。我尝试过使用长按,但是当我发布时,它没有返回到图像。

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

        }
android kotlin ontouchlistener onlongclicklistener
1个回答
0
投票

编辑:

你的问题是问两件事。一个是关于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'
}

然后,同步你的gradle。编辑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
}
© www.soinside.com 2019 - 2024. All rights reserved.