zoukankan      html  css  js  c++  java
  • 自定义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(模拟一个执行流程,)
    
  • 相关阅读:
    绝对布局absoluteLayout
    表格布局tabelLayout
    DP问题如何确定状态
    秒杀多线程第四篇 一个经典的多线程同步问题
    循环队列
    【Unity3d】【项目学习心得】从资源server下载资源(一)
    矩阵经典题目六:poj 3070 Fibonacci
    Mean Shift具体介绍
    Android ViewPager使用具体解释
    Android中ExpandableListView控件基本使用
  • 原文地址:https://www.cnblogs.com/muyuge/p/6152152.html
Copyright © 2011-2022 走看看