自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Android App的類響應(yīng)式設(shè)計

移動開發(fā) Android
開發(fā)一個Android App來同時對應(yīng)手機和平板,會遇到根據(jù)手機和平板的特性分別設(shè)計的問題,這個時候我們可以采用類似web前端里的響應(yīng)式設(shè)計,將600dp作為一個判定值,來分別對兩者進行界面設(shè)計。

導(dǎo)言

根據(jù)google的官方顯示Android 4.0以上的設(shè)備已經(jīng)有34.2%,由于國內(nèi)很多的手機都沒機會用上google play市場,所以國內(nèi)市場的情況,得看類似于友盟的季度報告才知道了。個人覺得,Android 4.0以后設(shè)備才能有讓人用的欲望,之前的版本受限于硬件,和系統(tǒng)的優(yōu)化程度,個人覺得,除了打個電話、收個短信、看個微博、上個QQ以外,也沒多大讓人使用的價值了,至于原因,知道的都會知道,不知道也就不知道了?,F(xiàn)在,硬件技術(shù)的發(fā)展,我們很方便就能購買到性能足夠強勁、價格足夠廉價的Android 4.0以后的手機和平板,那么,現(xiàn)在我們學習android 4.X的設(shè)計風格也算是不晚。

所謂類響應(yīng)式設(shè)計

這篇文章的標題為類響應(yīng)式設(shè)計,有做過web開發(fā)的應(yīng)該都知道,所謂的響應(yīng)式設(shè)計,就是一個網(wǎng)頁能夠根據(jù)是電腦的訪問或者手機的訪問進行的一個響應(yīng)的顯示,在google官方設(shè)計指導(dǎo)文檔里面,也有相關(guān)的說明:http://developer.android.com/design/patterns/multi-pane-layouts.html, 相比web的響應(yīng)式設(shè)計思想,在Android上使用這種思想,只能稱作為類似而已,因為相比之下,web的終端復(fù)雜,Android就相對于比較簡單,因為在Android上面你只需要考慮,簡單的來說,就是什么時候顯示一個pane,什么時候顯示兩個pane的問題而已。

設(shè)計的理論基礎(chǔ)

要解決Android應(yīng)用什么時候顯示一個pane,什么時候顯示兩個pane,我們需要了解一些Android是如何解決各種分辨率下的兼容性問題。

在做桌面軟件的時代,我們很少發(fā)現(xiàn)有人會吐槽不同分辨率下的情況,至于原因,我個人覺得,***,電腦的分辨率很多,但是屏幕的dpi/ppi 其實都差不多,這就使以像素為單位的計量參數(shù)在不同屏幕下的其實顯示區(qū)別不大;第二點,就是pc上的軟件的窗口是可調(diào)節(jié)的,而手機或者平板上你很少看到 (當然,現(xiàn)在三星的一些Android設(shè)備支持這個)。但是,移動設(shè)備上就完全不同了,首先,產(chǎn)生兼容性的問題,根源在于對顯示一個像素改多大的問題,在高密度的手機屏幕上,一個像素被顯示的非常之小,那么我們假設(shè)用100個像素本來是想顯示2厘米左右的長度,但是結(jié)果卻只顯示了1厘米;第二點就是,移動設(shè)備不支持窗口的縮放,如果我定義了一個100像素的單位,那就永遠沒有用戶可以調(diào)節(jié)的空間。對于這個問題,其實Android官方已經(jīng)提供了很好的解決方案,就是不依賴像素的計量單位,讓系統(tǒng)根據(jù)屏幕密度來渲染像素。

一張圖片:

一個公式:

px = dp * (dpi / 160)

如果,你是嚴格按照以上兩點來設(shè)計你的程序的話,那你分辨率的兼容問題,你就不需要額外操心了。當然,要做到這點,需要在設(shè)計的時候操心。

Android程序的實現(xiàn)

上面討論了一堆理論上的東西,估計大家都看煩了,那么在Android上具體是該怎么實現(xiàn)的呢?

設(shè)計規(guī)則

首先我們來看一張圖:

從這張圖里面我們可以大致了解到手機和平板的最簡單的區(qū)別,就在于屏幕是否有一邊大于 600dp,那么我們繪制一幅流程圖:

顯示一個pane,還是多個pane

如果,我們把平板和手機的設(shè)計,只是簡單的認為是手機上顯示一個pane,平板上顯示多個pane,這也未免太過于膚淺了。

在web設(shè)計上,我們有個div的概念,對于這個概念,我們可以很平滑的過渡到我們Android應(yīng)用的設(shè)計上。在android 4以后,實際上是Android 3以后,google意識到Android的平板的魅力不足以讓我們專門針對平板再開發(fā)一次(例如iPad),所以引入了類似于web的設(shè)計方案,將每個view徹底的獨立起來,讓activity只是作為這些view的容器,在fragment推出以前,我們要做出設(shè)計,需要花很多的心力,因為我們需要自己手工維護實現(xiàn)每個view的生命周期,而有了fragment,我們就有了一套穩(wěn)定的機制(有針對于android4以前的兼容包)。接下來,我們只需要考慮的是,我們的應(yīng)用整個邏輯該怎么處理,在我研究了多個Android自適應(yīng)的app以后,得出了一個關(guān)于 600dp的法則。

所謂600dp法則

我們從上邊可以知道,手機與平板的區(qū)分點就是長或者高達到了600dp的大小,那么這個600dp究竟能做什么?首先,600dp是手機與平板的區(qū)分點,而手機與平板***的不同就是一個屏幕能顯示內(nèi)容多少的問題。如果以手機的顯示為一個pane單位,那么對于大于600dp而言,我們可以考慮在一個屏幕下放多一個pane。(關(guān)于為什么選擇600dp可以參考諸多google android apps)

現(xiàn)在,我們以開源中國的客戶端為例,來說說如何在實踐中這個法則。

原版客戶端在某手機上顯示:

接著在某平板(寬超過 600dp)上顯示:

我們會很容易的發(fā)現(xiàn),在對于大于600dp的設(shè)備上來看的話,在屏幕利用率而言,遠遠不夠。接下來我們針對這點進行600dp法則的使用,進行改版后的顯示。

根據(jù)600dp法則改造后的顯示:

關(guān)于橫屏

我們都知道,手機橫屏以后似乎多了不少空余的空間,那么我們是否可以考慮放多個pane呢?

首先,我們要考慮的是我們的應(yīng)用針對的是平板還是手機,而不是關(guān)于如何利用好屏幕的空間,而這里600dp剛好是能區(qū)分手機和平板的***的大小。如果你要考慮的是手機和平板的設(shè)計,你只需要考慮一個app在手機和平板上的不同點,如果你考慮的是如何利用好屏幕的使用率,請根據(jù)手機或者平板分別設(shè)計一套。

推薦讀物

http://developer.android.com/guide/practices/screens_support.html

http://developer.android.com/training/multiscreen/screensizes.html

責任編輯:徐川 來源: OSChina
相關(guān)推薦

2012-05-29 10:44:17

WebApp

2013-05-29 12:18:42

響應(yīng)式響應(yīng)式設(shè)計響應(yīng)式設(shè)計流程

2013-04-19 10:53:55

響應(yīng)式設(shè)計Web

2013-03-01 10:42:21

響應(yīng)式Web

2014-08-13 15:55:17

Web響應(yīng)式設(shè)計design

2012-10-11 09:09:26

jQueryJSWeb

2021-07-14 09:45:24

設(shè)計師約束布局界面布局

2012-11-23 10:30:28

Responsive響應(yīng)式Web

2012-05-09 10:39:48

Web響應(yīng)式設(shè)計

2013-06-18 09:40:21

Web設(shè)計響應(yīng)式Web響應(yīng)式教程

2012-02-13 09:30:51

響應(yīng)式Web設(shè)計

2013-09-22 09:30:44

卡片式設(shè)計響應(yīng)式

2013-12-13 16:00:39

社交類APP設(shè)計思路產(chǎn)品經(jīng)理

2013-07-10 13:13:25

頁面設(shè)計響應(yīng)式

2012-01-12 13:55:54

2012-01-09 14:48:15

響應(yīng)式Web

2012-05-25 10:18:23

響應(yīng)式

2013-08-13 09:43:59

響應(yīng)式免費測試工具響應(yīng)式設(shè)計

2012-01-12 09:32:17

響應(yīng)式Web設(shè)計

2013-11-01 09:38:38

響應(yīng)試設(shè)計媒體查詢
點贊
收藏

51CTO技術(shù)棧公眾號