zoukankan      html  css  js  c++  java
  • View使用总结

    1. View的基础知识

    View的位置参数 —— 相对于父容器的位置

    view在平移时,top和left表示的是原始左上角位置信息,值不会改变,

    改变的是x,y(View左上角坐标),translateX,translateY(view左上角相对于父容器的偏移量)

            x = left + translateX
            y = top + translateY

    TouchSlop —— 系统所能识别出的被认为是滑动的最小距离,通过 ViewConfiguration.get(getContext()).getScaledTouchSlop()获得

    VelocityTracker —— 速度追踪,用于追踪手指在滑动过程中的速度(手指单位时间内滑过的像素数)

    GestureDetector —— onScroll(由一个DOWN和若干MOVE组成,拖动)

                                —— onFling(由一个DOWN,若果MOVE,一个UP组成,快速滑动)

    Scroller —— 弹性滑动对象,用于实现View的弹性滑动

    调用scrollTo或scrollBy方法来进行滑动时,过程是瞬间的,

    Scroller和View的computeScroll方法配合使用,可以让View实现过渡效果的滑动

    2. View的滑动

    有三种方法实现滑动:

    (1) 通过View本身提供的ScrollTo/ScrollBy方法实现

              只能改变View中内容的位置,不能改变view在布局中的位置;

    (2)通过动画给View施加平移效果

             Android3.0以上并采用属性动画,能改变View本身的属性;

             Android3.0以下的属性动画或view动画,均不能改变View本身的属性,即点击位置还是以前的位置

             如果动画不需要响应用户的交互,那么使用动画做滑动比较合理,且可以实现复杂的效果

    (3) 通过改变View的LayoutParams使得View重新布局

              使用复杂,适用于有交互的view;


    3. 弹性滑动

    (1) 使用Scroller(工作原理:配合View的computerScroll方法完成,不断让view重绘)

    (2) 通过动画

    (3) 使用延时策略

    4. View的事件分发机制

    (1) 点击事件的传递规则

              优先级由高到低: OnTouchListener,  onTouchEvent,  OnClickListener

              onTouchEvent返回false,那么它的父容器的onTouchEvent将会被调用

    5. View的工作原理

    view的测量流程 measure

    view的布局流程 layout

    view的绘制流程 draw

    6. RemoteViews

    它在其他进程中显示,提供了一组基础的操作用于跨进程更新它的界面

    两种使用场景: 通知栏、 桌面小部件

    7.SurfaceView

    SurfaceView是用来进行游戏开发的,与一般View相比较为特殊的非常重要的类。

    在单独的线程中绘图,不用阻塞UI线程,不需等待用户输入,可以控制动画的帧率(复杂游戏用SurfaceView来开发)。

    SurfaceView提供直接访问一个可画图的界面,可以控制在界面顶部的子视图层。

    SurfaceView是提供给需要直接画像素而不是使用窗体部件的应用使用的。

    普通的view在UI线程中更新,需要用户输入的更新view可以用普通view,例如棋牌。

    8. ListView 性能优化

    可参考 http://www.cnblogs.com/itstudent/p/3729117.html

    快速滑动时卡顿的原因:

           每个子view都需要从视图层级中findeViewById;

    ListView优化大致从以下几个角度:

    (1). 复用已经生成的convertView,并设置tag;

    (2). 添加viewHolder类;

    (3). 缓存数据(图片缓存);

    (4). 分页加载。

  • 相关阅读:
    【iPhone开发】说说Xcode4中xib绑定的原理转
    转 IOS下的图片
    免证书调试Iphone程序(转)
    牛B的Python模块(转)
    6 个手机开发方面很有用的应用
    留个脚印!
    Android初学者入门PDF版
    IOS下的MVC
    android2.2源码编译-Ubuntu10.04 (X86) + android2.2 + JDK1.6
    10 款 Windows 下最佳的免费 PHP 编辑器
  • 原文地址:https://www.cnblogs.com/nicoleTeng/p/7411193.html
Copyright © 2011-2022 走看看