65.9K
CodeProject 正在变化。 阅读更多。
Home

Android 用户交互性、响应时间和传感器

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.65/5 (5投票s)

2014年11月7日

CPOL

4分钟阅读

viewsIcon

13560

用户期望什么。

引言

移动用户没有耐心,对应用程序没有什么忠诚度,尤其是那些不经常使用的应用程序,因为他们可以瞬间卸载你的应用,而你却倾尽所有来开发它。用户分为个人用户、商务用户、客户等。

所有这些用户都有期望,他们希望你的应用程序能够解决某些问题,这些问题可能符合实际也可能不切实际,但请记住,客户/用户比你更了解情况,因此你必须确保满足他们并保持设计标准。

背景

作为一名开发者,我亲身体验过智能手机上的常用应用,例如社交媒体应用、联系人管理应用等,但我发现了以下几点:所有这些应用在设计界面方面都有共同之处,例如图标、小部件、通知、手势。例如,如果你看到一个齿轮图标,你肯定知道它代表“设置”。如果你看到一个垃圾桶图标,它意味着“删除”。那么为什么不在你的应用程序中遵循这些标准呢?因为用户已经习惯了它们。

Using the Code

作为一名开发者,你应该始终以用户为中心,因为用户不会对他们与你的应用程序的交互方式有任何妥协。因此,请确保你永远不会掉以轻心,比如如何使用颜色、图标、小部件、应用程序的响应时间。这对你来说应该比用户本身更重要。

我将根据以下几个因素,说明一些你应该避免的事情,以确保应用程序的良好用户交互性:

  • 手势
  • 组件 (Widgets)
  • 运动和位置
  • 键盘
  • GPS
  • 环境传感器

手势

Android 以用户为中心,赋予用户大量的 the 权和自定义 the 权。随着 Android 操作系统的新版本不断发布,它们会附带更多的 the ,包括手势等等。

以下是一些用户在其服务上进行的手势:

  • 触摸/点击
  • 点按
  • 悬停

其中一些手势仅在特定版本的 Android 中支持。悬停功能仅在 Android API Level 11 及以上的设备上支持。对于开发者而言,Android 3.0 平台(Honeycomb)。

Android 是一个开源操作系统,作为开发者,你可以使用 Android 中所有内置的框架、主题、设计来开发你的应用程序,并确保你遵循 Android 的设计指南 https://developer.android.com.cn/design/index.html

如何响应这些不同的事件取决于你要响应多少事件。通常,如果你只需要响应一个用户手势/事件,那么你可以使用此代码:

package com.code256.uilayouts_controls;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class RelativeActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //getting reference to the layout
        setContentView(R.layout.relativelayout);
        //it's advisable to have this in the oncreate method 
        //so that whenever the activity loads it can also load the references
        //getting e reference to the button
        Button button = (Button) findViewById(R.id.btnreg);
        //after getting reference to the button then we can decide 
        //what action to perform when the clicks on the button for example 
        //we would love if the user clicks it takes back to the previous activity
    button.setOnClickListener(new OnClickListener() {
        
        @Override
        public void onClick(View v) {
            // Inner class event handler, when a user clicks on this button then the activity stops
            finish();
        }
    });    
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }
}

这是响应悬停手势/事件的方法,但仅支持 Android 3.0(Honeycomb)及以上版本。其他所有手势,包括触摸、长按,响应用户事件的实现方式都相同。

    button.setOnHoverListener(new OnHoverListener() {
        
        @Override
        public boolean onHover(View v, MotionEvent event) {
            // TODO Auto-generated method stub
            return false;
        }
    });

只有 `ListView` 在响应用户事件时需要特殊考虑,例如当用户点击列表中的一行时。

    ListView list = (ListView) findViewById(R.id.list);
list.setOnItemClickListener(new OnItemClickListener() {

    @Override
    public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
        // do something when a row is tapped
        
    }
});

由于移动设备的电池寿命和 CPU 功耗有限,因此在开发应用程序使用某些功能时,你必须考虑到某些方面,以免你的应用程序耗尽用户设备的有限资源。

某些 Android 服务和功能会严重消耗用户设备的有限资源,例如 GPS、位置监听器。

位置监听器/GPS

有几种方法可以使用 GPS 和获取用户的位置,利用 Android 框架中的内置服务。但这些方法中,有些会耗费资源,而有些则消耗资源较少。

例如,如果你要请求 GPS 位置,可以使用两种方法,包括 `getLastKnownLocation`,它会返回用户设备保存的最后已知 GPS 位置。这可以减少设备的资源工作量,因为它会使用最后已知的位置坐标,而不是在每次启动应用程序时都请求这些坐标。

//recommended and saves user battery
locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);

//uses a lot of user's battery and other resources              

locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 30000L, 100F, this);

响应时间

这是一个至关重要的因素,没有任何用户愿意看到你的应用程序超过 10 秒才能响应一个事件;这可能会很无聊,迫使不满意的用户卸载你的应用程序。

虽然这些场景无法避免,但给用户正确的反馈对保持他们的注意力和耐心至关重要;最常用的技术之一是进度/状态栏,它在后台进程中运行。例如,如果你正在从远程数据库、云服务等获取数据,你就可以使用其中一个内置的进度/状态栏。

© . All rights reserved.