android交互规范
❶ 在交互细节上,Android 与 iOS 有哪些区别
IOS与安卓的区别:
1、两者运行机制不同:IOS采用的是沙盒运行机制,安卓采用的是虚拟机运行机制。
2、两者后台制度不同:IOS中任何第三方程序都不能在后台运行;安卓中任何程序都能在后台运行,直到没有内存才会关闭。
3、IOS中用于UI指令权限最高,安卓中 数据处理 指令权限最高
iOS只有一个物理键,android有三个物理键
2 iOS和android的底层交互设计不同
1、返回的入口不一致,android基本上是硬件返回,iphone则是屏幕软键返回。但这点很可能随着Android4.0的出现而改变;
2、长按为android的一个基本的标配操作,但iOS应尽量避免;这点造成了很多操作上的不一样,例如删除操作,iOS为滑动,android为长按
3、Android有menu键,点击后调出menu菜单,iOS没有;
4、tab的处理上也不一致,因为iPhone没有menu菜单,更多的操作很可能放在最后一个tab里,叫“more”;
5、应用的通知处理也不一致,iOS为图标右上角的小红圈,Android为statuesbar中的滚动显示;
6、iPhone有子tab,android好像还没有看到有,除非是第三方应用自己添加的控件。
2.操作栏
a )安卓操作或tab均放上方,以免与虚拟键盘冲突,而非ios的下方,但许多安卓应用也按ios的来设计,因此这个点的设计更改可以酌情考量; iPhone 5c, 任何时候从屏幕下方可以拉出“控制中心”,Android 是从上方拉出了
只说一点,滑动屏幕的感受,iOS是最顺畅最自然的。在商场里体验过很多android,滑动的感受总有那么点怪怪的,或者说有点生硬,低配置的还有卡顿等现象。
OS 用导航栏左上角的返回钮,android 用户习惯按全局 back 键。
Android 见啥都想长按;iOS用户则非常不习惯,只会点来点去。
iOS上面捏合手势是标配;Android 上不是跑太快就卡的狠要么没反应,总之各种难过少人用。
Android 下边缘有软键,交互元素要离远点
2.iOS 双击home键的界面完全更改,改成卡片式预览。如果觉得拨动app缩略图行进过慢可以拨动下方的app图标,会稍微快一点。向上推app缩略图来关闭app。
Android,在主界面,按左键 ,可以预览所以打开的应用,向上推 可关闭app
在短信中,向左稍稍拉动可以显示每条短信的具体收发时间。
❷ android 和 ios 人机交互设计指南中最重要的几点是什么
android 和 ios 人机交互设计指南中最重要的几点告诉你,希望你能理解:
这是针对于处于开发中的API或技术的初步文档。虽然该文档在技术精确度上经过了严格的审核,但并非最终版本,仅供苹果开发者计划的注册会员使用。苹果提供这份机要文档的目的,是帮助你按照文中描述的方式对技术的选择及界面的设计开发进行规划。这些信息有可能发生变化,届时,你的设计开发方式需要基于最终版本的操作系统及文档进行相应的调整和测试。该文档或许会随着未来API或相关技术在的发展而进行更新。
审美的完整性
对app而言,审美的完整性并不是用来衡量app漂亮与否,或者塑造它的风格。而是通过app的外观、交互行为和功能共同传递一致的,清晰明了的信息。
用户关注app能否兑现此前承诺的功能,但是app的外观和交互行为也潜在地影响着用户。比如,一款帮用户处理严肃任务的app,可通过使用标准控件或可预见的交互方式让装饰性元素更为精妙和无打扰,从而让用户把注意力集中在对任务的处理上。
App清楚明了地把使用目的传达给了用户,这可以让用户更加信任它。不过,如果开发者通过入侵性的,轻佻的或者武断的UI向用户传递了混乱的信息,则用户可能会质疑app的可靠性和可信赖度。
另一方面,对一款鼓励沉浸式任务的的app,比如游戏,用户期待一个迷人的外观,和有趣、刺激以及鼓舞人心的发现。用户并不期望在游戏中完成一系列严肃性的或者生产性的任务,但他们期望游戏的外观和交互方式可以与游戏目的很好地融合在一起。
App需保持一致性
这样方便用户积累的知识和技巧在app各部分UI之间,在app之间进行迁移。一致性并不是盲目模仿其他app,也不是停滞不前,而是更关注用户熟悉的标准和范例。
决定你的iOS app是否要遵守一致性的原则,考虑下边几个问题:
1.你的app是否符合iOS的标准?App 正确使用系统提供的控件、视图以及图标了吗?App以可靠方式整合设备的功能了吗?
2.App自身是否一致?文本有没有使用统一的术语和风格?相同图标代表的意义是否一致?用户在不同地方执行了相同的操作,用户能否预测到将会发生什么样的结果?贯穿App的自定义UI元素的外观和交互方式是否一致?
3.App现在的版本与此前的版本是否一致?条款和意义是否一致?App的基本概念和主要功能本质上有没有发生变化?
直接操作
直接在屏幕上操作对象,而不使用单独的控件来操作,这样用户会更专注于当前的任务,他们也更容易理解操作产生的结果。
使用Multi-Touch 界面,用户可通过双指张开或者闭合来放大或者缩小图片和内容区域。在游戏中,玩家可以直接移动屏幕上的对象或者与对象进行直接的交互。 在一款iOS app中,以下动作可为用户提供直接操作的体验:
1.旋转或者移动设备以影响屏幕上的效果
2.使用手势直接操控屏幕上的对象
3.可看到动作产生的直接结果或可视化结果
反馈
反馈是对用户动作的承认,向他们展示操作的结果,更新他们任务的进程。内置iOS app为每位用户的动作提供了可觉察的反馈。在用户执行点击操作的过程中,列表项目和控件会持续几秒钟高亮状态,通过控件所处状态短暂的改变来显示进程的变化。
精巧的动画可以给用户有意义的反馈,可帮助用户清楚地知晓动作产生的结果。比如,列表可以动态地展示新增一行的操作,从而帮助用户跟踪视觉上的变化。
声音也可以给用户有用的反馈,但不应该是仅有的反馈机制,因为用户不能时刻倾听他们的设备发出了什么样的声音来反馈执行的动作。
隐喻
如果app中虚拟的对象和动作象征着熟悉的用户体验,那么不管这些体验是深植于真实世界还是数字世界,用户都可以快速掌握app的使用方法。在隐喻不涉及对象或动作局限性的情况下,App使用隐喻来暗示用法或者体验再好不过。
由于用户真实地与屏幕进行交互,因此iOS app的隐喻空间非常广阔。iOS 中的隐喻包括:
1.移动分层的视图来展现其下面的内容
2.在游戏中拖动、滑动或者轻扫对象
3.点击开关,滑动滑块以及旋转选择器
4.在杂志或书上进行翻页
用户控制
用户应该发起和控制动作,而不是app。一款app可以启发用户的动作行为方法,或者提醒用户危险后果,但是app撇开用户做决策是错误的。app能给用户他们想要的能力,也能帮他们规避不想要的结果,最好的app应该能在这两者之间正确地平衡。
当交互行为和控件是熟悉的,可预见的时候,用户对app会更有控制感。当交互动作简单直接的时候,用户对app的动作也更容易理解和记忆。用户期望在操作产生结果前有足够多的机会来取消它们,并且他们期望有机会确认自己的目的,从而执行一个具有潜在破坏性的动作。最后,用户期望能优雅地停止正在进行的操作。
❸ 在Android上怎样实现java和JS交互
在Android的开发过程中、遇到一个新需求、那就是让Java代码和Javascript代码进行交互、在IOS中实现起来很麻烦、而在Android中相对来说容易、Android对这种交互进行很好的封装、其实可以很简单的用Java代码调用WebView中的js函数、也可以用WebView中的js来调用Android应用中的Java代码
一、网页的JS代码调用ANDROID中JAVA代码的方法
在网页中调用java代码、需要在webview控件中添加javascriptInterface
contentWebView = (WebView) findViewById(R.id.webview);
//启用javascript
contentWebView.getSettings().setJavaScriptEnabled(true);
contentWebView.addJavascriptInterface(this, "js对象名");
在Activity中定义一个要被js调用的方法、src为js传递过来的参数、如果没有不传也可以的。
public void jsFunction(final String str) {
Toast.makeText(this, str, Toast.LENGTH_SHORT).show();
runOnUiThread(new Runnable() {
@Override
public void run() {
//在里对Android应用的UI进行处理
}
});
}
在网页中、只需要像调用js方法一样、进行调用就可以
<a onClick="window.js对象名.jsFunction(´hello world´)" >
点击调用java代码并传递参数
</a>
二、ANDROID中JAVA代码调用网页的JS代码的方法
Java代码调用js并传参其实是通过WebView的loadUrl方法去调用的、只是参数url的写法不一样
// 无参数调用
contentWebView.loadUrl("javascript:javacalljs()");
// 传递参数调用
contentWebView.loadUrl("javascript:javacalljswithargs("
+ "´hello world´" + ")");
三、JAVA和JS交互注意事项
1、Java 调用 js 里面的函数、效率并不是很高、估计要200ms左右吧、做交互性很强的事情、这种速度很难让人接受、而js去调Java的方法、速度很快、50ms左右、所以尽量用js调用Java方法
2、Java 调用 js 的函数、没有返回值、调用就控制不到
3、Js 调用 Java 的方法、返回值如果是字符串、你会发现这个字符串是 native 的、转成 locale 的才能正常使用、使用 toLocaleString() 函数就可以、不过这个函数的速度并不快、转化的字符串如果很多、将会很耗费时间
4、网页中尽量不要使用jQuery、执行起来需要5-6秒、最好使用原生的js写业务脚本、以提升加载速度、改善用户体验
❹ android 中的交互有几种
1. 广播交互
提到Activity与Service的交互,可能狠多人首先想到的就是BroadCast——广播。在Android中,广播是系统提供的一种很好的交互方式。比如:在电池电量过低,开机完成等情况下,系统都会发出相应的系统广播,我们的应用程序只需要注册相应的广播接收器,就可以接收到这些系统的广播。同时,我们也可以定义自己的广播,这样在不同的Activity、Service以及应用程序之间,就可以通过广播来实现交互。我们通过模拟应用程序后台下载的情况来分析Service与Activity的交互方式。
2. 共享文件交互
这里提到的共享文件指的是Activity和Service使用同一个文件来达到传递数据的目的。我们使用SharedPreferences来实现共享,当然也可以使用其它IO方法实现,通过这种方式实现交互时需要注意,对于文件的读写的时候,同一时间只能一方读一方写,不能两方同时写。
3. Messenger交互(信使交互)
Messenger翻译过来指的是信使,它引用了一个Handler对象,别人能够向它发送消息(使用mMessenger.send(Message msg)方法)。该类允许跨进程间基于Message通信,在服务端使用Handler创建一个 Messenger,客户端只要获得这个服务端的Messenger对象就可以与服务端通信了。也就是说我们可以把Messenger当做Client端与Server端的传话筒,这样就可以沟通交流了。
4. 自定义接口交互
何谓自定义接口呢,其实就是我们自己通过接口的实现来达到Activity与Service交互的目的,我们通过在Activity和Service之间架设一座桥梁,从而达到数据交互的目的,而这种实现方式和AIDL非常类似(后文会说到)。
5. AIDL交互
什么是AIDL?
AIDL是Android Interface Definition Language的首字母缩写, 也就是Android接口定义语言。提及AIDL就不得不说下Android的服务,Android 支持两种服务类型的服务即本地服务和远程服务。
❺ android嵌入h5,怎么交互
Android和H5之间的交互
hybrid App开发也不是什么新鲜事了,其中native和h5之间的交互则是必不可少的。Android中是如何和H5交互的?
1、webView加载页面
我们都知道在Android中是通过webView来加载html页面的,根据HTML文件所在的位置不同写法也不同:
//例如:加载assets文件夹下的test.html页面
mWebView.loadUrl("file:///android_asset/test.html")
//例如:加载网页
mWebView.loadUrl("http://www..com")
如果只是这样调用mWebView.loadUrl()加载的话,那么当你点击页面中的链接时,页面将会在你手机默认的浏览器上打开。那如果想要页面在App内中打开的话,那么就得设置setWebViewClient:
mWebView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
mWebView.loadUrl(url);
return true;
}
}
});
2、Android本地通过Java调用HTML页面中的JavaScript方法
想要调用js方法那么就必须让webView支持
WebSettings webSettings = mWebView.getSettings();
//设置为可调用js方法
webSettings.setJavaScriptEnabled(true);
若调用的js方法没有返回值,则直接可以调用mWebView.loadUrl("JavaScript:do()");其中do是js中的方法;若有返回值时我们可以调用mWebView.evaluateJavascript()方法:
mWebView.evaluateJavascript("sum(1,2)", new ValueCallback<String>() {
@Override
public void onReceiveValue(String value) {
Log.e(TAG, "onReceiveValue value=" + value);
}
});
js代码如下:
<script type="text/javascript">
function sum(a,b){
return a+b;
}
function do(){
document.getElementById("p").innerHTML="hello world";
}
</script>
2、js调用Android本地Java方法
在Android4.2以上可以直接使用@JavascriptInterface注解来声明,下面是在一个本地Java方法
public class JsInteration {
@JavascriptInterface
public String back() {
return "hello world";
}
}
定义完这个方法后再调用mWebView.addJavascriptInterface()方法:
mWebView.addJavascriptInterface(new JsInteration(), "android");
那么在js中怎么来调用呢?
<script type="text/javascript">
function s(){
//调用Java的back()方法
var result =window.android.back();
document.getElementById("p").innerHTML=result;
}
</script>
4、拦截HTML页面中的点击事件
mWebView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
//判断url拦截事件
if (url.equals("file:///android_asset/test2.html")) {
Log.e(TAG, "shouldOverrideUrlLoading: " + url);
startActivity(new Intent(MainActivity.this,Main2Activity.class));
return true;
} else {
mWebView.loadUrl(url);
return false;
}
}
});
以上就是Java调用js方法以及js调用Java方法的实现交互方式中的一种。下面给出完整代码:
mainActivity
public class MainActivity extends AppCompatActivity {
public static final String TAG = "MainActivity";
private WebView mWebView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mWebView = (WebView) findViewById(R.id.webView);
mWebView.loadUrl("file:///android_asset/test.html");
WebSettings webSettings = mWebView.getSettings();
webSettings.setJavaScriptEnabled(true);
mWebView.addJavascriptInterface(new JsInteration(), "android");
mWebView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if (url.equals("file:///android_asset/test2.html")) {
Log.e(TAG, "shouldOverrideUrlLoading: " + url);
startActivity(new Intent(MainActivity.this,Main2Activity.class));
return true;
} else {
mWebView.loadUrl(url);
return false;
}
}
});
}
//Android调用有返回值js方法
@TargetApi(Build.VERSION_CODES.KITKAT)
public void onClick(View v) {
mWebView.evaluateJavascript("sum(1,2)", new ValueCallback<String>() {
@Override
public void onReceiveValue(String value) {
Log.e(TAG, "onReceiveValue value=" + value);
}
});
}
public class JsInteration {
@JavascriptInterface
public String back() {
return "hello world";
}
}
}
test.html
<!DOCTYPE html>
<html>
<head>
<title></title>
<script type="text/javascript">
function sum(a,b){
return a+b;
}
function s(){
var result =window.android.back();
document.getElementById("p").innerHTML=result;
}
</script>
</head>
<body>
<button onclick="s()">调用本地方法</button>
<a href="file:///android_asset/test2.html">点击</a>
<p id="p"></p>
</body>
</html>
❻ ios和android设计规范区别
Android 整体视觉设计规范
App 界面的整体视觉组成大致可以分为四个部分:
StatusBar(状态栏)、TopBar(头部栏)、Body Content(内容区域)、FootBar(底部栏)。
StatusBar 的样式由系统 UI 决定,除背景配色外,不需要做其他的设计。
TopBar 两个系统平台规范上的显示高度与内容布局有明显的差异,按各自的规范进行设计。
Body Content 除控件外,采用相同的布局与视觉设计。
FootBar 除控件外,采用相同的布局与视觉设计。
二、Android差异化设计案例解读
1. StatusBar/TopBar 差异化设计
2. 常用的三个系统图标/控件差异化
3. 搜索/输入控件差异化
4. 弹窗样式差异化
三、Android系统交互与iOS系统交互的差异化设计
1. 交互方式:
除了上面提到了弹窗样式与交互差异化之外,对于一些系统交互行为,推荐尽量使用 iOS 与 Android 各自平台的系统控件与交互方式,降低开发与用户学习成本。系统交互行为主要包含以:返回上级/关闭当前页面的方式、通知开启或者关闭设置、发送/提交内容(键盘自带或者新增按钮点击)、Item 列表排序/删除、提示窗显隐、时间选择控件、手势操作等等。
2. 交互动效:
交互动效也推荐尽量使用 iOS 与 Android 各自平台的系统提供的动效。比如 iOS 的镜头切近与高斯模糊,Android 的纸墨磁吸等等。
单条 item 的交互差异示例
总体来说,就是以 iOS 版为参照,底部栏与中间内容区域尽量保持相同的设计,通过对状态栏、头部样式、控件(开关、选框、搜索、输入)、系统图标(返回、分享、更多)、弹窗样式、系统交互进行 Android 规范化差异,以保证该 App 的设计在两个不同的系统平台即能符合中国用户的使用习惯,又能适当体现系统的不同风格与特性。
❼ iOS与Android的交互差异
平常用的是iOS设备,每次把玩安卓测试机都会有些不习惯。对于一些小厂来讲,由于资源有限,一般安卓和i设计稿都通用一个设计稿。虽然现在ios和安卓在设计方面越来越趋同,但还是有些差异化的地方,不然在开发的过程中,搞不清楚两者的差异化会闹出很多笑话。这里只是简要的写出iOS和Android交互方面的一些差异,只作一个引子。
1.标题的位置
Andriod的导航栏标题一般在左边,iOS的导航栏标题一般居中显示。这只是一个小差异,一些大厂应该会做出规定,导航栏的标题统一居中显示。
2.手势操作差异
对于某个单一的item,安卓是长按进行“删除”及其他操作,而iOS是左滑删除或者其他操作。这个交互属于比较常见的方式了,不遵守这个设计差别的话,用户用起来也会比较别扭。
3.搜索框差异
Andriod搜索框后面一般带有“搜索”两个字,左边有一个“返回”箭头;iOS搜索框后面一般没有搜索按钮,他的搜索按钮一般在键盘上,搜索框后面有一个“取消”按钮。为什么要这么做?其实也是iOS和Android的系统决定的。安卓的键盘上虽然有一个“箭头”的标识可用作搜索,但是由于标识不够明显,所以搜索框后面要加一个“搜索”按钮。同时,由于iOS键盘上就有“搜索”按钮,所以不用这么做。当然,现在也有一些大厂搜索框也做成一致,越趋向于iOS。
4.消息通知
Andriod的消息通知的推送只需在本应用内进行开关操作,不涉及到系统层面的开关;而iOS则需要在系统层面去控制系统的开关。iOS的消息推送都是需要去iOS的设置-通知-XX应用里面去进行设置。
5.地址选择器
对于地址选择,iOS一般使用系统交互的滚筒控件,但是部分Android APP也用这个交互,则是不对的。对于Android交互而言,一般是用列表选择代替滚筒的设计。
6.小结
以上的交互差异是比较常见的差异了,当然现在做的比较好的是安卓和iOS的交互都日益趋向统一了,至少从现在来讲,差异还是存在的。这就需要我们在设计的过程中分清这些差异,并做到合理而具有变通的设计。
❽ android客户端和服务器端怎么交互
android客户端和服务器端是基于IntentService的,具体如下:
后台使用简单的servlet,支持GET或POST。这个servlet最终返回给前台一个字符串flag,值是true或false,表示登录是否成功。
然后在安卓的ADT上创建一个安卓项目,建立两个Activity,分别作为登录界面和登录成功界面。
HTTP的访问公共类,用于处理GET和POST请求。
IntentService服务,用于在后台以队列方式处理耗时操作。
在AndroidManifest.xml中注册IntentService。注意uses-permission节点,为程序开启访问网络的权限。
登陆界面处理,注意按钮监听事件中,使用Intent将要传递的值传给service。接收广播类中,同样使用Intent将要传递的值传给下一个Activity。在onCreate()中,动态注册接收广播类的实例receiver。在接收广播类中,不要使用完毕后忘记注销接收器,否则会报一个Are you missing a call to unregisterReceiver()? 的异常。