用dimens去实现 屏幕适配
2016-09-21 23:37
155 查看
版权声明:本文为博主原创文章,未经博主允许不得转载。
15年的时候国内就有很多大神分享了各种屏幕适配的方法。
最近突然被十几个人问。我依然为了应付回答来写博客了。哈哈
我们公司就是dimens方法。最low、最简单、最实用。
下面是代码直上代码。这个代码运行一下就会出现一堆res文件。然后复制到 工程里面就好了
运行完之后出现res文件夹,他下面会出现一堆values文件。直接复制到as里面这样的
这个方法立竿见影。直接用就好了。不懂得看看代码也能明白
尊重原创:http://write.blog.csdn.net/mdeditor#!postId=51131403
屏幕适配很简单
没想到到现在了还有人在各种问屏幕适配的问题。我真是服了。15年的时候国内就有很多大神分享了各种屏幕适配的方法。
最近突然被十几个人问。我依然为了应付回答来写博客了。哈哈
我们公司就是dimens方法。最low、最简单、最实用。
下面是代码直上代码。这个代码运行一下就会出现一堆res文件。然后复制到 工程里面就好了
<code class="hljs java has-numbering"><span class="hljs-keyword">package</span> com.example; <span class="hljs-keyword">import</span> java.io.File; <span class="hljs-keyword">import</span> java.io.FileNotFoundException; <span class="hljs-keyword">import</span> java.io.FileOutputStream; <span class="hljs-keyword">import</span> java.io.PrintWriter; <span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">GenerateValueFiles</span> {</span> <span class="hljs-keyword">private</span> <span class="hljs-keyword">int</span> baseW; <span class="hljs-keyword">private</span> <span class="hljs-keyword">int</span> baseH; <span class="hljs-keyword">private</span> String dirStr = <span class="hljs-string">"./res"</span>; <span class="hljs-keyword">private</span> <span class="hljs-keyword">final</span> <span class="hljs-keyword">static</span> String WTemplate = <span class="hljs-string">"<dimen name=\"x{0}\">{1}px</dimen>\n"</span>; <span class="hljs-keyword">private</span> <span class="hljs-keyword">final</span> <span class="hljs-keyword">static</span> String HTemplate = <span class="hljs-string">"<dimen name=\"y{0}\">{1}px</dimen>\n"</span>; <span class="hljs-javadoc">/** * {0}-HEIGHT */</span> <span class="hljs-keyword">private</span> <span class="hljs-keyword">final</span> <span class="hljs-keyword">static</span> String VALUE_TEMPLATE = <span class="hljs-string">"values-{0}x{1}"</span>; <span class="hljs-keyword">private</span> <span class="hljs-keyword">static</span> <span class="hljs-keyword">final</span> String SUPPORT_DIMESION = <span class="hljs-string">"320,480;480,800;480,854;540,960;"</span> + <span class="hljs-string">"600,1024;720,1184;720,1196;720,1280;768,1024;"</span> + <span class="hljs-string">"768,1280;800,1280;1080,1812;1080,1920;1440,2560;"</span>; <span class="hljs-keyword">private</span> String supportStr = SUPPORT_DIMESION; <span class="hljs-keyword">public</span> <span class="hljs-title">GenerateValueFiles</span>(<span class="hljs-keyword">int</span> baseX, <span class="hljs-keyword">int</span> baseY, String supportStr) { <span class="hljs-keyword">this</span>.baseW = baseX; <span class="hljs-keyword">this</span>.baseH = baseY; <span class="hljs-keyword">if</span> (!<span class="hljs-keyword">this</span>.supportStr.contains(baseX + <span class="hljs-string">","</span> + baseY)) { <span class="hljs-keyword">this</span>.supportStr += baseX + <span class="hljs-string">","</span> + baseY + <span class="hljs-string">";"</span>; } <span class="hljs-keyword">this</span>.supportStr += validateInput(supportStr); System.out.println(supportStr); File dir = <span class="hljs-keyword">new</span> File(dirStr); <span class="hljs-keyword">if</span> (!dir.exists()) { dir.mkdir(); } System.out.println(dir.getAbsoluteFile()); } <span class="hljs-javadoc">/** *<span class="hljs-javadoctag"> @param</span> supportStr w,h_...w,h; *<span class="hljs-javadoctag"> @return</span> */</span> <span class="hljs-keyword">private</span> String <span class="hljs-title">validateInput</span>(String supportStr) { StringBuffer sb = <span class="hljs-keyword">new</span> StringBuffer(); String[] vals = supportStr.split(<span class="hljs-string">"_"</span>); <span class="hljs-keyword">int</span> w = -<span class="hljs-number">1</span>; <span class="hljs-keyword">int</span> h = -<span class="hljs-number">1</span>; String[] wh; <span class="hljs-keyword">for</span> (String val : vals) { <span class="hljs-keyword">try</span> { <span class="hljs-keyword">if</span> (val == <span class="hljs-keyword">null</span> || val.trim().length() == <span class="hljs-number">0</span>) <span class="hljs-keyword">continue</span>; wh = val.split(<span class="hljs-string">","</span>); w = Integer.parseInt(wh[<span class="hljs-number">0</span>]); h = Integer.parseInt(wh[<span class="hljs-number">1</span>]); } <span class="hljs-keyword">catch</span> (Exception e) { System.out.println(<span class="hljs-string">"skip invalidate params : w,h = "</span> + val); <span class="hljs-keyword">continue</span>; } sb.append(w + <span class="hljs-string">","</span> + h + <span class="hljs-string">";"</span>); } <span class="hljs-keyword">return</span> sb.toString(); } <span class="hljs-keyword">public</span> <span class="hljs-keyword">void</span> <span class="hljs-title">generate</span>() { String[] vals = supportStr.split(<span class="hljs-string">";"</span>); <span class="hljs-keyword">for</span> (String val : vals) { String[] wh = val.split(<span class="hljs-string">","</span>); generateXmlFile(Integer.parseInt(wh[<span class="hljs-number">0</span>]), Integer.parseInt(wh[<span class="hljs-number">1</span>])); } } <span class="hljs-keyword">private</span> <span class="hljs-keyword">void</span> <span class="hljs-title">generateXmlFile</span>(<span class="hljs-keyword">int</span> w, <span class="hljs-keyword">int</span> h) { StringBuffer sbForWidth = <span class="hljs-keyword">new</span> StringBuffer(); sbForWidth.append(<span class="hljs-string">"<?xml version=\"1.0\" encoding=\"utf-8\"?>\n"</span>); sbForWidth.append(<span class="hljs-string">"<resources>"</span>); <span class="hljs-keyword">float</span> cellw = w * <span class="hljs-number">1.0</span>f / baseW; System.out.println(<span class="hljs-string">"width : "</span> + w + <span class="hljs-string">","</span> + baseW + <span class="hljs-string">","</span> + cellw); <span class="hljs-keyword">for</span> (<span class="hljs-keyword">int</span> i = <span class="hljs-number">1</span>; i < baseW; i++) { sbForWidth.append(WTemplate.replace(<span class="hljs-string">"{0}"</span>, i + <span class="hljs-string">""</span>).replace(<span class="hljs-string">"{1}"</span>, change(cellw * i) + <span class="hljs-string">""</span>)); } sbForWidth.append(WTemplate.replace(<span class="hljs-string">"{0}"</span>, baseW + <span class="hljs-string">""</span>).replace(<span class="hljs-string">"{1}"</span>, w + <span class="hljs-string">""</span>)); sbForWidth.append(<span class="hljs-string">"</resources>"</span>); StringBuffer sbForHeight = <span class="hljs-keyword">new</span> StringBuffer(); sbForHeight.append(<span class="hljs-string">"<?xml version=\"1.0\" encoding=\"utf-8\"?>\n"</span>); sbForHeight.append(<span class="hljs-string">"<resources>"</span>); <span class="hljs-keyword">float</span> cellh = h * <span class="hljs-number">1.0</span>f / baseH; System.out.println(<span class="hljs-string">"height : "</span> + h + <span class="hljs-string">","</span> + baseH + <span class="hljs-string">","</span> + cellh); <span class="hljs-keyword">for</span> (<span class="hljs-keyword">int</span> i = <span class="hljs-number">1</span>; i < baseH; i++) { sbForHeight.append(HTemplate.replace(<span class="hljs-string">"{0}"</span>, i + <span class="hljs-string">""</span>).replace(<span class="hljs-string">"{1}"</span>, change(cellh * i) + <span class="hljs-string">""</span>)); } sbForHeight.append(HTemplate.replace(<span class="hljs-string">"{0}"</span>, baseH + <span class="hljs-string">""</span>).replace(<span class="hljs-string">"{1}"</span>, h + <span class="hljs-string">""</span>)); sbForHeight.append(<span class="hljs-string">"</resources>"</span>); File fileDir = <span class="hljs-keyword">new</span> File(dirStr + File.separator + VALUE_TEMPLATE.replace(<span class="hljs-string">"{0}"</span>, h + <span class="hljs-string">""</span>)<span class="hljs-comment">//</span> .replace(<span class="hljs-string">"{1}"</span>, w + <span class="hljs-string">""</span>)); fileDir.mkdir(); File layxFile = <span class="hljs-keyword">new</span> File(fileDir.getAbsolutePath(), <span class="hljs-string">"lay_x.xml"</span>); File layyFile = <span class="hljs-keyword">new</span> File(fileDir.getAbsolutePath(), <span class="hljs-string">"lay_y.xml"</span>); <span class="hljs-keyword">try</span> { PrintWriter pw = <span class="hljs-keyword">new</span> PrintWriter(<span class="hljs-keyword">new</span> FileOutputStream(layxFile)); pw.print(sbForWidth.toString()); pw.close(); pw = <span class="hljs-keyword">new</span> PrintWriter(<span class="hljs-keyword">new</span> FileOutputStream(layyFile)); pw.print(sbForHeight.toString()); pw.close(); } <span class="hljs-keyword">catch</span> (FileNotFoundException e) { e.printStackTrace(); } } <span class="hljs-keyword">public</span> <span class="hljs-keyword">static</span> <span class="hljs-keyword">float</span> <span class="hljs-title">change</span>(<span class="hljs-keyword">float</span> a) { <span class="hljs-keyword">int</span> temp = (<span class="hljs-keyword">int</span>) (a * <span class="hljs-number">100</span>); <span class="hljs-keyword">return</span> temp / <span class="hljs-number">100</span>f; } <span class="hljs-keyword">public</span> <span class="hljs-keyword">static</span> <span class="hljs-keyword">void</span> <span class="hljs-title">main</span>(String[] args) { <span class="hljs-keyword">int</span> baseW = <span class="hljs-number">720</span> ; <span class="hljs-keyword">int</span> baseH = <span class="hljs-number">1280</span>; String addition = <span class="hljs-string">""</span>; <span class="hljs-keyword">try</span> { <span class="hljs-keyword">if</span> (args.length >= <span class="hljs-number">3</span>) { baseW = Integer.parseInt(args[<span class="hljs-number">0</span>]); baseH = Integer.parseInt(args[<span class="hljs-number">1</span>]); addition = args[<span class="hljs-number">2</span>]; } <span class="hljs-keyword">else</span> <span class="hljs-keyword">if</span> (args.length >= <span class="hljs-number">2</span>) { baseW = Integer.parseInt(args[<span class="hljs-number">0</span>]); baseH = Integer.parseInt(args[<span class="hljs-number">1</span>]); } <span class="hljs-keyword">else</span> <span class="hljs-keyword">if</span> (args.length >= <span class="hljs-number">1</span>) { addition = args[<span class="hljs-number">0</span>]; } } <span class="hljs-keyword">catch</span> (NumberFormatException e) { System.err .println(<span class="hljs-string">"right input params : java -jar xxx.jar width height w,h_w,h_..._w,h;"</span>); e.printStackTrace(); System.exit(-<span class="hljs-number">1</span>); } <span class="hljs-keyword">new</span> GenerateValueFiles(baseW, baseH, addition).generate(); } }</code><ul class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li><li>11</li><li>12</li><li>13</li><li>14</li><li>15</li><li>16</li><li>17</li><li>18</li><li>19</li><li>20</li><li>21</li><li>22</li><li>23</li><li>24</li><li>25</li><li>26</li><li>27</li><li>28</li><li>29</li><li>30</li><li>31</li><li>32</li><li>33</li><li>34</li><li>35</li><li>36</li><li>37</li><li>38</li><li>39</li><li>40</li><li>41</li><li>42</li><li>43</li><li>44</li><li>45</li><li>46</li><li>47</li><li>48</li><li>49</li><li>50</li><li>51</li><li>52</li><li>53</li><li>54</li><li>55</li><li>56</li><li>57</li><li>58</li><li>59</li><li>60</li><li>61</li><li>62</li><li>63</li><li>64</li><li>65</li><li>66</li><li>67</li><li>68</li><li>69</li><li>70</li><li>71</li><li>72</li><li>73</li><li>74</li><li>75</li><li>76</li><li>77</li><li>78</li><li>79</li><li>80</li><li>81</li><li>82</li><li>83</li><li>84</li><li>85</li><li>86</li><li>87</li><li>88</li><li>89</li><li>90</li><li>91</li><li>92</li><li>93</li><li>94</li><li>95</li><li>96</li><li>97</li><li>98</li><li>99</li><li>100</li><li>101</li><li>102</li><li>103</li><li>104</li><li>105</li><li>106</li><li>107</li><li>108</li><li>109</li><li>110</li><li>111</li><li>112</li><li>113</li><li>114</li><li>115</li><li>116</li><li>117</li><li>118</li><li>119</li><li>120</li><li>121</li><li>122</li><li>123</li><li>124</li><li>125</li><li>126</li><li>127</li><li>128</li><li>129</li><li>130</li><li>131</li><li>132</li><li>133</li><li>134</li><li>135</li><li>136</li><li>137</li><li>138</li><li>139</li><li>140</li><li>141</li><li>142</li><li>143</li><li>144</li><li>145</li><li>146</li><li>147</li><li>148</li><li>149</li><li>150</li><li>151</li><li>152</li><li>153</li><li>154</li><li>155</li><li>156</li><li>157</li><li>158</li><li>159</li><li>160</li><li>161</li><li>162</li><li>163</li><li>164</li><li>165</li><li>166</li><li>167</li></ul><div class="save_code tracking-ad" style="display: none;" data-mod="popu_249"><a target=_blank target="_blank"><img src="http://static.blog.csdn.net/images/save_snippets.png" alt="" /></a></div>
运行完之后出现res文件夹,他下面会出现一堆values文件。直接复制到as里面这样的
这个方法立竿见影。直接用就好了。不懂得看看代码也能明白
尊重原创:http://write.blog.csdn.net/mdeditor#!postId=51131403
相关文章推荐
- 用dimens去实现 屏幕适配
- Movie播放Gif,完美实现屏幕适配
- 【极客学院】点九在Android平台的运用开发,实现屏幕的完整适配
- Android自定义控件系列八:详解onMeasure()(二)--利用onMeasure测量来实现图片拉伸永不变形,解决屏幕适配问题
- UIPickerView组件的使用之随机点菜系统(一)——利用AutoResizing进行屏幕适配,拖线进行实现
- 自动生成Android屏幕适配的dimens.xml
- 【Android Training - 02】适配不同的屏幕[Lesson 3 - 实现可适配的UI流程]
- 自动生成Android屏幕适配的dimens.xml文件工具类
- Android屏幕适配---dimens转换工具
- iOS用VFL语言实现屏幕适配
- iOS屏幕适配之通过代码实现控件按比例缩放
- 实现滑动屏幕与底层滑动指标适配
- Android自定义控件系列八:详解onMeasure()(二)--利用onMeasure测量来实现图片拉伸永不变形,解决屏幕适配问题
- Android在java代码中实现图片屏幕适配
- 利用onMeasure测量来实现图片拉伸永不变形,解决屏幕适配问题
- android第二十一步实现软件国际化、屏幕适配、样式与主题
- Movie播放Gif,完美实现屏幕适配
- 详解onMeasure()(二)--利用onMeasure测量来实现图片拉伸永不变形,解决屏幕适配问题
- 使用 rem 实现 适配各种屏幕布局
- web app变革之rem(手机屏幕实现全适配)