一种安卓设备及其收音机电台刻度控件
技术领域
本发明涉及安卓设备的收音机程序领域,尤其涉及的是一种刻度位置不会因屏幕分辨率不同而出现偏差的电台刻度控件。
背景技术
因为目前安卓(Android)设备屏幕的分辨率种类较多,所以在软件开发的时候稍不注意进行屏幕适配的话就会出现很多问题。比如图片在高分辨率和低分辨率下的显示问题,以收音机程序为例,其电台刻度控件在高分辨率下显示低分辨率图片时,就会出现显示质量下降以至于对不准的现象,在不同的分辨率下显示不同的图片,容易出现一个分辨率下的电台刻度控件能与刻度值一一对应,而在另一个分辨率下电台刻度控件与刻度值就会出现偏差。
因此,现有技术尚有待改进和发展。
发明内容
为解决上述技术问题,本发明提供一种收音机电台刻度控件,可在不同分辨率下保证电台刻度控件都与刻度值一一对应。
同时,本发明还提供一种安卓设备,其所用收音机电台刻度控件可不受屏幕分辨率的影响。
本发明的技术方案如下:一种收音机电台刻度控件,包括mScaleIm刻度尺子控件和mPointerIm刻度指针子控件,mScaleIm刻度尺子控件水平设置,mPointerIm刻度指针子控件垂直设置,通过公式一将刻度值转换成控件位置:
公式一:mScaleMarginLeft = (MIDDLE_FREQUENCY - mDragFrequency) *mPxPreFreq + mMiddleMargin,其中,mDragFrequency表示要转换的刻度值,mScaleMarginLeft表示刻度值mDragFrequency所在的控件位置,MIDDLE_FREQUENCY表示中间刻度值,mPxPreFreq表示最小刻度值0.1所占的像素值,mMiddleMargin表示刻度值为中间刻度值时所在的控件位置。
所述的收音机电台刻度控件,通过公式二将控件位置转换成刻度值:
公式二:mDragFrequency = MIDDLE_FREQUENCY - (margin - mMiddleMargin) /mPxPreFreq,其中,mDragFrequency表示要转换的刻度值,MIDDLE_FREQUENCY表示中间刻度值,margin表示控件位置,mPxPreFreq表示最小刻度值0.1所占的像素值,mMiddleMargin表示刻度值为中间刻度值时所在的控件位置。
所述的收音机电台刻度控件,在不同的分辨率下获取与mScaleIm刻度尺子控件相对应的图片的长度。
所述的收音机电台刻度控件,所述图片的长度与最小刻度值0.1所占像素值mPxPreFreq的比值为恒定值。
所述的收音机电台刻度控件,自定义FmScaleView父控件继承自FrameLayout,所述mScaleIm刻度尺子控件和所述mPointerIm刻度指针子控件包括在FmScaleView父控件中,FmScaleView父控件还包括mMaskIm刻度遮罩层子控件,mMaskIm刻度遮罩层子控件以中间为起点,随着向左右延伸距离的增加,其透明度逐渐减少。
所述的收音机电台刻度控件,所述mScaleIm刻度尺子控件、mMaskIm刻度遮罩层子控件和mPointerIm刻度指针子控件的类型均为ImageView,以各自对应的图片作为资源,使其自适应。
所述的收音机电台刻度控件,三个子控件的图层顺序从底到上依次为mScaleIm刻度尺子控件、mMaskIm刻度遮罩层子控件和mPointerIm刻度指针子控件。
所述的收音机电台刻度控件,所述mMaskIm刻度遮罩层子控件和mPointerIm刻度指针子控件在父控件FmScaleView的位置不随着刻度值的变化而变化,而mScaleIm刻度尺子控件在父控件FmScaleView的位置随着刻度值的变化而变化。
一种安卓设备,其应用程序中包括收音机程序,收音机程序中设置有电台刻度控件,所述电台刻度控件为上述中任一项所述的收音机电台刻度控件。
所述的安卓设备,在触摸屏幕滑动调节刻度时,快速滑动使mScaleIm刻度尺子控件做减速运动并继续滑动一段距离后停下。
本发明所提供的一种安卓设备及其收音机电台刻度控件,由于采用了最小刻度值0.1所占的像素值,通过中间刻度值及其控件所在的位置进行换算,在不同分辨率下获取对应的图片长度和屏幕宽度,进而获得指定刻度值的控件位置。
附图说明
图1是本发明收音机电台刻度控件的示意图。
具体实施方式
以下将结合附图,对本发明的具体实施方式和实施例加以详细说明,所描述的具体实施例仅用以解释本发明,并非用于限定本发明的具体实施方式。
自定义FmScaleView父控件继承自FrameLayout,FmScaleView父控件含有三个子控件分别为mPointerIm(刻度指针)、mMaskIm(刻度遮罩层)和mScaleIm(刻度尺),这三个子控件的类型都为ImageView,各自以对应的图片作为资源,使其自适应。
如图1所示,图1是本发明收音机电台刻度控件的示意图,三个子控件的图层顺序从底到上依次为mScaleIm刻度尺子控件110、mMaskIm刻度遮罩层子控件120和mPointerIm刻度指针子控件130;其中,mMaskIm刻度遮罩层子控件120和mPointerIm刻度指针子控件130在FmScaleView父控件的位置不会随着刻度值的变化而变化,而mScaleIm刻度尺子控件110在FmScaleView父控件的位置会随着刻度值的变化而变化;因此电台刻度控件在不同分辨率下与刻度值一一对应的关键在于,mScaleIm刻度尺子控件110的位置与刻度值的对应关系。
公式一、刻度值转换成控件位置:mScaleMarginLeft = (MIDDLE_FREQUENCY -mDragFrequency) * mPxPreFreq + mMiddleMargin,其中,mDragFrequency表示要转换的刻度值,mScaleMarginLeft表示刻度值mDragFrequency所在的控件位置,MIDDLE_FREQUENCY表示中间刻度值,mPxPreFreq表示最小刻度值0.1所占的像素值,mMiddleMargin表示刻度值为中间刻度值时所在的控件位置。
公式一中,已知的参数有刻度值mDragFrequency、中间刻度值MIDDLE_FREQUENCY、最小刻度值0.1所占的像素值mPxPreFreq、刻度值为中间刻度值时所在的控件位置mMiddleMargin,未知的参数为刻度值mDragFrequency所在的控件位置mScaleMarginLeft。
一方面,图片的长度与最小刻度值0.1所占像素值mPxPreFreq的比值为恒定值,在不同分辨率下获取相对应的图片的长度,由此可获取对应分辨率下最小刻度值0.1所占的像素值mPxPreFreq,而通过手机可获得不同分辨率下屏幕的宽度;另一方面,图片中心点的位置与中间刻度值MIDDLE_FREQUENCY相对应,由此通过与中间刻度值的差值来计算刻度值mDragFrequency的控件位置mScaleMarginLeft。
此外,本发明申请还可通过控件位置获得其当前的刻度值:
公式二、mDragFrequency = MIDDLE_FREQUENCY - (margin - mMiddleMargin) /mPxPreFreq,其中,mDragFrequency表示要转换的刻度值,MIDDLE_FREQUENCY表示中间刻度值,margin表示控件位置,mPxPreFreq表示最小刻度值0.1所占的像素值,mMiddleMargin表示刻度值为中间刻度值时所在的控件位置。
公式二中,已知的参数有控件位置margin、中间刻度值MIDDLE_FREQUENCY、刻度值为中间刻度值时所在的控件位置mMiddleMargin、最小刻度值0.1所占的像素值mPxPreFreq,未知的参数为刻度值mDragFrequency。
需要说明的是,图片的长度与最小刻度值0.1所占像素值mPxPreFreq的比值不能太小,否则会导致所占的像素值超过屏幕的宽度;另外,FM收音机的频率范围一般都在87.5MHz到108.0MHz之间,图片的中心点所表示的刻度值要介于87.5MHz到108.0MHz之间,也可等于边界值。
例如,图1是分辨率为720p的切图,mScaleIm刻度尺子控件110的中间刻度为91.0MHz,最小刻度值为0.1,其占8个像素,其中,刻度线占3个像素,刻度线之间为5个像素;mPointerIm刻度指针子控件130的刻度指针占3个像素;mMaskIm刻度遮罩层子控件120以中间为起点,随着向左右延伸距离的增加,其透明度逐渐减少,即刻度指针处刻度尺的清晰度最高,刻度指针两侧的刻度尺的清晰度逐渐暗淡。
基于上述收音机电台刻度控件,本发明还提出了一种安卓设备,其应用程序中安装有收音机程序,该收音机程序中设置有电台刻度控件,所述电台刻度控件为上述实施例中任一项所述的收音机电台刻度控件,其所用收音机电台刻度控件可不受设备屏幕分辨率的影响,适合多种机型。
在本发明安卓设备及其收音机电台刻度控件的优选实施例中,在触摸屏幕滑动调节刻度时,为了使其更加符合物理运动规律,当用手指进行快速滑动时,可让mScaleIm刻度尺子控件110做减速运动并继续滑动一段距离后停下。
应当理解的是,以上所述仅为本发明的较佳实施例而已,并不足以限制本发明的技术方案,对本领域普通技术人员来说,在本发明的精神和原则之内,可以根据上述说明加以增减、替换、变换或改进,而所有这些增减、替换、变换或改进后的技术方案,都应属于本发明所附权利要求的保护范围。