Android的標尺
① Android有沒有人實現過刻度尺效果
得到刻度尺的值很簡單,這需要你自定義一個view,然後在view的onTouch方法中去獲取手指移動過程中的橫坐標信息,然後用當前的橫坐標坐標信息event.getX()減去刻度尺的0刻度的橫坐標rulerStartX,得到刻度值rulerDistance = event.getX() - rulerStartX。這里獲取的值的單位為像素,這需要和刻度尺的單位進行換算,這樣就可以獲取到當前的刻度值了。
② 設計師如何為Android應用標注尺寸
設計 Android 應用的最佳實踐:
1. 畫布大小定位 720 x 1280,72 dpi
2. 只使用偶數單位的尺寸,比如 96 px 的列表項高度,16 px 的邊距,64 px 的圖標邊長
3. 只使用 24 pt,28 pt,36 pt 和 44 pt 的字體
4. 設計完成以後,所有尺寸的 px 值除以 2 作為 dp 數值交給工程師
5. 所有字體的 pt 值除以 2 作為 sp 數值交給工程師
6. 所有切圖變成三份,分別是原始大小、縮小 1.5 倍,縮小 2 倍,分別作為 xhdpi,hdpi,mdpi 的資源交給工程師
如果你還有好奇心,可以繼續往下看這個結論是怎麼來的。
相信你已經看過這篇文檔中關於 Android 中各種尺寸單位的介紹,沒看過的最好看一下
http://developer.android.com/guide/topics/resources/more-resources.html#Dimension
在 Android 應用設計中涉及到的單位都是密度無關像素(Density-independent Pixels),這個說法太拗口了,通俗點講,Android 應用設計中只用物理尺寸,類似厘米,英寸這種單位,不用像素。之所以這樣,是由於像素在手機領域說不清楚問題,比方說規定列表項高度是 48 px,在 HTC C510e 上看起來就不錯,但在三星 Galaxy SIII 上看起來就會非常矮,導致很難看,這是因為這兩個機器的屏幕的 dpi 相差很大,前一個大約 160 dpi,後一個大約 320 dpi。這就是手機屏幕不同帶來的問題,如果不考慮平板,不同主要是密度不同,而不是尺寸不同,也不是解析度不同,給設計帶來困擾的根本是屏幕密度不同。不幸的是,很少人對這個有概念,通常介紹手機,會說屏幕尺寸,3.5
寸還是 4 寸,會說解析度,480 x 800 還是 720 x 1280,但通常不會介紹屏幕密度是多少。其實通過尺寸和解析度可以算出密度來,dpi 的 定義是 dot per inch,即每英寸的像素點,把解析度和尺寸除一除就能得到。一個不確切的分法是,720 x 1280 的手機很可能接近 320 dpi (Android 里的 xhdpi),480 x 800 的手機很可能接近 240 dpi (Android 里的 hdpi)。
Android 選擇的單位是 dp 和 sp,dp 的定義是「在 160 dpi 的屏幕上,1 dp 大約等於 1 px」。這個說法也很拗口,簡單點說,1 dp ≈ 1 / 160 inch,他就是物理界的一長度單位。用這個單位設計就統一了,比方說規定列表項高度是 48 dp,在所有手機上看起來都差不多是 48 / 160 inch 那麼高,雖然在不同手機上它對應了不一樣多的像素點,但這個轉換是 Android 手機完成的,每個 Android 手機都得知道在我這 1 dp 對應多少像素。sp 也是同樣解釋,18
sp 的字在所有手機上看起來應該都差不多大(自己改了字體大小設置的除外)。看到這里,可能有人會想,那豈不是不同手機顯示的內容不同。確實是這樣,同樣一個列表,在 A 手機上只能顯示五行,但在 B 個手機上就能顯示六行;還是這個列表,在 A 手機上文字左邊的留白就顯得沒有 B 手機多。
鋪陳完了,逐條解釋開始的最佳實踐。
設計師在設計的時候是用不了 dp 的,他不可能拖一個 48 x 48 dp 的框,不可能設置一個 8 dp 的邊距,Photoshop 里全是 px。於是我們就只有挑一個特定密度的屏幕,在這個特定密度的屏幕上,dp 和 px 的關系是確定,把設計做了,再把 px 轉換成 dp 給工程師。另外有一點是,長度可以乘除一下就解決,圖片是不能除的,圖片必須手動縮放。
我們挑哪一個密度好呢?答案是挑密度最大的,因為圖片縮小比放大好,放大會失真,選 320 dpi 作為目標屏幕,為其他屏幕提供圖片時,只需要縮小。而 320 dpi 屏幕的解析度最常見的是 720 x 1280,以這個尺寸作為畫布尺寸,是最帶感的,這樣的設計稿就和應用在最多數的 320 dpi 的機器上運行起來的樣子一樣。當然你可以選其他畫布大小,但再大也不見得方便,這個大小也夠施展了。72 dpi 是 Photoshop 的默認設置,不要改就好,這個數字和後面的換算有關系。
字體的問題,Android 4.0 以後的設計規范中建議只使用四種字型大小,分別是 12 sp,14 sp,18 sp 和 22 sp,這也是 Android framework 用到的全部字型大小。我們需要找到在這個畫布上,這些字型大小和 pt 的對應關系,以及,px 和 dp 的對應關系。有兩種演算法:
演算法一
根據 dp 的定義「在 160 dpi 的屏幕上,1 dp 大約等於 1 px」,那麼在 320 dpi 的屏幕上,1 dp 約等於 2 px,我們就是為 320 dpi 做的設計,所有 px 值除以 2 就是 dp 值。字體略復雜一點,1 pt = 1 / 72 inch,即在 72 dpi 的畫布上,1 pt = 1 px,我們的畫布就是 72 dpi,又有 1 sp 約等於 2 px(同 dp 的定義),所以 1 sp = 2 pt,所有 pt 值除以 2 就是 sp 值。演算法二
可以想像是把一個 320 dpi 的手機屏幕放大到了 Photoshop 里,放大倍數是 320 / 72,即手機上的 1 dp,在畫布上就是 320 / 72 dp,而 1 dp = 1 / 160 inch,所以在畫布上就是 2 / 72 inch,而畫布是 72 dpi,所以在畫布上就是 2 px,即手機上的 1 dp 對應畫布上的 2 px。字體的計算一樣,只是多一個在 72 dpi 上,1 pt = 1 px 的轉換。
至此,都算清楚了,在這個畫布上,px 到 dp,pt 到 sp 都是除以 2 的關系。
最後,給 320 dpi 做的圖片,到 240 dpi,160 dpi 上就要分別縮小 1.5 倍和縮小 2 倍。120 dpi 的機器已經很罕見,可以不考慮了
③ android studio主界面 剛安裝的studio 基本蒙圈,為什麼手機界面是這樣的,為什麼是是標尺而不是手機
應該是最新的顯示,只是一開始不習慣,我倒覺得這樣的界面更適合設計界面,可以看到尺寸等參數,你看到左上角那個格子的按鈕是否可以點擊切換
④ Android 通過配置,設置margin-Left和margin-Top相對的距離
下面推薦三種實現方式:
代碼實現 先計算屏幕寬高 動態設置控制項margin屬性
布局實現 利用LinearLayout的layout_weight屬性實現
藉助google官方的百分比庫(percent)
比較下三種實現方式優劣
第一種實現較簡單 但是比較麻煩 復用性不高 如果是動態的比例放置控制項推薦使用
第二種在布局中寫 於代碼解耦 但容易造成布局冗餘 影響效率
第三種適配性好 同時兼容平板 如果對適配要求比較高 可以考慮使用
⑤ android中有什麼和GetTickCount類似的的函數嗎
SystemClock.uptimeMillis().
GetTickCount是函數。GetTickCount返回(retrieve)從操作系統啟動所經過(elapsed)的毫秒數,它的返回值是DWORD。
⑥ android中horizontal和vertical的區別
一些線性布局的屬性orientation需要設置的值就是horizontal、vertical
horizontal 布局內的控制項橫向排列。
vertical 布局內控制項縱向排列。
⑦ android有沒有人實現刻度標尺
應該有的吧,看到很多軟體都會有這個界面
⑧ android屏幕坐標怎麼算和解析度有關系的嗎
屏幕坐標都是固定的,手機豎屏左上角坐標為(0,0)。
(0 ,0),(Xmax,0 )
(Ymax,0),(Xmax,Ymax)
屏幕解析度是屏幕圖像的精密度,是指顯示器所能顯示的像素有多少。由於屏幕上的點、線和面都是由像素組成的,顯示器可顯示的像素越多,畫面就越精細,同樣的屏幕區域內能顯示的信息也越多,所以解析度是個非常重要的性能指標之一。
⑨ android pad,在設計UI時一般是按照哪個標准尺寸來設計並切圖的呢
不行的,pad只能是你按照要求的解析度去重新出個程序。
如果你覺得1024 和1280的比例差不多,那就可以用比例的方式去做界面,但是圖一定要重新出,都放在nodpi中,否則480的圖放在1024上肯定拉伸加失真。
用比例的方式,就是都用fillparent,然後用layout_weight來調權重,這個可以網路搜。