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"
                />

其中,min和max两个参数决定组件的最终长宽,layout_width和height如果也设置为固定值,则如果滑块比背景大,多余的部分就不会显示。thumboffset是滑块相对于背景的起始部分,设置为0则滑块的左边缘会与背景的左边缘对齐,设置为正值则会expand背景,这时需要设置padding让expand出背景的滑块显示出来,达到滑块的中心跟背景的起点对齐的效果。

终于写完了...看客诸君看懂了吗?有更好的见解欢迎一起分享。

时间: 2024-11-04 03:51:17

seekbar的尺寸定义精要的相关文章

android自己定义进度值可拖动的seekbar

近期忙找实习,加上实验室在推新项目,须要学习新知识.所以非常长一段时间没去整理了官博客了,github也蛮久没更新.非常羞愧.接下来还是要坚持写. 今天就简单的写一下我在项目中用到的算自己定义seekbar的博客,需求是这种.seekbar须要显示最左和最右值.进度要尾随进度块移动. 看下效果图就明确了. 事实上实现起来非常easy,主要是思路. 自己定义控件的话也不难,之前我的博客也有专门介绍,这里就不再多说. 实现方案 这里是通过继承seekbar来自己定义控件,这种方式最快.主要难点在于进

Android中用seekbar控件控制歌曲的进度

本人菜鸟一枚,在编写android中用seekbar控件控制歌曲的进度和seekbar随着歌曲的播放自动运动的程序有一些自己的见解,希望各位大牛们多多指点······ 废话先不多说了,先贴一张程序的图吧: 界面不怎么好看,没经过美化,大家将就这看一下吧. 主要思路是运用线程每隔一秒显示一下seekbar控件所在的位置,(这个是使进度条随着歌曲的进度而不断的变化,如果大家想使进度条增加的更连续,可以改变程序循环运行的时间,使其更快) 我只把关于seekbar的程度拿出来了: private int

dpi 、 dip 、分辨率、屏幕尺寸、px、density 关系以及换算

一.基本概念 dip        : Density independent pixels ,设备无关像素. dp        :就是dip px        : 像素 dpi       :dots per inch , 直接来说就是一英寸多少个像素点.常见取值 120,160,240.我一般称作像素密度,简称密度 density : 直接翻译的话貌似叫 密度.常见取值 1.5 , 1.0 .和标准dpi的比例(160px/inc) 分辨率   : 横纵2个方向的像素点的数量,常见取值

从零开始学android&lt;SeekBar滑动组件.二十二.&gt;

拖动条可以由用户自己进行手工的调节,例如:当用户需要调整播放器音量或者是电影的播放进度时都会使用到拖动条,SeekBar类的定义结构如下所示: java.lang.Object ? android.view.View ? android.widget.ProgressBar ? android.widget.AbsSeekBar ? android.widget.SeekBar 常用方法 public SeekBar(Context context) 构造 创建SeekBar类的对象 publi

《31天成为IT服务达人》之精准运维

 1       第十四章精准运维服务 近年来国内IT产业的发展格局始终与我国的经济转型与创新创业的社会大潮息息相关,纵观国内国际形势,IT产业仍是创新的领头者,是解决人类各种经济危机的主要扮演者,是新经济的重要支柱.IT服务行业作为IT产业的一个关键领域经历了为设备服务.为系统服务和为人服务三个重要的发展阶段.精准运维是在以人为本的基础上,为满足服务对象的业务变化而产生的IT服务新模式,其深刻体现IT服务价值始终以业务需求为导向的理念,是精益管理在IT行业的有效应用. 14.1精准运维的由

从零開始学android&amp;lt;SeekBar滑动组件.二十二.&amp;gt;

拖动条能够由用户自己进行手工的调节,比如:当用户须要调整播放器音量或者是电影的播放进度时都会使用到拖动条,SeekBar类的定义结构例如以下所看到的: java.lang.Object ? android.view.View ? android.widget.ProgressBar ? android.widget.AbsSeekBar ? android.widget.SeekBar 经常用法 public SeekBar(Context context) 构造 创建SeekBar类的对象 p

Android之SeekBar总结(一)

2015-04-24 SeekBar: 一种特殊的进度条,包含一个滑块用于调节进度值. API 中目录结构如下: 包含几种特殊的属性: 1: max:设置进度条的最大值 .对应方法:setMax(int max); max=100,代表它的取值范围是0-100,共101个值; 2: progress: 设置默认的进度值 对应有方法: setProgress(int progress); 3:secondaryProgresss : 设置默认缓冲值 对应的方法 setSecondaryProgre

一个简单SeekBar样式的例子

SeekBar在布局中的使用: <SeekBar android:layout_width="300px" android:layout_height="wrap_content" android:minHeight="10px"<!--定义进度条的高,不包括thumb的高--> android:maxHeight="10px"<!--定义进度条的高,不包括thumb的高--> android:t

Android 主题资源风格定制 &lt;1&gt;

无论是定制系统还是自行开发APP的UI,其无论是使用标准UI还是自定义UI,最终都是需要自己熟悉主题风格的各种属性设置,不过属性非常的多,如果需要知道某个UI可以临时查看一下SDK的  D:\liuzhibao\Android\sdk\platforms\android-N\data\res路径下的,但是这个是纯粹的资源文件,没有java文件,所以还是推荐repo下来framework/base代码. 下面先看看自定义View如何添加属性之类的: 新建一个PumpKinCustomeView