Android RecyclerView GestureDetector SimpleOnGestureListener,kotlin

Android RecyclerView GestureDetector SimpleOnGestureListener,kotlin

 

import android.graphics.Color
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.util.Log
import android.view.GestureDetector
import android.view.GestureDetector.SimpleOnGestureListener
import android.view.Gravity
import android.view.LayoutInflater
import android.view.MotionEvent
import android.view.View
import android.view.View.OnTouchListener
import android.view.ViewGroup
import android.widget.TextView
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView


class MainActivity : AppCompatActivity() {
    val TAG = "fly"

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        val recyclerView = findViewById<RecyclerView>(R.id.recycler_view)
        val linearLayoutManager = LinearLayoutManager(this)
        linearLayoutManager.orientation = LinearLayoutManager.HORIZONTAL
        recyclerView.layoutManager = linearLayoutManager
        val adapter = MyAdapter()
        recyclerView.adapter = adapter

        val gestureDetector = GestureDetector(this, object : SimpleOnGestureListener() {
            override fun onFling(
                e1: MotionEvent,
                e2: MotionEvent,
                velocityX: Float,
                velocityY: Float
            ): Boolean {
                Log.d(TAG, "${velocityX} ${velocityY}")

                return super.onFling(e1, e2, velocityX, velocityY)
            }
        })

        recyclerView.setOnTouchListener(object : OnTouchListener {
            override fun onTouch(v: View?, event: MotionEvent?): Boolean {
                return gestureDetector.onTouchEvent(event!!)
            }
        })
    }
}

class MyAdapter : RecyclerView.Adapter<MyVH>() {
    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MyVH {
        val view = LayoutInflater.from(parent.context)
            .inflate(android.R.layout.simple_list_item_1, null, false)
        val holder = MyVH(view)
        return holder
    }

    override fun onBindViewHolder(holder: MyVH, position: Int) {
        holder.text?.text = position.toString()
        if (position % 2 == 0) {
            holder.text?.setBackgroundColor(Color.LTGRAY)
        } else {
            holder.text?.setBackgroundColor(Color.WHITE)
        }
    }

    override fun getItemCount(): Int {
        return Int.MAX_VALUE
    }
}

class MyVH(itemView: View) : RecyclerView.ViewHolder(itemView) {
    var text: TextView? = null

    init {
        text = itemView.findViewById(android.R.id.text1)
        text?.height = 2000
        text?.width = 1000
        text?.gravity = Gravity.CENTER
    }
}

 

 

Android RecyclerView单击、长按事件标准实现:基于OnItemTouchListener + GestureDetector_zhangphil的博客-CSDN博客Android RecyclerView单击、长按事件:基于OnItemTouchListener + GestureDetector标准实现Android RecyclerView虽然拥有ListView绝大多数的功能,但Android RecyclerView却没有实现像ListView那样的点击事件、长按事件的标准实现方式,我在附录文章1中介绍的方式,实现了典型的RecyclerViewhttps://blog.csdn.net/zhangphil/article/details/53230157

Android RecyclerView单击、长按事件:基于OnItemTouchListener +GestureDetector标准实现(二),封装抽取成通用工具类_zhangphil的博客-CSDN博客Android RecyclerView单击、长按事件:基于OnItemTouchListener +GestureDetector标准实现(二),封装抽取成通用工具类我写的附录文章2,介绍了Android如何基于OnItemTouchListener +GestureDetector实现单击、长按事件的监听,由于如今RecyclerView在Android开发是如此的普遍,以及Recyclehttps://blog.csdn.net/zhangphil/article/details/53231344

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值