👉關于作者
眾所周知,人生是一個漫長的流程,不斷克服困難,不斷反思前進的程序,在這個程序中會產生很多對于人生的質疑和思考,于是我決定將自己的思考,經驗和故事全部分享出來,以此尋找共鳴 !!!
專注于Android/Unity和各種游戲開發技巧,以及各種資源分享(網站、工具、素材、原始碼、游戲等)
有什么需要歡迎私我,交流群讓學習不再孤單,
👉前提
前面我們學了Kotlin語言,趁熱打鐵我們試試Kotlin在Android中的應用,
如果是新手,請先學完Android基礎,
推薦先看小空之前寫的熬夜Android系列,再來嘗試,
👉實踐程序
😜方式一
方法一就是單獨的控制元件寫自己的點擊事件-匿名內部類形式
myBtn.setOnClickListener {
Toast.makeText(this, "芝麻粒兒-點擊了事件", Toast.LENGTH_SHORT).show()
}
😜方式二
方法二就是實作View.OnClickListener介面,多個點擊事件在同一個onClick中處理,Java中使用的是switch,Kotlin中使用when,
class MainActivity : AppCompatActivity(), View.OnClickListener {
private val myText: TextView by lazy { findViewById<TextView>(R.id.myText) }
private val myImg: ImageView by lazy { findViewById<ImageView>(R.id.myImg) }
private val imageView: ImageView by lazy { findViewById<ImageView>(R.id.imageView) }
private val myBtn: Button by lazy { findViewById<Button>(R.id.myBtn) }
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
myText.setOnClickListener(this)
myImg.setOnClickListener(this)
myBtn.setOnClickListener(this)
imageView.setOnClickListener {
Toast.makeText(this, "芝麻粒兒-點擊了事件", Toast.LENGTH_SHORT).show()
}
}
override fun onClick(p0: View?) {
when (p0?.id) {
R.id.myText -> {
Toast.makeText(this, "點擊了文本", Toast.LENGTH_SHORT).show()
}
R.id.myImg -> {
Toast.makeText(this, "點擊了圖片", Toast.LENGTH_SHORT).show()
}
R.id.myBtn -> {
Toast.makeText(this, "點擊了按鈕", Toast.LENGTH_SHORT).show()
}
}
}
}
😜方式三
方法三就是布局中使用【android:onClick】屬性,類中直接創建同屬性名的方法,但是根據實際情況來說,在專案中使用少,而且專案結構復雜了很容易混亂,所以不提這個了,
除了上述三種方式外,真實的業務可能會在點擊事件增加一些保障:比如防止快速點擊,
復雜的業務邏輯,往往需要時間來處理,哪怕是1秒的時間,總會有著急或無聊的用戶快速點擊應用的按鈕,如果沒做好處理,必然會引發意想不到的事件,甚至是血崩,
所以年輕人吶,省事是需要付出代價的,你不做處理獲取了片刻的自由,卻得到了用戶無盡的吐槽,這個道理,你明白了嗎?
就拿上面點擊事件方式一來舉例,你運行后快速點擊,你會發現即使你停止了點擊,Toast還在不斷的出現,
所以我們給她加個保障再來試試:
public abstract class NoFastClickListener implements View.OnClickListener {
//最小快速點擊間隔,距離上次間隔至少1000毫秒
private final int MIN_CLICK_TIME = 1000;
private long lastClickTime = 0;
@Override
public void onClick(View view) {
long currentTime = Calendar.getInstance().getTimeInMillis();
if (currentTime - lastClickTime > MIN_CLICK_TIME) {
lastClickTime = currentTime;
onNoFastClick(view);
}
}
public abstract void onNoFastClick(View view);
}
點擊事件這樣寫:
myBtn.setOnClickListener(object : NoFastClickListener() {
override fun onNoFastClick(view: View?) {
Toast.makeText(this@MainActivity, "芝麻粒兒-防止點擊了事件", Toast.LENGTH_SHORT).show()
}
})
運行后你再試試,會發現,哎?真的,沒有那么多吐司了,真的好啊,
👉其他
📢作者:小空和小芝中的小空
📢轉載說明-務必注明來源:https://zhima.blog.csdn.net/
📢歡迎點贊👍收藏🌟留言📝
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/342254.html
標籤:其他
