国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

談?wù)刟ndroid 布局 的優(yōu)化

移動開發(fā) 移動應用
設(shè)配android的屏幕一定是一個噩夢,就好比那些搞網(wǎng)頁設(shè)計的為了折騰各種瀏覽器,廢寢忘食的去設(shè)配,其實,這樣想想,設(shè)配android屏幕還真和那些網(wǎng)頁設(shè)計去設(shè)配瀏覽器沒啥區(qū)別…最近,在寫一套通過在view上綁定tag命令的小框架,特定的再回到API文檔中,找找那些沉睡在api文檔中好用的方法!

 1.沒有一勞永逸的方案!

有經(jīng)常關(guān)注android官方文檔的,一定知道在android4.0發(fā)布不久,官方就推出了一套UI設(shè)計教程,

官方原版:Android Design

非官方簡體中文版: 非官方簡體中文版

6寸e-ink pdf版: 6寸版本

有人會說,這不是UI設(shè)計嗎?這是美工和設(shè)計干的事情,跟我們這些程序猿有什么關(guān)系!嚴重跑題!!!

關(guān)于一個程序猿要不要懂點設(shè)計,這個問題,不做討論,不過,個人經(jīng)驗,有時候,可能因此而靈感閃現(xiàn),解決了一個不大不小的問題.

很多人都嘗試在屏幕設(shè)配上,找出一條通用的解決方案,可惜的是,就算是官方也沒法提供這樣的幫助, 更別說我們這些苦逼的程序員,這里有個小故事,大家都知道Instagram,android版吧,有個采訪,Instagram的初始人就說,我每天收到最多的用戶反饋就是為什么不能在他的android手機上運行,但是,我已經(jīng)設(shè)配了幾百個android手機了!!!

所以,想找出一條康莊大道幾乎是不太可能的事情,不過,我們可以修內(nèi)功,出現(xiàn)問題,不可怕,可怕的是出現(xiàn)問題無法解決,接下來,我就談?wù)勱P(guān)于屏幕設(shè)配的一些經(jīng)驗之談.

2.這世界究竟有多少種屏幕?

我們每天都在究竟怎么去設(shè)配屏幕,那么這世上有多少屏幕要讓我們?nèi)ピO(shè)配呢?下面應用了一個官方的最新資料:有興趣的可以直接到:官方統(tǒng)計的屏幕分布

取之2012/5/7

 

chart

 

ldpi mdpi hdpi xhdpi

small 2.3% 2.4%

normal 0.7% 26.2% 57.8% 0.9%

large 0.3% 2%

xlarge 7.4%

很多人第一次看這個圖的時候肯定會感到疑惑,怎么不是分辨率?這是什么鬼數(shù)據(jù),這讓人怎么去設(shè)配屏幕!買手機的時候可沒有人會說”你好,我要一個Normal大小屏幕,密度最好是hdpi的手機”.

描述過于模糊!!!這可能是為什么設(shè)配android屏幕是一件很困難的事情,關(guān)于什么是Normal,什么是hdpi,如果,不清楚這點朋友,我建議先去看看官方文檔:Supporting Multiple Screens

有些東西竟然官方竟然告訴了我們,為啥還要去重復呢?

順便推薦一個算DPI的在線小工具:DPI Calculator / PPI Calculator 大概計算一下,當前分辨率的手機處于哪個區(qū)間里面,至于詳情,我還是建議大家去看一下官方文檔,里面已經(jīng)說得很清楚了!!

竟然,官方文檔都寫好了,還有你寫來干嘛啊!那么接下來就開始說一些開發(fā)碰到的問題.

3.開始布一個局

1,新建一個android項目,把新建一個Activity那個選項選上!然后用模擬器運行項目!什么?!!

你沒看錯,記住照著做就沒錯了…因為,今天,我們要講如何優(yōu)化和兼容View ,所以,一切從研究View開始!

2,打開hierarchyviewer

這是一個幫助我們優(yōu)化view的非常重要的工具的,接下來的大部分時間,都會借住這個工具進行講解,這個工具沉睡在android sdk 目錄 tools下 hierarchyviewer.bat,或者用Everything這樣的搜索硬盤的工具直接找到!

3,分析

還記得我們第一步運行的項目嗎?接著用hierarchyviewer這樣的神器,就可以導出這樣的圖!

 

H

 

這么一張圖就是我們一個Hello,World項目的View 布局結(jié)構(gòu),在HierarchyViewer上你點擊每個按鈕就會有非常詳細的布局信息,所以,這里對于hierarchyViewer的介紹到此為止!關(guān)于這個工具的詳細使用,請查閱Debugging and Profiling User Interfaces 這里不做贅述!

4,如何布好一個局?

關(guān)于這點我在開發(fā)中總結(jié)了一下幾點

1.熟讀API文檔!

布局這東西不是比酷的東西,不是比誰的布局越復雜,那個人就越牛叉,以最少的步驟完成,設(shè)計圖的要求,這應該是每個android開發(fā)程序員的宗旨!!

案例一:做一個帶箭頭的返回按鈕

經(jīng)理:那個小與啊,你根據(jù)這設(shè)計圖搞一個按鈕

 

image

 

小與:這還不簡單三分鐘搞定

于是小于程序猿,敲下了如下代碼

 

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:gravity="center" >

 

android:id="@+id/button1"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:background="@drawable/btn_headtita"

android:textColor="#ffffff"

android:text="@string/back" />

 

android:id="@+id/imageView1"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_alignParentLeft="true"

android:layout_centerVertical="true"

android:src="@drawable/header_back" />

 

看代碼多累啊,我們用剛剛介紹的hierarchyviewer來分析一下,這個按鈕有什么問題!

 

image

 

我們從這個圖中,我們可以看到,為了這么一個按鈕我們用了view的三個節(jié)點去完成!假設(shè),我們的一個view 有三個類似的按鈕就意味著我們要用9個節(jié)點去完成,我們可以簡單得出這是一個3N級的復雜度布局,我們可以嘗試去優(yōu)化嗎?

技巧一:熟讀官方的API文檔!

個人建議,常用的Widget的所有參數(shù)都盡量了解一遍!在閱讀官方文檔的時候我們發(fā)現(xiàn)了Button,有一個可以把圖繪制在左邊的參數(shù):android:drawableLeft

于是,我們優(yōu)化了一下小與的代碼

 

android:id="@+id/button1"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:background="@drawable/btn_headtita"

android:drawableLeft="@drawable/header_back"

android:gravity="center"

android:padding="10dp"

android:text="@string/back"

android:textColor="#ffffff" />

用hierarchyviewer來分析一下

 

image

 

瞬間一個3N級復雜度的布局,變成了一個N級復雜的!所以,我建議各位android開發(fā)朋友,在考慮優(yōu)化的時候先把api文檔里面的內(nèi)容爛熟與心,不然,這樣折騰下去,很浪費時間!

有細心的朋友可能會問:android:padding="10dp" 這個用來做什么了?

我先告訴大家,不用這個參數(shù):你將會看到:

 

image

 

用了以后:

 

image

 

這下大家能夠明白了吧?

所以,當你在進行布局的時候,如果碰到比較繁瑣的時候,你先想想會不會已經(jīng)API本身就有這樣的參數(shù)呢?

簡單是所有布局開始最重要的原則!

簡單意味著不容易出現(xiàn)兼容問題!

簡單意味著性能不錯!

2.模塊化布局

 

480x800_MarkMan

 

所謂,模塊化布局就是要你熟悉使用 這個標簽!

一個經(jīng)典的Tab類布局由三部分組成,我們可以根據(jù)這三部分創(chuàng)建三個可以重用的布局

head_menu.xml

content_showweibo.xml

bottom_menu.xml

然后我們可以很靈活的組合我們要顯示的,例如要完成上面的那個weibo布局

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:orientation="vertical"

>

 

熟練的使用標簽就可以大大的減少我們?nèi)蘸蠖季S護工作!

3.合并沒必要的節(jié)點

還記得我們一開始的那個項目嗎?

 

image

 

在高效布局里面,有一條準則就是,盡量的減少節(jié)點!!!!如圖,我們發(fā)現(xiàn),其實LinearLayout其實啥都沒干,我們卻耗費了那么一點性能去繪制了這么沒用的節(jié)點!

接下來,我們?yōu)榱讼麥邕@個節(jié)點,我們需要一個這么的標簽

修改咱們的代碼讓它,性能更好!

>

 

android:id="@+id/button1"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:background="@drawable/btn_headtita"

android:drawableLeft="@drawable/header_back"

android:gravity="center"

android:layout_gravity="center_vertical|center_horizontal"

android:padding="10dp"

android:text="@string/back"

android:textColor="#ffffff" />

 

打開hierarchyviewer 一看!

 

image

 

哦也!優(yōu)化了一個節(jié)點!并且顯示快了那么一點點...

5.總結(jié)

講了,這么一大堆東西,貌似,沒怎么如何去優(yōu)化?都是在說一些操作性的東西,其實,這世上沒有絕對的優(yōu)化方案,所謂的優(yōu)化方案都是基于一個最初的基本原則出發(fā),例如,內(nèi)存用得再少一點!那么如何才能將這內(nèi)存用得再少一點做的了,這樣就需要一些最基本的方法,關(guān)于布局這部分的基本方法,我在上面已經(jīng)很詳細的說了一遍了,當進行布局的時候你要牢記

1,盡量使用view自身的參數(shù)

2,減少一個布局的不必要節(jié)點

3,盡量重用一個布局文件

兼容問題呢?兼容問題出現(xiàn)的原因千奇百怪,沒有一套通用的法則!關(guān)于這點談一下自己的看法

1,減少復雜度,往往,兼容問題的出現(xiàn),就是布局太復雜了,例如,我舉的那個按鈕布局,本來一個View就能完成,你卻用了三個view完成,在使用的時候,出現(xiàn)問題的概念也大幅度提升!所以,布局以簡單為本,那樣兼容問題就可以盡量避免!

2,熟練使用工具,還記得hierarchyviewer 嗎?當出現(xiàn)兼容問題的時候,用這個軟件可以快速定位到錯誤位置!

順便說一下…

如果你覺得這篇文章幫到你…剛好你又有一個eoeandroid的賬號…那就去支持一下吧…

http://www.eoeandroid.com/thread-171427-1-1.html

【編輯推薦】

  1. Android已經(jīng)完全不受Google控制了
  2. MonoTouch與Mono for Android的第三方庫
  3. 美國智能手機使用比重超50% Android仍領(lǐng)先
責任編輯:冰凝兒 來源: 博客園
相關(guān)推薦

2014-07-29 15:23:06

Android

2013-09-17 10:17:39

Android布局

2022-12-08 16:02:39

數(shù)據(jù)架構(gòu)工具

2011-03-24 09:03:13

Android SDKAndroid

2011-05-27 16:57:13

Android widget

2009-07-16 17:22:56

JDBC數(shù)據(jù)庫編程

2011-06-27 14:29:06

2015-08-07 10:24:17

AndroidMaterialDes

2023-08-25 08:06:04

項目布局LazyRow?

2020-06-11 13:03:04

性能優(yōu)化緩存

2017-08-28 15:30:49

Android編碼器編碼

2009-12-31 15:21:48

Silverlight

2009-07-14 14:12:14

Javascript

2013-01-07 13:15:39

Android開發(fā)窗口背景視圖

2013-03-12 09:52:04

技術(shù)文檔技術(shù)反饋程序員

2021-06-17 07:08:19

Tapablewebpack JavaScript

2013-09-16 16:56:09

AndroidBitmap內(nèi)存優(yōu)化

2011-12-16 17:07:22

安全事件

2014-03-20 09:17:36

2017-03-20 18:03:51

點贊
收藏

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

日韩精品一区二区三区四区五区 | 久久综合狠狠| av软件在线观看| 欧美在线观看www| 亚洲欧美中文日韩在线v日本| 国产日韩1区| 国产精品一在线观看| 国产三级在线播放| 亚洲最新免费视频| 欧美最猛性xxxxx免费| 亚洲日本乱码在线观看| av在线不卡顿| 国产精品伦理| 久久99国产精品一区| 亚洲午夜久久久久久久| 成人黄色大片在线观看| 亚洲欧洲免费| 成人在线视频播放| 黄网免费入口| 亚洲欧美丝袜| 波多野结衣成人在线| 欧美四级电影网| 波多野结衣一区二区三区 | 日韩欧美一起| 色网址在线观看| 三年中文高清在线观看第6集 | 国产成人精品免费在线| 欧美成人亚洲| 久久.com| 老汉色影院首页| 久久久久久香蕉网| 亚洲欧美在线免费| 欧美日韩一区二区三区视频| 国产精品乡下勾搭老头1| 伊人精品视频| 欧美日韩有码| 国产免费永久在线观看| 日日摸天天爽天天爽视频| 欧美日韩亚洲综合一区二区三区激情在线 | 亚欧成人精品| 91在线观看污| 欧美韩国一区二区| 激情五月激情综合网| 视频一区国产视频| 欧美私人啪啪vps| 欧美日韩国产网站| 51精品视频| 成年女人的天堂在线| 成人eeuss影院在线观看| 国产精品久久久久永久免费看| 免费人成自慰网站| 天天综合中文字幕| 麻豆久久久9性大片| 日韩av电影在线播放| 国产午夜精品久久久| 伊人夜夜躁av伊人久久| 亚洲激情图片小说视频| 精品黑人一区二区三区久久| 国产精品丝袜久久久久久高清| 成人在色线视频在线观看免费大全| 拍真实国产伦偷精品| 国产精品亚洲综合在线观看| 偷拍自拍亚洲| 东方欧美亚洲色图在线| 欧美大片一区二区| 另类视频在线观看| 18岁网站在线观看| 偷拍视频一区二区三区| 日本在线不卡视频| 欧美性黄网官网| 91沈先生在线观看| 麻豆传媒在线免费| 久久成人免费网站| 精品福利二区三区| 国产女主播在线一区二区| 精品国内二区三区| 亚洲资源视频| 国产精品伊人| 国产精品国模大尺度视频| 久久免费福利视频| 视频在线观看你懂的| 亚洲永久字幕| 亚洲人永久免费| 欧美三级午夜理伦三级| 国产99久久久国产精品成人免费| 亚洲精品成人悠悠色影视| 成人妇女免费播放久久久| 国产传媒在线播放| 久久综合九色综合97婷婷| 国产精品成人国产乱一区| 国产精品99999| 国产一区二区精品久久| 97在线视频国产| 老司机午夜在线视频| 成人免费观看av| 91精品国产自产在线| 青草在线视频| 中文字幕va一区二区三区| 国产精品一 二 三| 日本高清久久| 欧美一区二区三区在线电影| 成人精品小视频| 久久97精品| 精品伦理精品一区| 理论视频在线观看| 久久久成人网| 日本亚洲欧洲色α| 狂野欧美性猛交xxxx| 7777精品伊人久久久大香线蕉经典版下载 | 日韩一区二区三区不卡视频| 日韩影院精彩在线| 999国产视频| 欧美日韩在线网站| 久久精品国产视频| 阿v天堂2017| 欧美日韩精品一区二区三区视频| 亚洲一区二区三区自拍| 免费在线观看亚洲视频| 国产亚洲高清视频| 亚洲综合成人婷婷小说| 精品国产日韩欧美| 欧美激情一区二区三区高清视频| 国产污视频在线播放| 色婷婷综合久久久中文一区二区| 97秋霞电影网| 亚洲欧美视频在线观看| 久久久99精品视频| 美女视频黄免费的久久| 精品无码久久久久久久动漫| 一区二区影视| 亚洲第一论坛sis| 亚洲欧美激情在线| 日本超碰在线观看| 成人精品高清在线| 最新av网址在线观看| 美美哒免费高清在线观看视频一区二区| 91久久久在线| 欧美亚洲不卡| 日韩不卡av| 国产精品一级在线| 亚欧无线一线二线三线区别| 久久婷婷一区二区三区| 国产一级不卡毛片| 国产精品美女久久久久久久| 免费黄色网页| 综合婷婷亚洲小说| 三上悠亚一区二区三区| 色香蕉成人二区免费| 污污视频在线看| 在线电影欧美日韩一区二区私密| 户外露出一区二区三区| 欧美精品免费播放| 美脚恋feet久草欧美| 亚洲国产成人精品久久| 丁香久久综合| 日产精品99久久久久久| 亚洲天堂一区二区三区四区| 日韩精品不卡一区二区| 亚洲精品久久久久久久久| 国产经典视频一区| 激情综合色综合久久综合| 国产精品ⅴa在线观看h| 婷婷亚洲精品| 精品国产凹凸成av人网站| 激情小视频在线| 色综合久久久网| 一区二区三区性视频| 亚洲图片欧美综合| 99reav在线| 在线观看免费亚洲| 操喷在线视频| 日韩欧美在线不卡| 成年网站在线免费观看| aa亚洲婷婷| 亚洲视频电影| 亚洲人xxxx| 天堂在线资源视频| 国产精品亚洲一区二区三区妖精 | 热99精品只有里视频精品| 德国一级在线视频| 久久综合中文| 97人人澡人人爽| 亚洲午夜激情在线| 国产999精品视频| 欧美欧美黄在线二区| 国产精品永久免费观看| 欧美一区激情| 久久艳妇乳肉豪妇荡乳av| 国产乱对白刺激视频不卡| 国产黄色免费在线观看| 亚洲情综合五月天| 综合在线一区| 四虎最新地址发布| 中文字幕亚洲在线| 中国女人久久久| 青青视频在线观| 欧美中文字幕在线视频| 91丝袜美腿高跟国产极品老师 | 欧美jizz19性欧美| 国内视频一区二区|