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()? 的異常。