http://blog.csdn.net/wenlin56/article/details/6682882(这个还没细看)
官方出的UI设计原则
1、不要使用固定的绝对定位布局:AbsolutLaout,软件中你若使用此布局方式,意味着,市面上有多少种分辨率手机,你就要写多少份布局文件。
2、不要使用 px 单位,使用 dp;如果是文本,使用 sp :因为Android产品众多,各自分辨率的手机充斥市场。如果使用和分辨率相关的单位(px),很可能导致在其它分辨率的手机上看到你意料之外的Size效果。而dp(或者dip)和sp是和屏幕密度相关的(其实是根据320x480为标准计算的)。
3、不要使用太小的字体。
4. 所有资源都要针对高分辨率屏幕创建
5. 需要点击的元素要够大
6. 要使用适当的间距(margins, padding)
7. 要正确处理屏幕方向变化:除非万不得已,否则建议不要强制横屏或竖屏。可以提供强制横屏竖屏的设置。
8. 要使用主题/样式、尺寸和颜色资源来减少界面冗余。
(例如,你的软件(甚至同一个界面)里有很多文本框,每个文本框的样式都差不多甚至一样。那么你是否每个都要设置一堆啊?如:
<EditText
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="5.0dip"
android:layout_marginRight="5.0dip"
android:layout_marginBottom="5.0px"
android:background="@drawable/login_edit"
android:paddingLeft="35.0sp"
android:singleLine="true"
android:saveEnabled="true"
android:inputType="text"
/>
还是说这样稍微好点呢(将修饰成Style里,让Style重用):
<EditText style="@style/Style_Edit" />
假如说你的软件里有二十个这样的文本框,你只需复制这一行代码二十次就可以了。
还有人会犹豫说,我的二十个文本框另外还有些细节的区别怎么半?
1. 为每种文本框都写一个Style 。
2. 抽象出几种间的共同点,用
<style parent="@style/Base_Edit">...差异化内容</style>
3. 假如差异的内容并多并且不常见的化,还有个小窍门。例如:
<EditText style="@style/Style_Edit"
android:inputType="password"
/>
这样就将,Style为普通文本框修改成了密码框。秘诀在与android解析XML应该用的pull解析器,pull解析器的特征就是写在前面的属性将被先解析到(先触发事件),因此,android:inputType="password"因为被写在了后面,就将覆盖Style里面的内容。这样也完成了样式差异化。)