1.常规的方式实现匿名内部类,对象表达式:
window.addMouseListener(object : MouseAdapter() {
override fun mouseClicked(e: MouseEvent) {
// ...
}
override fun mouseEntered(e: MouseEvent) {
// ...
}
})
具体例子如下:
private fun setAnimation() {
val alphaAnimation = AlphaAnimation(0.1f,1.0f)
alphaAnimation.duration = 1000
val scaleAnimation = ScaleAnimation(0.1f,1.0f,0.1f,1.0f,ScaleAnimation.RELATIVE_TO_SELF,0.5f,ScaleAnimation.RELATIVE_TO_SELF,0.5f)
scaleAnimation.duration =1000
val animationSet = AnimationSet(true)
animationSet.addAnimation(alphaAnimation)
animationSet.addAnimation(scaleAnimation)
animationSet.duration = 1000
iv_icon_splash.startAnimation(animationSet)
animationSet.setAnimationListener(object : Animation.AnimationListener{
override fun onAnimationRepeat(animation: Animation?) {
}
override fun onAnimationStart(animation: Animation?) {
}
override fun onAnimationEnd(animation: Animation?) {
newIntent<MainActivity>()
finish()
}
})
}
recyclerView.addOnScrollListener(object : RecyclerView.OnScrollListener() {
override fun onScrollStateChanged(recyclerView: RecyclerView?, newState: Int) {
super.onScrollStateChanged(recyclerView, newState)
var layoutManager: LinearLayoutManager = recyclerView?.layoutManager as LinearLayoutManager
var lastPositon = layoutManager.findLastVisibleItemPosition()
if (newState == RecyclerView.SCROLL_STATE_IDLE && lastPositon == mList.size - 1) {
start = start.plus(10)
mPresenter.requestData(keyWord, start)
}
}
})
2、如果对象实例是一个函数接口(Java中只有一个抽象方法的接口),可以使用lambda表达式(Java8开始支持lambda,关于Lambda可以参考该文档)来实现:
val listener = ActionListener { println("clicked") }