Android基础知识梳理之View相关知识一

来源:互联网 发布:godaddy域名别名解析 编辑:程序博客网 时间:2024/06/05 18:18

     listiew使用技巧:

            使用viewholder 减少创建view。

             当convertview 为空时才创建view.

             使用notifidatasetchanged来刷新view

              处理空的listiew

              多布局的listview 通过getitemtype方法。

             群英传中还提到的技巧有:

             设置分割线、隐藏滚动条、取消点击效果、设置显示在第几项、遍历listview的item、动态修改listview的item、滑动监听。、

             弹性listview 重写 overScrollBy方法。

     

      其他:

       注:一般使用recycleview替代listiew。 recycleview性能更好。自动复用。



        android 滑动分析

       5.x :android 坐标系: 左上角计数:getLocationOnScreen(int location[]) getRawX() getRawy()

       5.x.2  :视图坐标系 父布局左上角:getX        gety 方法

      5.x.3     :MotionEvent类  先处理 actionDown事件。

       5.2 滑动的七种实现:

      layout()

     offSetTopAndBottom() 和 offsetLeftAndRight()

     LayoutParams()

     scrollTo  scrollBy

     scroller类

      属性动画


      ViewDragHelper 这个类 没见过:


         


      android 绘制机制和处理技巧

       掌握 dip dp px sp dpi 及转换

       Paint类 和 Canvas类

       six.3 xml绘图

      bitmap引入

       Shape :

       <shape

           xmls:android=http://schemas.android.com/apk/res/android

          android shape = ["rectangle"|"oval"|"line"|"ring"]>

         <corers //这个最多的用途时设置圆角。

                 android radius=""

                android: LeftRadius="5dp"/>

          <gradient/>

          <padding/>

         <size/>

           <solid/> 填充

           <stroke/> 边框

</shape>

 Layer 图层

 <layer-list

 xmls:android="https//..."

 <item

 android:drawable ="@drawable/ic_launch"/>

<item/>

</layer-list>


     selector




six.4:android 绘图技巧

Canvas 重要方法:

save()

restore()

translate()

rotate()

saveLayer() 和saveLayerAlpha()



six5 Android图像图例色彩特效处理: 没用到过:略

six。six Android图像处理之图形特效处理: 没用到过 :略

six。seven Android图像处理之画笔特效:

PorterDuffXfermode 用于简单的圆角等。

效果图

用法

mPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN));


Shaper 没用过 略

PathEffect  没用过 略


six.8

SurfaceView
:待研究,另起一个章节来研究 和textureView一起。



seven Android 动画机制和使用技巧

7.1 Android View 动画框架

实现原理:在ViewGroup的drawChild方法中,获取该View的Animaiton的Transformation值,然后调用canvas.concat(transformToApply.getMatrix);方法调用矩阵运算完成动画帧。如果动画没有完成,继续调用invalidate()方法完成绘制。

主要有 透明度动画,旋转变化,伸缩变化和平移变化。效率高,简单。

AlphaAnimation 、RotateAnimation、TranslateAnimation、ScaleAnimation。

使用 AnimaitonSet 来统一管理,可以实现动画的集合效果。

7.2 属性动画

Animator框架

7.21. ObjectAnimator animator = ObjectAnimator.OfFloat(view,"traslationX",300);animator.setDuration(300);animator.star();

7.2.2 PropertyValuesHolder

7.2.3 ValueAnimator

7.2.4 动画监听

7.2.5 AnimatorSet

7.2.6 xml中使用属性动画

7.2.7animate 方法: view.animate().alpha(0).y(300).setDuration(300).withStartAction(new Runnable()).withEndAction(new Runnable)


7.3 Android 布局动画

ScaleAnimation sa = new ScaleAnimation(0,1,0,1);

sa.setDuration(2000);

LayoutAnimationController lac = new LayoutAnimationController(sa,0.5F);

lac.setOrder(LayoutAnimation.ORDER_NORMAL);

layout.setLayoutAnimaiton(lac);


7.4 插值器 Interpolators

7.5 自定义动画:重写:applyTransformation (float interpolatedTime,Transformation t);

7.6 svg动画 暂时没用过 略






0 0