| 注册
请输入搜索内容

热门搜索

Java Linux MySQL PHP JavaScript Hibernate jQuery Nginx
zgoc2584
8年前发布

当我们谈 XML 布局文件代码的优雅性

   <p>当我们谈代码的优雅性,是不可以忽略经常在打交道的 Android XML 布局文件的书写。有人会问,XML 文件内容有什么优雅不优雅的,不都是随便写吗?嗯,是有很多人,根本就没有意识到或者不关心布局文件内容应该怎么写更好看,更漂亮。我觉得,优雅的 Android XML 布局文件的内容,应该做到以下几点:</p>    <ul>     <li>不能有多余的空行;</li>     <li>不要保留你注释掉的代码(要回溯我们有 git);</li>     <li>尽量避免 hard code(硬编码);</li>     <li>能复用的资源尽量抽出到对应的 value 文件;</li>     <li>尽量消除警告、单词拼写错误;</li>     <li>不要使用废弃的关键词,如 fill_parent、dip;</li>     <li><strong>属性条目要有序;</strong></li>    </ul>    <p>其中,本文特别想讲的就是最后一条,“属性条目要有序”,属性条目指的是,比如一个 ImageView 节点下的 android:id, android:layout_width, android:paddingLeft, android:src … 等等这些。<strong>大部分人在书写 Android XML 布局文件的时候,都是想到一个要设置的属性,就随意在原有的属性们之下一行,再加上一行新属性</strong>,这样导致诸如 android:id 有时会在最后一行,有时在一堆属性中间,不仅不利于我们在需要 id 的时候,肉眼查找阅读,也会使得整个 XML 文件内容没有规则,很凌乱。</p>    <p>所以我大致是给自己定了一个规则,就是 style 必须排第一个,紧接着 visibility、id,然后是一堆 layout 属性,再然后是内边距 padding 属性,而一些值设定,比如 color、text、background、src … 我则规定它们必须处于最底下,这样在查看值的时候,只要着眼于最底下就可以找到目标属性和它的设定值了。</p>    <p>我们可以看一份随意书写的 XML 文件和按照一定顺序规则书写的 XML 文件内容对比:</p>    <p><img src="https://simg.open-open.com/show/4e808b2c9076b88f4745ac02af8768f6.jpg" alt="当我们谈 XML 布局文件代码的优雅性" width="1886" height="797"></p>    <p>上图中,左边是随意书写、乱序的,右图则是按照一定顺序规则有序的,相比之下,我想应该都会觉得右图看起来舒服许多,而且益处应该也是比较明显的。</p>    <p>为了优雅性,以前我都是手动进行排序,id 手动写前头,text 手动写在末尾,直到最近,因为与人协作,不得不面对大量遗留下来的左图式的 XML 文件,忽然想起可以写一个 Idea/AndroidStudio 插件来自动化格式化这些文件内容。于是下载了 Idea 社区版,查看了几下官方文档和一个小示例,就摸索着写起了,最终完成了本文想要推荐 LayoutFormatter.</p>    <p>这是我开发并且完全开源的一个 Idea/AndroidStudio 插件,通过 右键 -> Refactor -> Reformat Layout XML. 即可一键格式化你的 XML 文件,甚至可以一键格式化你整个项目或某个文件夹下的所有 XML 文件:</p>    <p><a href="/misc/goto?guid=4959671579527730486">https://github.com/drakeet/LayoutFormatter</a></p>    <p>最近它的更新:</p>    <ul>     <li>调整了格式化 Action 的位置到 “右键 -> Refactor -> Reformat Layout XML.”;</li>     <li>支持 撤销;</li>     <li>支持 对非 XML 文件进行过滤;</li>     <li>支持 默认快捷键;</li>     <li>支持 一键对整个项目或某个文件夹下的所有 XML 文件进行格式化;</li>     <li>修复 许多问题,但暂时还因为换行符不一样,不支持 Windows 系统;</li>     <li>支持 自动把 fill_parent 转为 match_parent,把 dip 转成 dp.</li>    </ul>    <p>希望你能喜欢并享受它 ^ ^</p>    <p>来自:<a href="/misc/goto?guid=4959671579617052179">drakeet</a></p>    
 本文由用户 zgoc2584 自行上传分享,仅供网友学习交流。所有权归原作者,若您的权利被侵害,请联系管理员。
 转载本站原创文章,请注明出处,并保留原始链接、图片水印。
 本站是一个以用户分享为主的开源技术平台,欢迎各类分享!
 本文地址:https://www.open-open.com/lib/view/open1461631445040.html
XML Android开发 移动开发 Android Studio