自定义View总结2

自定义控件:
1.组合控件:将系统原生控件组合起来,加上动画效果,形成一种特殊的UI效果
2.纯粹自定义控件:继承自系统的View,自己去实现view效果

优酷菜单:
1.系统原生的旋转和位置动画并没有真正改变view的位置

轮播大图:
ViewPager:3.0之后才出现的,之前版本使用v4包里面的

关联jar包的源代码:
1.先点击Android Dependencies,将它从BuildPath remove掉,
  再右键点击jar包,将jar add to BuildPath;
  然后就出现Attatch Source按钮了
2.在libs目录下新建一个文件,文件名是jar包全名(包括后缀.jar),然后
  该文件名以.properties结尾,新建一行键值对如:
  src=jar源代码绝对路径,(不要忘了将单斜线变成双斜线)

ViewPager预加载机制:最多保存3个page,超过的将需要被销毁掉

异常:类明明存在,却报class not found异常解决方法
      右键工程,打开bulid path面板,选择Order And Export,
      将对应jar打钩

最大是4;
4  ->  4
5  ->  0
6  ->  1
7  ->  2
8  ->  3

下拉选择:
1.假如listview的item中有Button,ImageButton,CheckBox等会强制获取焦点的view
此时,listview的item无法获取焦点,从而无法被点击
解决方法:给item的根布局增加以下属性
android:descendantFocusability=”blocksDescendants”
设置之后,Button获取焦点,item中其他控件也可以获取焦点

滑动开关——–
自定义控件步骤:
测量:onMeasure 设置自己显示在屏幕上的宽高
布局:onLayout 设置自己显示在屏幕上的位置(只有在自定义ViewGroup中才用到)
绘制:onDraw 控制显示在屏幕上的样子(自定义viewgroup时不需要这个)

View和ViewGroup的区别
1.他们都需要进行测量操作
2.ViewGroup主要是控制子view如何摆放,所以必须实现onLayout
View没有子view,所以不需要onLayout方法,但是必须实现onDraw

UI特效大全网站:http://www.23code.com/

最美锁屏

下拉刷新——-
1.addHeaderView必须在setAdapter之前调用
2.将paddingTop设置一个headerView高度的负值去隐藏它

getHeight()和getMeasuredHeight()的区别:
getMeasuredHeight():获取测量完的高度,只要在onMeasure方法执行完,就可以用
                    它获取到宽高,在自定义控件内部多使用这个
                    使用view.measure(0,0)方法可以主动通知系统去测量,然后就
                    可以直接使用它获取宽高
getHeight():必须在onLayout方法执行完后,才能获得宽高
            view.getViewTreeObserver().addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
                @Override
                public void onGlobalLayout() {
                headerView.getViewTreeObserver().removeGlobalOnLayoutListener(this);
                int headerViewHeight = headerView.getHeight();
                //直接可以获取宽高
        }
    });
3.setSelection(position);将对应位置的item放置到屏幕顶端

侧滑菜单—
github-SlidingMenu
1.在ViewGroup中,让自己内容移动有以下几个方法:
layout(l,t,r,b);
offsetTopAndBottom(offset)和offsetLeftAndRight(offset);
scrollTo和scrollBy方法;
注意:滚动的并不是viewgroup内容本身,而是它的矩形边框
它是瞬间移动,

2.在自定义ViewGroup中一般不需要去实现onMeasure,
  我们去实现系统已有的ViewGroup,比如FrameLayout,
  它会帮我们区实现onMeasure方法


3.让view在一段时间内移动到某个位置
 a.使用自定义动画(让view在一段时间内做某件事)

 b.使用Scroller(模拟一个执行流程,)
原文地址:https://www.cnblogs.com/muyuge/p/6152152.html