android屏幕适配方案 - dimen生成器
2015-09-10 17:18
507 查看
生成多个 values-宽x高 文件夹,android系统会根据屏幕的尺寸自动读取相应的文件夹下的dimen值,据此来保证在各个屏幕下的显示效果的一致性。以下是生成以320*480为基准的dimen文件,效果图如下:
把这些文件夹放到res下即可。调用的方法:@dimen/x10 or @dimen/y10(屏幕的宽均分320份,高均分480份)
自动生成器代码(文件夹生成路径自己改,红色部分):
把这些文件夹放到res下即可。调用的方法:@dimen/x10 or @dimen/y10(屏幕的宽均分320份,高均分480份)
自动生成器代码(文件夹生成路径自己改,红色部分):
import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.PrintWriter; public class AllDimen { privatefinal static StringrootPath = "/Users/Downloads/value_root/values-{0}x{1}"; private finalstatic float dw = 320f; private finalstatic float dh = 480f; privatefinal static StringWTemplate = "<dimen name=\"x{0}\">{1}px</dimen>\n"; privatefinal static StringHTemplate = "<dimen name=\"y{0}\">{1}px</dimen>\n"; public static void main(String[] args) { makeString(320, 480); makeString(480,800); makeString(480, 854); makeString(540, 960); makeString(600, 1024); makeString(720, 1184); makeString(720, 1196); makeString(720, 1280); makeString(768, 1024); makeString(800, 1280); makeString(1080, 1812); makeString(1080, 1920); makeString(1440, 2560); } public static void makeString(int w, int h) { StringBuffer sb = new StringBuffer(); sb.append("<?xml version=\"1.0\" encoding=\"utf-8\"?>\n"); sb.append("<resources>"); float cellw =w / dw; for (int i = 1; i < 320; i++) { sb.append(WTemplate.replace("{0}",i + "").replace("{1}", change(cellw * i) + "")); } sb.append(WTemplate.replace("{0}","320").replace("{1}", w + "")); sb.append("</resources>"); StringBuffer sb2 = new StringBuffer(); sb2.append("<?xml version=\"1.0\" encoding=\"utf-8\"?>\n"); sb2.append("<resources>"); float cellh =h / dh; for (int i = 1; i < 480; i++) { sb2.append(HTemplate.replace("{0}",i + "").replace("{1}", change(cellh * i) + "")); } sb2.append(HTemplate.replace("{0}","480").replace("{1}", h + "")); sb2.append("</resources>"); String path = rootPath.replace("{0}",h + "").replace("{1}",w + ""); 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(sb.toString()); pw.close(); pw = new PrintWriter(new FileOutputStream(layyFile)); pw.print(sb2.toString()); pw.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } } public staticfloat change(float a) { int temp = (int) (a * 100); return temp / 100f; } }
相关文章推荐
- RGB 颜色对照表
- Android 国际化 语言适配
- Android的任务和回退栈
- Android adb无法启动
- Android视频录制--MediaProjection
- Android Property Animation 属性动画
- Android Cursor类的概念和用法
- [Android]最省内存的ViewPager添加小圆点指示器
- 从头到尾详解Android Studio
- android 静默安装和卸载
- android设置手机横屏与竖屏无效的解决方法
- android eventbus
- Android拓展系列(4)--vim编辑器的基本使用
- android如何使用资源文件定义的颜色
- Android Volley的基本用法
- android 调用相机拍照 伪闪退
- RelativeLayout相对布局常用属性
- Android RatingBar自定义替换系统图片
- 使用Gradle构建Android应用的渠道包
- android开发之旅1