zoukankan      html  css  js  c++  java
  • seekbar的尺寸定义精要

    seekbar背景的定制是一件麻烦的事情,而且最好是用shapedrawable去定制(这样可以任意拉伸),如果直接用图片,则注意的事项就会很多了,否则一般情况下总会有各种不如意。最近做UI遇到了seekbar必须用到图片去填充的情况,定义尺寸的时候费了很多劲。效果如下图:

    明显是一个背景图和thumb,没有progress,而且配上屏幕适配 的问题,费了很大劲。

    顺便提及,其实很多情况下,例如button、seekbar、imagebutton、imageview等等wrap_content设置background的时候,图像出现意外拉伸或缩小,其实是由于图像在drawable的目录不对引起的(而不是设置minheight和minwidth的问题,设置这个确实能解决问题,但是图像可能会因为拉伸变得模糊,因为并不是这个引起的,根本原因要清楚),笔者此项目是在屏幕密度为160dpi的车机上运行的,对应的drawable应放置在mdpi的文件夹下,一开始时候我是放在hdpi(240dpi)文件夹下的,背景显示在车机上,总会缩小1/3,因为android加载图片时候,已经根据目录帮你算好了在屏幕上应该显示多少dp,例如在hpi文件夹下的100px的图片,android会认为你是在240dpi的屏幕上运行,要显示出100px,应该是66.7dp的长度,这时你如果在160dpi的设备商运行,显示效果还是66.7dp的效果,即66.7px

    我最终的布局参数是:

    <SeekBar 
                    android:id="@+id/splash"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:minHeight="145dp"
                    android:maxHeight="145dp"
                    android:maxWidth="482dp"
                    android:minWidth="482dp"
                    android:progressDrawable="@drawable/radio_dash"
                    android:thumb="@drawable/radio_dash_drag"
                    android:progress="20"
                    android:max="100"
                    android:paddingLeft="1dp"
                    android:paddingRight="1dp"
                    android:thumbOffset="1dp"
                    />

    其中,minwidth和minheight等四个属性只对progressDrawable里边的内容有效,我们可以用这四个属性固定住背景和进度条,layout_width和height如果也设置为固定值,则如果滑块比背景大,多余的部分就不会显示。而thumboffset是滑块相对于背景的起始部分,设置为0则滑块的左边缘会与背景的左边缘对齐,设置为正值则会expand背景,这时需要设置padding让expand出背景的滑块显示出来,达到滑块的中心跟背景的起点对齐的效果。

          综上所述,就是利用minwidth和minheight来固定progressDrawable,用thumboffset和padding来设置滑块,效果美美哒喵

  • 相关阅读:
    Python入门基础知识点(基础数据类型之字典)
    Python入门基础知识点(基础数据类型之二)
    Python入门基础知识点(基础数据类型)
    Python入门基础知识点(循环语句和编码)
    Python入门基础知识点(基础语法介绍)
    接口继承
    类的继承
    类的组合
    静态属性、类方法、静态方法
    类与对象属性的操作
  • 原文地址:https://www.cnblogs.com/gangmiangongjue/p/4631100.html
Copyright © 2011-2022 走看看