当我意识到它应该是正常的时候我试图转换一个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
}
编辑:
你的问题是问两件事。一个是关于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
}