在最近的一个工程中,要求有一个在上方了tabbar,上面有并排的3个方形按钮,每个按钮都有背景图。问题来了,如何让图片在不同尺寸的屏幕上不失真呢?(由于我们的项目比较小,工时很短,不能为每一个屏幕尺寸单独制作图片,所以我们所有屏幕上只用一套图片。)一开始我们使用了weight这个属性,让整个tabbar的weight恒定,这样做的话,的确可以达到动态调整tabbar高度的效果,但是由于每个屏幕的宽高比不同,这样的固定weight的tabbar中的背景图也有一定的失真现象。后来,我们使用了.9图片,这种方法图片自然是不失真了,但是有效的图片(就是指真正想展示的,那部分不缩放的图片)的大小却无法调整了,效果就是,小屏幕上有效图片看起来太大了,而大屏幕上的又看起来太小了!最后,用了一下方法,用代码来确定tabbar的高度。代码如下:

private void setTopViewHeight()
{
//set top view height
WindowManager manager = (WindowManager)this.getSystemService(Context.WINDOW_SERVICE);
Point sizePoint = new Point();
manager.getDefaultDisplay().getSize(sizePoint);
double m = 0.275;
View topView = contentView.findViewById(R.id.add_treatment_top);
ViewGroup.LayoutParams params = topView.getLayoutParams();
double x = ((double)sizePoint.x)/3.0;
params.height = (int)(x*m);
topView.setLayoutParams(params);
}

其中的m,是真实的背景图的长宽比,而((double)sizePoint.x)/3.0;这里的3.0 是因为横着放了3个button。这样做后,可以保证背景图片不会再失真了!

最新文章

  1. JSWindow对象
  2. 为什么C#中应该用Try-Catch?
  3. RxJava 的使用入门
  4. MyEclipse无法启动调试:Cannot connect to VM
  5. 基于HTML5的可预览多图片Ajax上传
  6. flex编译命令相关
  7. 【转】正确理解PHP程序编译时的错误信息
  8. IIS配置不正确可能导致“远程服务器返回错误: (404) 未找到"错误一例。
  9. 【剑指offer】数字数组中只出现一次(2)
  10. C#开发移动应用系列(3.使用照相机扫描二维码+各种基础知识)
  11. java中自动装箱带来的性能问题
  12. Spring Security 入门(1-4-2)Spring Security - 认证过程之AuthenticationProvider的扩展补充说明
  13. 记一次非常规方法对接硬件设备(Grason Stadler GSI 61)
  14. 酒店管理系统ER图
  15. Asp.Net Nuget常用命令
  16. Android应用系列:手把手教你做一个小米通讯录(附图附源码)
  17. js正则表达式中的
  18. sklearn获得某个参数的不同取值在训练集和测试集上的表现的曲线刻画
  19. WPF Image Source 设置相对路径图片
  20. iOS入门怎样选择Swift和objective-c

热门文章

  1. 【poj2079】 Triangle
  2. BZOJ1816 [Cqoi2010]扑克牌
  3. TYVJP1933 绿豆蛙的归宿
  4. linux内核数据结构学习总结
  5. 看看这些JavaScript题目你会做吗?
  6. tcp 重发 应用层重传
  7. xss概念剖析
  8. iOS-Auto property synthesis will not synthesize property 'delegate'; it will be implemented by its super
  9. Tools下的mdscongiguer 文件中 43行 oracle 配置 发现需要连接库 -lclntsh libclntsh.so 库是个什么东西呢?
  10. 3月20,html