Android-------手机屏幕适配之文件适配
public class Main {
//定义文件本地存储路径,可按照需求更改
private final static String rootPath = "D:\\workfiles\\layoutroot\\values-{0}x{1}";
/** 横轴方向分为320份 */
private final static float dw = 320f;
/** 纵轴方向分为480份 */
private final static float dh = 480f;
/** 宽度的模板 */
private final static String WTemplate = "<dimen name=\"x{0}\">{1}px</dimen>\n";
/** 高度的模板 */
private final static String HTemplate = "<dimen name=\"y{0}\">{1}px</dimen>\n";
public static void main(String[] args) {
//就适配了三个分辨率的手机屏幕
makeString(320, 480);
makeString(720, 1280);
makeString(1080, 1920);
}
/**
* 生成对应分辨率的dimen文件
*
* @param width
* 手机屏幕x方向的像素数量
* @param height
* 手机屏幕y方向的像素数量
*/
private static void makeString(int width, int height) {
StringBuffer sbWidth = new StringBuffer();
sbWidth.append("<?xml version=\"1.0\" encoding=\"utf-8\"?>\n");
sbWidth.append("<resources>");
float cellw = width / dw;
for (int i = 0; i < dw; i++) {
sbWidth.append(WTemplate.replace("{0}", i + "").replace("{1}",
change(cellw * i) + ""));
}
sbWidth.append(WTemplate.replace("{0}", "320").replace("{1}",
width + ""));
sbWidth.append("</resources>");
StringBuffer sbHeight = new StringBuffer();
sbHeight.append("<?xml version=\"1.0\" encoding=\"utf-8\"?>\n");
sbHeight.append("<resources>");
float cellh = height / dh;
for (int i = 0; i < dh; i++) {
sbHeight.append(HTemplate.replace("{0}", i + "").replace("{1}",
change(cellh * i) + ""));
}
sbHeight.append(HTemplate.replace("{0}", "480").replace("{1}",
height + ""));
sbHeight.append("</resources>");
String path = rootPath.replace("{0}", height + "").replace("{1}",
width + "");
File rootFile = new File(path);
if (!rootFile.exists()) {
rootFile.mkdirs();
}
File layxFile = new File(path + "\\lay_x.xml");
File layyFile = new File(path + "\\lay_y.xml");
try {
PrintWriter pw = new PrintWriter(new FileOutputStream(layxFile));
pw.print(sbWidth.toString());
pw.close();
pw = new PrintWriter(new FileOutputStream(layyFile));
pw.print(sbHeight.toString());
pw.close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
* 将浮点数小数点后保留两位小数
*/
private static float change(float a) {
int temp = (int) (a * 100);
return temp / 100f;
}
}
将生成的values文件复制到工程的res下,
使用用例:
android:layout_width="@dimen/x160"
Android-------手机屏幕适配之文件适配的更多相关文章
- 获取Android 手机屏幕宽度和高度以及获取Android手机序列号
1.获取Android 手机屏幕宽度 1 DisplayMetrics dm = new DisplayMetrics(); 2 this.getWindowManager().getDefaultD ...
- Unity3D Android手机屏幕分辨率问题
Android手机屏幕分辨率五花八门,导致开发时不好把握,还好各个引擎对这个屏幕分辨率问题都有较好的处理方式:unity3D 也为我们提供了一个不错的解决方案. 在Unity3D 进行 android ...
- Android开发——Android手机屏幕适配方案总结
)密度无关像素,单位为dp,是Android特有的单位 Android开发时通常使用dp而不是px单位设置图片大小,因为它可以保证在不同屏幕像素密度的设备上显示相同的效果. /** * dp与px的转 ...
- Pyqt adb 获取Android手机屏幕
adb的全称为Android Debug Bridge,就是起到调试桥的作用.adb的工作方式比较特殊,采用监听Socket TCP 5554等端口的方式让IDE和Qemu通讯,默认情况下adb会da ...
- Droid@screen:在PC屏幕上显示Android手机屏幕
这里介绍一款工具——Droid@screen,用来获取手机屏幕,显示在PC屏幕上.它集截图.录像等多种功能于一体. 安装 1. 下载地址:http://droid-at-screen.org/d ...
- android 使用asm.jar将android手机屏幕投射到电脑
使用asm.jar将Android手机到电脑屏幕投影 有时候可能须要将手机上的一些操作投影出来,比方一些App Demo的展示等.事实上,有专门的硬件设备能干这件事儿.但不是必需专门为展示个Demo去 ...
- 无需Root实现Android手机屏幕流畅投影到电脑进行演示(附软件下载)
近期要在公司的会议上演示App,须要在投影仪上显示出来给大家演示.因为投影仪不是智能投影仪,仅仅能将App先投影到自己的笔记本上.然后再将笔记本上的内容投影到投影仪上.该App是个游戏,实时交互性比較 ...
- 用802.11n 加速,将android手机屏幕投影到win7电脑上
在做Android应用开发的时候,经常需要将已经完成的应用展示给一同开发的小伙伴,然而一直感觉没有找到一种十分方便的办法.特别是看到了开发IOS的小伙伴在做展示的时候的方便.因为Apple既做PC,也 ...
- EasyPusher实现Android手机屏幕桌面直播,实时推送操作画面,用于手游直播等应用
本文转自EasyDarwin开源团队成员John的博客:http://blog.csdn.net/jyt0551/article/details/52651194 由于Android 5.0提供了捕获 ...
随机推荐
- Silverlight Visifire控件 .net后台控制aspx页面控件的显示与隐藏,动态给控件赋值,选定默认值的设定
.net后台代码: 控件的显示与隐藏: this.dateStart.Visibility = Visibility.Collapsed;//不显示控件 this.dateYear.Visibilit ...
- 有关service
在symfony2 服务注入容器的时候参数语法可以是这样: cellcom.twig.menu_extension: class: Cellcom\WebBundle\Twig\Extension\M ...
- python之6-4装饰器.md
装饰器看的说实话真心郁闷,群里一伙计说了好一会,听得一愣一愣的,查了点资料,又自己试了下,算是明白了一些,记录记录=.=更郁闷的是,博客园的markdown标记支持怎么和为知的不匹配,这转过来的文章很 ...
- 阿铭linux笔记
2015-09-06虚拟机网络设置.wmv: curl 获取在命令行显示的网页 dhclient 分配ip地址 ifdown eth0 关闭网卡eth0 ifup eh0 ...
- 使用BufferedReader的时候出现的问题
今天在使用BufferedReader的时候,出现了一个奇怪的问题 有时候换行的时候,行首会少一个字符 开始的代码是这样写的 while( br.read()!=-1 ){ String str = ...
- LDD命令--可执行文件依赖的库出现错误时
http://littlepig3056.blog.163.com/blog/static/180758353201212751814134/ ldd 查看可执行文件依赖的库,结果会列出依赖的库名及 ...
- R教程计划
提起数据挖掘,似乎会有很多人望而却步,从生产规划到到规律分析,从生物医学到航天科技,到处都有数据挖掘工程师留下的影子. 通过对比SAS,SPSS,以及R,最终选定了R, 不为什么,免费且高效才是硬道理 ...
- C 程序提升效率的10种方法
本文向你介绍规范你的C代码的10种方法(引用地址http://forum.eepw.com.cn/thread/250025/1). 1. 避免不必要的函数调用 考虑下面的2个函数: void s ...
- HornetQ
https://github.com/flsusp/http-queue https://github.com/sfr-network-service-platforms/hq-console htt ...
- MySQL库表状态查询
一. 查看库的各链接状态 对于一个mysql连接或者一个线程,任何时刻都有一个状态,表示其当前正在做什么.一般使用show full processlist查看. +---------+------- ...