美文网首页
自定义控价的认识

自定义控价的认识

作者: 甜甜圈李 | 来源:发表于2020-06-02 23:53 被阅读0次

    自定义控件

    Android自身带的控件不能满足需求, 需要根据自己的需求定义控件.

    自定义控件可以分为三大类型

    1. 组合已有的控件实现

    - 优酷菜单

    1. 在xml布局里摆放好

    2. 给指定控件添加点击事件.

    3. 根据业务逻辑,执行动画(旋转动画: 补间动画).

    4. 菜单按钮的截获.

    轮播图广告

    1. 让图片滑动起来(ViewPager)

    2. 让图片和文字,指示器对应起来

    3. 让轮播器无限循环

    4. 轮播器自动轮询

    下拉选择框

    1. ListView初始化

    2. PopupWindow初始化

    2. 完全自定义控件.(继承View, ViewGroup)

    1. 自定义开关  (View)

    1. 写个类继承View

    2. 拷贝包含包名的全路径到xml中

    3. 界面中找到该控件, 设置初始信息

    4. 根据需求绘制界面内容

    5. 响应用户的触摸事件

    6. 创建一个状态更新监听

    7. 自定义属性

    2. 侧滑面板(ViewGroup)

    1. 在xml布局里摆放内容. include

    2. 在自定义ViewGroup里, 进行measure测量, layout布局

    3. 响应用户的触摸事件

    4. int scrollX = (int) (downX - moveX);

    5. getScrollX()获取当前滚动到的位置

    6. 平滑动画

    1. 开始模拟数据

    scroller.startScroll(startX, 0, dx, 0, duration);

    invalidate();// 重绘界面 -> drawChild() -> computeScroll();

    2. 在computeScroll中不断获取模拟的数值

    @Override

    public void computeScroll() {

    super.computeScroll();

    if(scroller.computeScrollOffset()){

    true, 动画还没有结束

    获取当前模拟的数据, 也就是要滚动到的位置

    int currX = scroller.getCurrX();

    scrollTo(currX, 0); // 滚过去

    invalidate(); // 重绘界面

    }

    }

    3. 继承已有的控件实现(扩展已有的功能)

    1. 包含下拉刷新功能的ListView

    1. 添加了自定义的头布局

    2. 默认让头布局隐藏setPadding.设置 -自身的高度

    3. ListView下拉的时候, 修改paddingTop, 让头布局显示出来

    4. 触摸动态修改头布局, 根据paddingTop. 

    paddingTop = 0 完全显示

    paddingTop < 不完全显示 -64(自身高度)完全隐藏

    paddingTop > 0 顶部空白

    5. 松手之后根据当前的paddingTop决定是否执行刷新

    paddingTop < 0 不完全显示, 恢复

    paddingTop >= 0 完全显示, 执行正在刷新...

    相关文章

      网友评论

          本文标题:自定义控价的认识

          本文链接:https://www.haomeiwen.com/subject/jbmmzhtx.html