自定义view日常笔记1

1. getmeasureHeight()//测量控件所占用的高度   getHeight()//测量控件所在屏幕之内占用的高度      !当控件能被屏幕所包裹的时候他两的值是一样的             offsetLeftAndRight自定义view移动

2.scrollTo()与scrillBy 前者是绝对坐标的移动,后者是相对坐标的移动,而不是控件的滚动

3.scroller 与overScroller 后者出现的晚,优化了滑动到边界的处理,都可以实现控件的滚动效果

4.当需要一个自定义一个本身不具有滑动效果的view,调用scroller.startScroll() 并且实现view本身的computeScroll方法

Scroller.startScroll(int startX, int startY, int dx, int dy)

  1. @Override  
  2.     public void computeScroll() {  
  3.   
  4.         // 先判断mScroller滚动是否完成  
  5.         if (mScroller.computeScrollOffset()) {  
  6.             // 这里调用View的scrollTo()完成实际的滚动  
  7.             scrollTo( mScroller.getCurrX(), mScroller .getCurrY());  
  8.             // 必须调用该方法,否则不一定能看到滚动效果  
  9.             invalidate();  
  10.         }  
  11.         super.computeScroll();  
  12.     } 
常用的api有computerScrollOffset判断滚动动作是否完成,通常用在computeScroll中来判断
getCurrX获得当前滑动的坐标值
getFinalX获取滑动的停止时的坐标值
ifFinish当前的滚动是否结束
startScroll开始滚动 同时会触发computeScroll回调 startX startY 开始的坐标值,正数左上负数右下
当获取getCurrX时的值就与此参数设置有关
fling 触发滑动,并且可以实现根据移动速度来慢慢减速,参数中的速度参数可以根据VelocityTracker这个类来获取

自定义view事件

onFinishInflate() 当View中所有的子控件均被映射成xml后触发

onMeasure(int, int) 确定所有子元素的大小

onLayout(boolean, int, int, int, int) 当View分配所有的子元素的大小和位置时触发

onSizeChanged(int, int, int, int) 当view的大小发生变化时触发

onDraw(Canvas) view渲染内容的细节

onKeyDown(int, KeyEvent) 有按键按下后触发

onKeyUp(int, KeyEvent) 有按键按下后弹起时触发

onTrackballEvent(MotionEvent) 轨迹球事件

onTouchEvent(MotionEvent) 触屏事件

onFocusChanged(boolean, int, Rect) 当View获取或失去焦点时触发 

onWindowFocusChanged(boolean) 当窗口包含的view获取或失去焦点时触发

onAttachedToWindow() 当view被附着到一个窗口时触发

onDetachedFromWindow() 当view离开附着的窗口时触发,该方法和  onAttachedToWindow() 是相反。

onWindowVisibilityChanged(int) 当窗口中包含的可见的view发生变化时触发


5.VelocityTracker 初始化VelocityTracker.obtain来初始化,通常在onTouchEvent中使用,
主要用于跟踪触屏事件(flinging事件和gestures事件)的速率,用addMoveMent(MotionEvent)函数把
MotionEvent加入到VelocityTarcker实例中,可以用getXVeloCity与getYVelocity来获取横竖向速率,使用它们之前调用
computeCurrentVelocity(int)来初始化速率
6.ViewConfiguration 是系统中关于视图的各种特性的常量记录对象。其中包含各种基础数据 ***重点
ViewConfiguration.getScaledTouchSlop用于区分用户拖拽的距离
ViewConfiguration.getScaledMaximumFlingVelocity 获取最大加速度
ViewConfiguration.getScaledMinimumFlingVelgcity获取最小加速度

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值