View体系与自定义View--书摘(一)

2018-05-11  本文已影响0人  瑶瑶_2930

最近在看刘望舒的《android进阶之光》,顺便对书中内容做一些笔记和补充

3.1 View&ViewGroup

3.2 坐标系

3.3view的滑动

原理:

记录触摸点以及移动点的坐标并算出偏移量

方法:

layout(),offsetLeftAndRight(),offsetTopAndBottom(),LayoutParams(),动画,scrollTo与scrollBy

 class CustomView : View {
            private var lastX: Int = 0
            private var lastY: Int = 0


            constructor(context: Context) : super(context) {}

            constructor(context: Context, attrs: AttributeSet?) : super(context, attrs) {}

            constructor(context: Context, attrs: AttributeSet?, defStyleAttr: Int) : super(context, attrs, defStyleAttr) {}
//一定要重写view的三个构造函数


            override fun onTouchEvent(event: MotionEvent): Boolean {
                val x = event.x.toInt()
                val y = event.y.toInt()

                when (event.action) {
                    MotionEvent.ACTION_DOWN -> {
                        lastX = x
                        lastY = y
                    }
                    MotionEvent.ACTION_MOVE -> {
                        val offsetX = x - lastX
                        val offsetY = y - lastY

                        layout(left + offsetX, top + offsetY, right + offsetX, bottom + offsetY)
                    }
                }
                return true
            }
        }
offsetLeftAndRight(offsetX)
offsetTopAndBottom(offsetY)
上一篇下一篇

猜你喜欢

热点阅读