您的位置:首页 > 产品设计 > UI/UE

用户体验之道---决胜UI

2013-09-26 18:19 225 查看
想必大家对安卓UI都有了许多的见解,在今天这个处处强调「用户体验」的设计时代,可以说谁抓住了用户的感官,谁就获得了产品在市场中的先机。

乔布斯语:“用户确实是会以貌取物的。”在Android开发设计中,虽然大多数开发者都不做美工的工作,但为了更好的实现个人发展和沟通能力,要求大家必须对UI设计有所涉猎。今天,希望从一些简单基础的实例入手分析,和大家一起讨论UI的优化、改良。

【一】优化资源

相信没有谁在编程过程中没有使用过Drawable资源。那么,这些res目录下的,貌似重复的文件夹具体意思是什么?具体覆盖的资源指向是什么?是哪一个版本提供的?相信没有多少人能注意到这些细节。但细节决定品质,想想你手机上被你删除的程序,有多少是因为一点小bug就被抛弃了?所以我们有必要弄清它们的意义。

●res/drawable-ldpi 为120dpi左右的屏幕提供低密度资源。

●res/drawable-mdpi 为160dpi左右的屏幕提供中等密度资源。

●res/drawable-hdpi 为240dpi左右的屏幕提供高密度资源。

●res/drawable-xdpi 为320dpi左右的屏幕提供超高密度资源。

因而,我们在做设计时候的归类,要根据具体的目标用户群而设计不同分辨率的图片。否则会遇到图片失真残影甚至内存溢出的问题。

【二】优化代码

对于一些用户程序,可能无法通过优化UI来使得它支持所有可能的屏幕尺寸。可以通过在清单文件中使用support-screens元素来指定应用程序可以运行在哪些屏幕上。

<support-screen
android:smallScreens="false"
android:normalScreens="true"
android:largeScreens="true"
android:xlargeScreens="true"/>


在这段代码中,smallScrenn指的是任何分辨率小于HVGA的屏幕;largescreen比智能机要大一些;extra large screen更大,比如平板电脑。而大多数智能手机屏幕都是normal screen。
*false的值并不是代表不支持,而是指强制Android使用兼容性缩放比例来尝试正确地缩放应用程序的UI。这通产会导致UI图像质量的下降,并且会显示图像伪影。

【三】更换图片处理方式

我们已经知道,Android提供了强大的NinePatch PNG 工具来使编辑者能够更方便的使用图形界面的设计。在一些图形基本构建中,我们应该尽可能的使用实时的渲染,而不是使用已有的图片。这样不仅缩小了程序的空间占有率,同时使图形处理的问题不再成为考虑的因素。

例如,下面这段代码段显示了一个矩形Drawable,它具有填充色、圆角、轮廓线和内边距。

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<gradient android:startColor="#c0000000"  android:endColor="#c0000000"
android:angle="90" /><!--背景颜色渐变 -->
<solid android:color="#00ffffff" /><!-- 背景的填充颜色 -->
<stroke android:width="3dp" android:color="#00FF00" /><!-- 描边,width是边得宽度,color是颜色 -->
<corners android:radius="10dp" /><!-- 边角圆弧的半径 -->
<padding
android:left="3dp"
android:top="3dp"
android:right="3dp"
android:bottom="3dp" /><!-- 四周留出来的空白 -->
</shape>


这样,我们在引用时,直接指定@drawable/xxx 即可使用我们自定义的布局。xxx即为xml的文件名。

同样,我们也可以使用动画了填充布局。比如,我们精彩在应用程序进入时看到播放的动画,就是使用了这个原理。下面,我们来做一段动画:

先在drawable中使用一段代码,为了简单,我们只放入两张图片。

<?xml version="1.0" encoding="utf-8"?>
<animation-list xmlns:android="http://schemas.android.com/apk/res/android" >

<item android:duration="400" android:drawable="@drawable/back_night" />
<item android:duration="400" android:drawable="@drawable/app_icon" />

</animation-list>


item表示每一帧的动画图片。duration属性指定了单帧停留的时间。

接着我们在java代码中onCreat()方法中指定注册动画播放。

mButton=(Button) findViewById(R.id.button1);
new Handler().postDelayed(new Runnable(){

@Override
public void run() {
mButton.setBackgroundResource(R.drawable.demo);
AnimationDrawable mButton_anim=(AnimationDrawable) mButton.getBackground();
mButton_anim.start();

}

}, 50);
}


这样就OK了。之所以把它放在Handler中执行,是因为普通的start并不能成功,因为还没有完全与控件绑定。

〖转载请注明出处 lansubao专栏〗
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息