(1)获取屏幕的尺寸

  1. WindowManager windowManager = (WindowManager) getSystemService(Context.WINDOW_SERVICE);
  2. Display d = windowManager.getDefaultDisplay();
  3. mWidth = d.getWidth();
  4. mHeight = d.getHeight();
  5. DisplayMetrics dm = getResources().getDisplayMetrics();
  6. mScreenDensity = dm.density;
  1.  
  1.  

(2)美工设计图的尺寸

  1. uiWidth,uiHeight

(3)获取缩放比例

  1. float scaleWidth = mWidth / uiWidth;
  2. float scaleHeight = mHeight/ uiHeight;

(4)全部布局的尺寸用代码实现

  1. public static int getWidthSize(int size){
  2. return (int) (size * scaleWidth);
  3. }
  4.  
  5. public static int getHightSize(int size){
  6. return (int) (size * scaleHeight);
  7. }
  8.  
  9. public static float getTextSize(int pxSize){
  10. return (pxSize*scaleHeight) / mScreenDensity;
  11. }
  12.  
  13. public static void setViewSize(int width, int height, View v){
  14. int paramWidth = getWidthSize(width);
  15. int paramHeight = getHightSize(height);
  16. ViewGroup.MarginLayoutParams params
  17. = (ViewGroup.MarginLayoutParams) v.getLayoutParams();
  18. if (width != INVALID){
  19. params.width = paramWidth;
  20. }
  21. if (height != INVALID){
  22. params.height = paramHeight;
  23. }
  24. v.setLayoutParams(params);
  25. }
  26.  
  27. public static void setViewPadding(int left, int top, int right, int bottom,
  28. View v){
  29. left = getWidthSize(left);
  30. top = getHightSize(top);
  31. right = getWidthSize(right);
  32. bottom = getWidthSize(bottom);
  33. v.setPadding(left, top, right, bottom);
  34. }
  35.  
  36. public static void setViewMargin(int left, int top, int right, int bottom,
  37. View v){
  38. int paramLeft = getWidthSize(left);
  39. int paramTop = getHightSize(top);
  40. int paramRight = getWidthSize(right);
  41. int paramBottom = getHightSize(bottom);
  42. ViewGroup.MarginLayoutParams params = (ViewGroup.MarginLayoutParams)
  43. v.getLayoutParams();
  44. if (left != INVALID){
  45. params.leftMargin = paramLeft;
  46. }
  47. if (right != INVALID){
  48. params.rightMargin = paramRight;
  49. }
  50. if (top != INVALID){
  51. params.topMargin = paramTop;
  52. }
  53. if (bottom != INVALID){
  54. params.bottomMargin = paramBottom;
  55. }
  56. v.setLayoutParams(params);
  57. }


Android万能分辨率适应法的更多相关文章

  1. 关于android的分辨率

    关于Android的分辨率支持,为大家翻译官方文档 看世界杯的空闲时间,翻译一下官方文档.分辨率问题是大家都很关心的(720×480会不会悲剧),而关于这个问题,android官方的文档无疑最有说服力 ...

  2. Android进阶笔记10:Android 万能适配器

    1. Android 万能适配器      项目中Listview GridView几乎是必用的组件,Android也提供一套机制,为这些控件绑定数据,那就是Adapter.用起来虽然还不错,但每次都 ...

  3. 使用Vitamio打造自己的Android万能播放器(6)——在线播放(播放列表)

    前言 新版本的VPlayer由设计转入开发阶段,预计开发周期为一个月,这也意味着新版本的Vitamio将随之发布,开发者们可以和本系列文章一样,先开发其他功能.本章内容为"在线视频播放列表& ...

  4. 使用Vitamio打造自己的Android万能播放器(5)——在线播放(播放优酷视频)

    前言 为了保证每周一篇的进度,又由于Vitamio新版本没有发布, 决定推迟本地播放的一些功能(截图.视频时间.尺寸等),跳过直接写在线播放部分的章节.从Vitamio的介绍可以看得出,其支持http ...

  5. 使用Vitamio打造自己的Android万能播放器(4)——本地播放(快捷搜索、数据存储)

    前言 关键字:Vitamio.VPlayer.Android播放器.Android影音.Android开源播放器 本章节把Android万能播放器本地播放的主要功能(缓存播放列表和A-Z快速查询功能) ...

  6. 使用Vitamio打造自己的Android万能播放器(3)——本地播放(主界面、播放列表)

    前言 打造一款完整可用的Android播放器有许多功能和细节需要完成,也涉及到各种丰富的知识和内容,本章将结合Fragment.ViewPager来搭建播放器的主界面,并实现本地播放基本功能.系列文章 ...

  7. 使用Vitamio打造自己的Android万能播放器(2)—— 手势控制亮度、音量、缩放

    前言 本章继续完善播放相关播放器的核心功能,为后续扩展打好基础.   声明 欢迎转载,但请保留文章原始出处:)  博客园:http://www.cnblogs.com 农民伯伯: http://ove ...

  8. 使用Vitamio打造自己的Android万能播放器(1)——准备

    前言 虽然Android已经内置了VideoView组件和MediaPlayer类来支持开发视频播放器,但支持格式.性能等各方面都十分有限,这里与大家一起利用免费的Vitamio来打造属于自己的And ...

  9. (13)[Xamarin.Android] 不同分辨率下的图片使用概论

    原文 [Xamarin.Android] 不同分辨率下的图片使用概论 设计Android App的时候,其尺寸众多也是一个挑战之一.要针对不同尺寸设计Android App时,就要先来了一下dpi(d ...

随机推荐

  1. HDU4612(Warm up)2013多校2-图的边双连通问题(Tarjan算法+树形DP)

    /** 题目大意: 给你一个无向连通图,问加上一条边后得到的图的最少的割边数; 算法思想: 图的边双连通Tarjan算法+树形DP; 即通过Tarjan算法对边双连通缩图,构成一棵树,然后用树形DP求 ...

  2. hdu 3395

    KM裸题 每个鱼都认为自己是雄性,而且会攻击它认为是雌性的鱼,每个鱼只能被攻击一次,被攻击后会产卵(个数是给的两条鱼的值的异或运算) #include<string.h> #include ...

  3. 手机软件记事本(SuperNotepad)的使用教程

    软件简介: 手机应用记事本(SuperNotepad)类似电脑应用notepad, 可用于文本阅读和编辑新建电子书(本应用限文本txt文件),是阅读小说和便签记录的好帮手. 电子书阅读器及便签的手机应 ...

  4. JavaScript的68个技巧一

    1. 严格模式 在自己的项目中 你可以坚持只使用" 严格模式 " 或只使用" 非严格模式 "的策略.但如果你要编写健壮的代码应对各种各样的代码连接 你有两个可选 ...

  5. 【转载】Python编程中常用的12种基础知识总结

    Python编程中常用的12种基础知识总结:正则表达式替换,遍历目录方法,列表按列排序.去重,字典排序,字典.列表.字符串互转,时间对象操作,命令行参数解析(getopt),print 格式化输出,进 ...

  6. (转)C# DateTime格式化大全

    //c datetime 格式化 DateTime dt = DateTime.Now; Label1.Text = dt.ToString();//2005-11-5 13:21:25 Label2 ...

  7. cell高度自动适应文章内容

    效果: 描述:表视图中生成多个不同的cell,cell的高度跟文字内容的多少有关 要求:需要自己在网上下载一个plis文件,然后修改两个标题 一 : 创建工程文件UIAutomaticCellHeig ...

  8. java下tcp的socket连接

    serverDemo package cn.stat.p4.ipdemo; import java.io.IOException; import java.io.InputStream; import ...

  9. 关于javascript中setTimeout()和clearTimeout()的疑惑。

    由于在w3school中学习javascript时,当学到setTimeout()和clearTimeout()方法时.根据它所提供的例子(下面的代码转自w3cschool)—计数程序,发现当你不停的 ...

  10. JS nodeType返回类型(复制的

    http://blog.csdn.net/qyf_5445/article/details/9232907 将HTML DOM中几个容易常用的属性做下记录: nodeName.nodeValue 以及 ...