View绘制之ScrollBar绘制
对View设置rightPadding后,发现ScrollBar绘制的位置发生了变化。为知其缘由,需要来看看View的绘制。
View绘制的是从draw(Canvas canvas)开始的,在此方法中View进行了6部分的绘制操作。其中ScrollBar的绘制是在onDrawForeground中发生的。
因为View设置的是绘制竖直方向的滚动条,所以需要分析下面的逻辑
其中computeVerticalScrollRange,computeVerticalScrollOffset,computeVerticalScrollExtent方法决定了ScrollBar是否显示,ScrollBar的大小。当需要自己控制ScrollBar绘制时,这三个方法是有必要重写的。
当ScrollBar的大小确定后,ScrollBar在View中的位置是由getVerticalScrollBarBounds的来实现的,并通过getStraightVerticalScrollBarBounds来实现的最后的定位。
在对ScrollBar的位置定位时,可以看见left的坐标点中会减去(mUserPaddingRight & inside)的值。mUserPaddingRight的值正是View的paddingRight。而inside的是通过ScrollBarStyle来实现的。在Java中可以通过setScrollBarStyle来设置,xml文件中通过scrollbarStyle标签来自定义。
scrollbarStyle的值有SCROLLBARS_INSIDE_OVERLAY,SCROLLBARS_INSIDE_INSET,SCROLLBARS_OUTSIDE_OVERLAY,SCROLLBARS_OUTSIDE_INSET四种取值。对于这四种值的说明百度有很多说明,这里不再展开。
View绘制之ScrollBar绘制相关推荐
- 【Android自定义View】Bitmap的绘制和颜色滤镜
前言 Bitmap在开发中是经常遇到的,因为他用到的地方有很多,比如Android的图片预览,自定义相机,自定义美颜相机,图片滤镜,图像算法....,既然使用场景这么多,今天就先讲一下Android中 ...
- 【5年Android从零复盘系列之十七】Android自定义View(12):手势绘制及GestureOverlayView事件详解(图文)
[5年Android从零复盘系列之十七]Android自定义View(12):手势绘制及GestureOverlayView事件浅析 1.基础 掌握View体系事件分发与处理,参考Android自定义 ...
- 自定义View之——风车的绘制
由于本人使用的华为手机,真是被华为天气的界面圈粉,之前有仿写了其中一个自定义的view,今天带来另一个自定义view,就是其中的风车,先上图 相信大家在其它很多天气软件就看到过. 一.概述 在图中,风 ...
- 【opencv图像处理】--2. 颜色空间,绘制图形,绘制(中文)文本
"人群里敞着一扇门" 1. 颜色空间的基础知识 1.1 色彩空间转换 2. mat数据结构的深浅拷贝 ndarray的常见属性 3.颜色通道的分离和合并 4. 绘制图形 5. 绘制 ...
- 【OpenGL】十一、OpenGL 绘制多个点 ( 绘制单个点 | 绘制多个点 )
文章目录 一.绘制单个点 二.绘制多个点 三.相关资源 在上一篇博客 [OpenGL]十.OpenGL 绘制点 ( 初始化 OpenGL 矩阵 | 设置投影矩阵 | 设置模型视图矩阵 | 绘制点 | ...
- html5 绘制图形,HTML5绘制几何图形
绘制几何图形 var canvas = document.getElementById("myCanvas"); var ctx = canvas.getContext(" ...
- OPenGL实例化绘制、普通绘制说明
OpenGL 实例化(Instancing)是一种只调用一次渲染函数就能绘制出不少物体的技术,能够实现将数据一次性而不是多次发送给 GPU ,告诉 OpenGL使用一个绘制函数,将这些数据绘制成多个物 ...
- python turtle绘制柱状图_python绘制图形(Turtle模块)
用python的Turtle模块可以绘制很多精美的图形,下面简单介绍一下使用方法. 需要用到的工具有python,python 的安装这里就不再细说.自行搜索. from turtle import ...
- ue4 unreal4 自定义网格 绘制自定义网格 绘制面 (Plus)
额四月份写了 CustomMeshComponent 用于创建自定义网格 ue4 unreal4 自定义网格 绘制自定义网格 绘制面_ljason1993的博客-CSDN博客 当时想着找时间写个 Pr ...
最新文章
- mssql 插入数据缓慢_SQLPro Studio for Mac(数据库管理器)
- Redis可视化工具 Redis Desktop Manager
- 减少静态链接库的体积
- mysql 读取comment_Mysql 获取表的comment 字段
- CH 5102Mobile Service题解
- Linux 基础——权限管理命令chown、chgrp
- 抓包神器之Charles,常用功能都在这里了
- LINUX使用sig文件验证文件的签名
- request.form 和 Request.QueryString 区别
- GRE 9月15日机经
- 移动端自动化测试:python+appium+pytest+allure+yaml
- 高等数学 —— 二元函数极值存在定理与拉格朗日乘数法求最值
- 微信小程序登录界面 服务器,微信小程序之登录页-------实例
- MongoDB实验——数据库基本操作(头歌)
- ico图标制作的在线工具
- 解决ROS编译时opml库找不到
- 「兔了个兔」龟兔赛跑——乌龟和兔子能否相遇?
- 湖南省中职学业水平考试复习试题(数学)
- c++ emplace_back和push_back的异同
- Using the Iframe to implement the Ajax
热门文章
- Mybatis笔记一
- C语言float变量精度,float部类的精度究竟是多少
- 无法播放 请确保您计算机的,解决win10 groove无法播放并提示“0x8007007e”的方法...
- fingerGgesture
- Java jre的安装与卸载
- php获取谷歌地图gps定位,谷歌地图 API 开发之获取当前坐标(经纬度)
- 豆瓣相册下载助手,在这里记录分享一下
- SQL语法之SQL 通配符
- 超级思维:高效解决问题的 20 个思维模型
- FL Studio 中的 Fruity Compressor 效果器功能介绍