美文网首页
View体系与自定义View--书摘(一)

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

作者: 瑶瑶_2930 | 来源:发表于2018-05-11 17:53 被阅读0次

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

    3.1 View&ViewGroup

    3.2 坐标系

    • android坐标系
    • view坐标系
      • view获取自身的宽和高
      • view自身的坐标
      • MotionEvent提供的方法
        getX(),getY(),getRawX(),getRawY()
        - 事件类型:motionevent对象代表的动作
        按下:ACTION_DOWN,滑动:ACTION_MOVE,离开:ACTION_UP

    3.3view的滑动

    原理:

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

    方法:

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

    • layout() p.s 顺便学习下kotlin
     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()&offsetTopAndBottom()
      把ACTION.MOVE中偏移的代码换成
    offsetLeftAndRight(offsetX)
    offsetTopAndBottom(offsetY)
    
    • LayoutParams(改变布局参数)
    • Animation
      建议使用属性动画,否则动画不能改变控件的位移参数
    • scrollTo&scrollBy

    相关文章

      网友评论

          本文标题:View体系与自定义View--书摘(一)

          本文链接:https://www.haomeiwen.com/subject/bhzfdftx.html