精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Android:一個高效的UI才是一個拉風的UI(一)

移動開發 Android
Android是一個運行在移動終端上的操作系統,跟傳統PC最大的不同所在就是移動終端的資源緊缺問題“比較”明顯,當然對于一些屌絲機型,應該用“非常“來形容才靠譜。所以經常會出現在一些比較缺乏青春活力的老型機上,運行一些軟件被異常終止的情況;然而作為互聯網廠家來說,廣大的屌絲機用戶肯定是一大筆用戶資源,這是能放棄的市場嗎?

開篇

Android是一個運行在移動終端上的操作系統,跟傳統PC最大的不同所在就是移動終端的資源緊缺問題“比較”明顯,當然對于一些屌絲機型,應該用“非常“來形容才靠譜。所以經常會出現在一些比較缺乏青春活力的老型機上,運行一些軟件被異常終止的情況;然而作為互聯網廠家來說,廣大的屌絲機用戶肯定是一大筆用戶資源,這是能放棄的市場嗎?!當然不行o(╯□╰)o,所以我們要盡可能得提高軟件的效率來贏取客戶的回眸一笑了,屌絲也是客戶!

這篇博客主要介紹如何在UI設計上提高效率,減少資源的利用,畢竟在終端資源短缺的今天,效率始終為王。我們評判一個UI界面不是認為有多復雜才給力,或者說有多炫才靠譜,一個簡約而又不平凡的高效UI界面才是一個灰常牛逼的界面設計。

引入

在android應用中,采用硬編碼方式編寫界面并不是一個提倡的方法。當然硬編碼編寫的界面比基于XML文件的軟編碼界面高效靈活一些,但是非常不容易維護,錯綜復雜的代碼更會讓程序埋雷重重,說不定哪天就把應用炸的慘不忍睹。所以如果非常必要非常肯定要采用代碼編寫硬編碼界面之外,其他情況還是采用易于維護的XML來編寫比較好。

所以文中對于UI優化設計歸結到底也就是對XML布局文件的優化設計。

在谷歌給我們的開發環境中,存在這么一個非常好用的工具——hierarchyviewer,估計很多人都沒搭理過這個藏在偏僻角落的小工具吧;它能非常容易的幫我們分析UI界面的結構和構造效率,這個工具的位置就在sdk/tools/文件夾。

樓下上圖:

大家好,我是圖~

這是分析的是一個布局上只有一個TextView組件的XML界面,圖告訴我們,構造這個界面總共用了四個組件,也就是需要繪制四次組件,自然每一次繪制組件都需要耗費資源。

下面步入狂拽酷炫吊炸天的主題部分。。。。

盡量用最少的步驟完成布局

我是社會好青年,我為國家省資源;當然作為組件來說也需要這個覺悟,每個組件的繪制都會多多少少耗費終端的資源。所以我們在這里可不能聽老祖宗的話:韓信點兵多多益善了,精兵簡政才是UI設計的唯一出路。不相信?行!下面就開始給個對比的例子。

[[121125]]

這不簡單嗎?幾行代碼不是分分鐘的事情嗎?

  1. <RelativeLayout 
  2.     android:layout_width="wrap_content" 
  3.     android:layout_height="wrap_content" 
  4.     android:gravity="center" > 
  5.     <Button 
  6.         android:id="@+id/button1" 
  7.         android:layout_width="wrap_content" 
  8.         android:layout_height="wrap_content" 
  9.         android:background="@drawable/btn_backgroup" 
  10.          /> 
  11.     <ImageView 
  12.         android:id="@+id/imageView1" 
  13.         android:layout_width="wrap_content" 
  14.         android:layout_height="wrap_content" 
  15.         android:layout_alignParentLeft="true" 
  16.         android:layout_centerVertical="true" 
  17.         android:src="@drawable/header_back" /> 
  18. </RelativeLayout> 

也別急著看代碼,多累多傷眼睛呀,直接上個hierarchyviewer里面的圖來瞧瞧唄

一個小小的按鈕就用了3個組件來繪制,這就是3N的復雜度了呀,如果有5個這樣的按鈕就要15個組件,如果有10個按鈕就要有30個,如果有N++個,哎 呀媽的,不敢想象下去了。既然這樣,我們是不是應該考慮一下優化優化,翻翻資料我們發現原來是可以不用這么多組件來實現的這個按鈕的。

  1. Button 
  2.     android:id="@+id/button1" 
  3.     android:layout_width="wrap_content" 
  4.     android:layout_height="wrap_content" 
  5.     android:background="@drawable/btn_backgroup" 
  6.     android:drawableLeft="@drawable/header_back" 
  7.     android:gravity="center" 
  8.     android:padding="10dp" 
  9.     />

還是原來的按鈕,還是原來的味道,復雜度從3N降低到N!!!你敢說這樣的效率你不想去提升????

小結一個:在我們設計UI布局時,應該從使用盡量少的組件的前提下入手,由于系統組件的封裝比較完善,把多個簡單的組件交由一個復雜一點的組件來實現,是可以得到比較好的效率的。因為每個組件都得需要獨自進行繪制過程,多個組件繪制浪費的資源不僅僅謀害了我們的應用,更深深打擊了用不起高端機的屌絲用戶的自尊心——”他媽的,這軟件又不能用!“。

你不干活?把你辭了。

我們還記剛開始給的一個圖嗎?我們在布局中使用的到僅僅是一個TextView,而RelativeLayout貌似啥子活兒都沒干的樣子。。。。。。

我們從來都不提倡吃空餉不干活,軟件界的潛規則也是這樣的。出于構建和諧社會的正義感,我們當然不能坐視RelativeLayout這種站著茅坑不拉屎的流氓行為,所以我們就需要借助一個解決措施——<merge>標簽,它能幫我們干掉一些不需要的根節點。為了擁有更好的即視感,所以我用了一個更為復雜點的布局(其實一點都不復雜)、、

主布局XML文件:

  1. <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
  2.     android:id="@+id/layout1" 
  3.     android:layout_width="match_parent" 
  4.     android:layout_height="match_parent" 
  5.     > 
  6.     <ImageView android:id="@+id/image1" 
  7.         android:layout_width="match_parent" 
  8.         android:layout_height="wrap_content" 
  9.         android:src="@drawable/bg" 
  10.         /> 
  11.     <com.net168.text.MyLayout  
  12.         android:id="@+id/layout2" 
  13.         android:layout_width="match_parent" 
  14.         android:layout_height="match_parent" 
  15.         > 
  16.     </com.net168.text.MyLayout> 
  17. </FrameLayout> 

組合控件布局XML文件:

  1. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
  2.     android:layout_width="wrap_content" 
  3.     android:layout_height="wrap_content" 
  4.     android:orientation="horizontal" 
  5.     > 
  6.     <Button android:id="@+id/button2" 
  7.         android:layout_width="wrap_content" 
  8.         android:layout_height="wrap_content" 
  9.         android:text="button2" 
  10.         /> 
  11.     <TextView android:id="@+id/text1" 
  12.         android:layout_width="wrap_content" 
  13.         android:layout_height="wrap_content" 
  14.         android:text="text1" 
  15.         android:textColor="#ff0000" 
  16.         /> 
  17. </LinearLayout> 

這個界面很丑的,不忍直視:

丑歸丑,我們還是需要繼續用神器hierarchyviewer看看這個XML生成的界面結構圖來探索一下丑女內心豐富多彩的世界~~~~~~~

我靠。。。。三個組件的布局竟然用了六層嵌套布局,瞬間有了一種大花姑娘嫁給老光棍的一種深深的浪費感。我們開始看圖說話,第一層和第二層的組件是系統都會自動生成的,這個是板上釘釘沒法商量的事情,除非你去底層跟他們好好談談。但是~但是這個第三層的FrameLayout和第五層的LinearLayout完完全全是在自我秀存在感而已,所以我們要狠下心做掉他們,怎么來呢?用<merge>標簽。

由于<merge>標簽只能作為根元素,所以我們可以將這兩個根元素都稍加修改,如下:

主布局XML文件:

  1. <merge xmlns:android="http://schemas.android.com/apk/res/android" 
  2.     android:id="@+id/layout1" 
  3.     android:layout_width="match_parent" 
  4.     android:layout_height="match_parent" 
  5.     > 
  6.     <ImageView android:id="@+id/image1" 
  7.         android:layout_width="match_parent" 
  8.         android:layout_height="wrap_content" 
  9.         android:src="@drawable/bg" 
  10.         /> 
  11.     <com.net168.text.MyLayout  
  12.         android:id="@+id/layout2" 
  13.         android:layout_width="match_parent" 
  14.         android:layout_height="match_parent" 
  15.         > 
  16.     </com.net168.text.MyLayout> 
  17. </merge> 

組合控件布局XML文件:

  1. <merge xmlns:android="http://schemas.android.com/apk/res/android" 
  2.     android:layout_width="wrap_content" 
  3.     android:layout_height="wrap_content" 
  4.     > 
  5.     <Button android:id="@+id/button2" 
  6.         android:layout_width="wrap_content" 
  7.         android:layout_height="wrap_content" 
  8.         android:text="button2" 
  9.         /> 
  10.     <TextView android:id="@+id/text1" 
  11.         android:layout_width="wrap_content" 
  12.         android:layout_height="wrap_content" 
  13.         android:text="text1" 
  14.         android:textColor="#ff0000" 
  15.         /> 
  16. </merge> 

PS:注意需要在組合控件的類中加上一句setOrientation(LinearLayout.HORIZONTAL)來保證自組件的水平排列。

繼續用神器看看結構:

呼呼呼~~是不是從六層降低到了四層結構,好一股小清新的感覺呀,我都感覺飄飄然了,自然效率的提升是毋容置疑滴。。。。。

小結一個:<merge>標簽能百分百代替<FrameLayout>這個布局組件,對于不復雜的其他布局組件如線性布局等組合組件中,可以在繼承子類中對其屬性進行設置后也可以使用<merge>標簽,<merge>標簽不占資源,自然在生成界面時也不會生成對應的組件另外需要注意一點是<merge>只能作為根元素,對于需要用inflate生成布局文件時,必須指定一個ViewGroup作為其父元素,并且要設置inflate的attachToRoot參數為true。(參照inflate(int, ViewGroup, boolean))。

本文鏈接:http://www.cnblogs.com/net168/archive/2014/10/09/4004950.html

責任編輯:chenqingxiang 來源: cnblogs
相關推薦

2014-10-14 10:01:10

UIAndroid

2020-04-17 10:58:12

UI設計師按鈕

2016-10-20 19:27:00

開源項目bootstrapcss框架

2021-01-19 13:10:29

ZshLinuxUbuntu

2017-09-15 15:13:33

效果設備UI

2016-09-26 17:26:20

2016-05-18 15:13:49

快碼CTO互聯網創業

2013-10-18 10:10:23

2012-05-28 15:31:57

App-UI

2014-07-17 15:38:43

UI設計師移動端

2023-01-03 12:30:25

架構CPUGPU

2013-03-04 16:45:49

2024-11-29 12:51:18

2024-04-10 12:39:08

機器學習python

2022-04-28 09:05:41

網絡爬蟲Python

2024-02-07 08:52:07

VueUI 庫Vue.js

2013-02-22 18:37:50

容錯服務器

2016-03-01 14:37:47

華為

2023-01-12 08:47:26

二項式楊輝斐波那契

2022-02-10 10:48:23

JavaScriptVue.js數據
點贊
收藏

51CTO技術棧公眾號

亚洲成av人在线观看| 精东粉嫩av免费一区二区三区| 亚洲精品一区二区三区影院| 黄色大片在线免费看| 天堂中文在线看| 国产欧美短视频| 国产一区二区三区在线观看网站| 成年人视频观看| 69av在线| 成人免费视频免费观看| 欧美亚洲国产日本| 亚洲区一区二区三| 国产日韩三级| 欧美性极品少妇| 国产午夜精品视频一区二区三区| 内射无码专区久久亚洲| 久久久成人网| 欧美精品激情视频| 亚洲性猛交xxxx乱大交| 日韩视频一二区| 色老头久久综合| 日韩国产成人无码av毛片| 国产精品一区二区婷婷| 成人免费的视频| 成人国产在线激情| 九九精品免费视频| 欧美日韩一区二区国产| 日韩精品高清在线| 岛国大片在线免费观看| 日本一区免费网站| 欧美日韩综合视频| 91亚洲精品国产| 乱人伦中文视频在线| 不卡视频免费播放| 91久久久久久久久久久| 亚洲国产成人精品女人久久| 亚洲性图久久| 美女久久久久久久| 亚洲毛片亚洲毛片亚洲毛片| 日日狠狠久久偷偷综合色| 日韩欧美国产一区二区三区| 久久久久久久久久久久91| 美女高潮在线观看| 亚洲观看高清完整版在线观看 | av一级亚洲| 在线播放中文一区| 免费看黄色一级大片| 午夜影视一区二区三区| 亚洲成人av一区| 国产精品88久久久久久妇女| 8888四色奇米在线观看| 久久精品一区蜜桃臀影院| 精品免费日产一区一区三区免费| 亚洲第一黄色片| 国产在线日韩欧美| 成人激情在线观看| 亚洲一区在线观| 精品一区二区在线播放| 91精品久久久久久久久久| 亚洲婷婷久久综合| 日韩精品国产欧美| 国产成人一区三区| 日韩黄色一级视频| 天堂成人免费av电影一区| 日本亚洲欧美三级| 中文字幕在线观看视频免费| 丝袜国产日韩另类美女| 日本精品久久久| 伦av综合一区| 日韩av一级片| 国产精品一香蕉国产线看观看| а中文在线天堂| 蜜桃精品视频在线观看| 国产综合香蕉五月婷在线| 国产精品国产三级国产普通话对白| 日韩av在线免费观看不卡| 国产精品男人爽免费视频1| 瑟瑟视频在线免费观看| 精品无人区卡一卡二卡三乱码免费卡 | 欧美精品日韩一本| 在线播放黄色av| 草草视频在线一区二区| 亚洲国产成人精品久久久国产成人一区| 亚洲一二三四五| 色婷婷av一区二区三区丝袜美腿| 亚洲欧美日韩国产中文专区| 91资源在线播放| 911久久香蕉国产线看观看| 九九久久久久99精品| 日韩欧美三级在线观看| 日韩精品一二三四| 亚洲va男人天堂| 神马午夜精品95| 中文久久乱码一区二区| 可以在线看黄的网站| free性护士videos欧美| 色综合久久综合| 中文字幕线观看| 色婷婷狠狠五月综合天色拍| 最近2019中文字幕第三页视频| 2018天天弄| 鲁大师影院一区二区三区| 成人h视频在线观看播放| 粉嫩小泬无遮挡久久久久久| 久久精品在线观看| 国产精品久久久久久久久电影网| 中文在线免费二区三区| 91精品久久久久久蜜臀| 一起草在线视频| 天天操综合网| 欧美在线视频观看免费网站| 91成人国产综合久久精品| 懂色av一区二区在线播放| 日韩av在线一区二区三区| 主播国产精品| 欧美中文字幕亚洲一区二区va在线| 99精品视频免费版的特色功能| 三级精品视频| 欧美激情一区二区三区在线视频观看| 国产成人a v| 不卡电影免费在线播放一区| 亚洲日本japanese丝袜| 天堂av中文在线观看| 欧美一级久久久久久久大片| 蜜桃无码一区二区三区| 亚洲一级高清| 91久久国产自产拍夜夜嗨| 1024视频在线| 色综合久久久网| 国产精品成人99一区无码| 亚洲区综合中文字幕日日| 日韩av大片免费看| 五月天婷婷社区| 一级女性全黄久久生活片免费| 狠狠躁狠狠躁视频专区| 天堂99x99es久久精品免费| 欧美激情视频在线观看| 中文字幕自拍偷拍| 欧美激情综合在线| 国产精品欧美激情在线观看| 国产精品极品在线观看| 欧美精品制服第一页| 一卡二卡在线观看| 欧美国产精品一区二区| 韩国一区二区av| 日本妇女一区| 91a在线视频| 婷婷av一区二区三区| 亚洲综合久久av| avtt中文字幕| 在线精品在线| 国产欧美日本在线| 黄色在线免费观看网站| 精品99久久久久久| 国产第一页在线播放| 成人午夜激情影院| 日本午夜激情视频| 欧美中文一区| 欧美最近摘花xxxx摘花| 你懂的在线看| 一本大道av一区二区在线播放| 少妇真人直播免费视频| 日韩激情av在线| 亚洲精品一区二区三| 久久久久毛片| 九九久久久久久久久激情| 亚洲精品一区二区口爆| 精品久久久久久久久久久久久| 国产欧美在线看| 天堂在线中文字幕| 91激情五月电影| 女人黄色一级片| 极品少妇xxxx精品少妇偷拍| 成人一区二区av| 成人搞黄视频| 日韩男女性生活视频| 伊人在线视频| 日韩欧美国产成人一区二区| 国产手机在线视频| 国产欧美日韩精品在线| 日韩视频在线观看一区二区三区| 国产精品va| 久久综合伊人77777麻豆| 午夜av成人| 久久精品中文字幕电影| 后入内射欧美99二区视频| 日韩欧美在线视频| av在线播放中文字幕| 久久99国产精品尤物| 浴室偷拍美女洗澡456在线| 久久wwww| 国内精品国产三级国产在线专| 日本福利片高清在线观看| 91成人国产精品| 中文字幕乱码av| 成人一级片网址| 午夜视频你懂的| 欧美一区免费| 久久久久久久久一区| 深夜视频一区二区| 欧美激情图片区| 日av在线播放| 欧美精品一二三| 久草精品视频在线观看| 国产欧美日韩麻豆91| 色男人天堂av| 欧美一区久久| 日韩欧美国产二区| 韩国三级大全久久网站| 欧美国产视频一区二区| h网站视频在线观看| 日韩一级免费观看| 黄色在线免费观看| 国产精品视频麻豆| 中文字幕乱码一区| 免费高清不卡av| 性欧美大战久久久久久久| 成人久久综合| 欧美欧美一区二区| 日韩高清在线观看一区二区| 日本sm极度另类视频| gogogo高清在线观看免费完整版| 亚洲精品一区二区三区99| 天天干天天插天天射| 亚欧色一区w666天堂| 日韩人妻无码精品综合区| 成人h动漫精品一区二区| 欧美日韩亚洲自拍| 国产一区二区三区久久久久久久久| 黑人巨大国产9丨视频| 国产欧美一区| 国产成人精品福利一区二区三区| 国产成人午夜性a一级毛片| 欧美亚洲国产视频小说| 色女人在线视频| 色yeye香蕉凹凸一区二区av| 三级av在线| 亚洲精品国产精品久久清纯直播 | 婷婷在线免费观看| 制服丝袜成人动漫| 你懂的国产在线| 一区二区欧美精品| 制服丨自拍丨欧美丨动漫丨| 久久久亚洲精品石原莉奈| 国产 xxxx| 国产成人精品亚洲午夜麻豆| 亚洲人视频在线| 捆绑调教一区二区三区| 91蝌蚪视频在线观看| 国产日韩欧美一区二区三区在线观看| 久久久久久www| 一区二区日韩欧美| 欧美在线视频二区| 中文字幕av一区二区三区人| 国产精品日韩二区| 91丨精品丨国产| 国产精品专区一| 亚洲精品555| 国产精品一区电影| 黄色成人在线视频| 国产精品成久久久久三级| 成人午夜sm精品久久久久久久| 欧美最顶级丰满的aⅴ艳星| 男人的天堂免费在线视频| 久久人人爽国产| 国产美女精品写真福利视频| 97免费在线视频| 久草在线资源福利站| 国外色69视频在线观看| av伦理在线| 97香蕉超级碰碰久久免费软件| 俺来俺也去www色在线观看| 欧美尤物巨大精品爽| 欧美电影网址| 国产精品久久久久9999| 91精品福利观看| 97av影视网在线观看| 秋霞影院一区| 国产乱码精品一区二区三区中文 | 日本一区二区在线免费观看| 不卡电影一区二区三区| 精品无码在线视频| 欧美国产精品一区| 欧美三级黄色大片| 洋洋av久久久久久久一区| 亚州国产精品视频| 色综合天天性综合| 波多野结衣高清视频| 欧美日本一区二区在线观看| 国产精品免费无遮挡| 日韩午夜电影av| 精品三级久久久久久久电影聊斋| 一本色道久久88综合日韩精品| 一本一道波多野毛片中文在线| 精品国产一区二区三区久久久| 中文字幕在线观看网站| 91sa在线看| 欧美爱爱视频| 精品国产乱码久久久久| 欧美裸体在线版观看完整版| 中文字幕在线观看一区二区三区| 在线精品一区二区| 无人在线观看的免费高清视频| 韩国视频一区二区| 四虎永久免费观看| 国产欧美日韩综合精品一区二区| 熟女少妇a性色生活片毛片| 亚洲国产婷婷综合在线精品| 特级西西444www高清大视频| 欧美成人高清电影在线| 日韩欧美在线观看一区二区| 久久99亚洲精品| 桃子视频成人app| 爱情岛论坛亚洲入口| 欧美丰满老妇| 美女av免费在线观看| 国产综合成人久久大片91| 久久综合桃花网| 国产精品乱人伦| 青青草av在线播放| 69av一区二区三区| 国产成人天天5g影院在线观看| 久久综合久久八八| 性欧美18xxxhd| 国产日韩欧美亚洲一区| 99久久婷婷国产综合精品电影√| 成年人午夜视频在线观看| 粉嫩在线一区二区三区视频| 粉嫩精品久久99综合一区| 亚洲成年人影院| 国产毛片毛片毛片毛片| 一区二区三区国产视频| 污污的网站在线看| 91久久久国产精品| 色999日韩| 缅甸午夜性猛交xxxx| 国产成a人无v码亚洲福利| 久久av红桃一区二区禁漫| 一本久久a久久精品亚洲| 日韩中文字幕观看| 欧美激情区在线播放| 91成人app| 强伦女教师2:伦理在线观看| 日韩高清一区在线| 男女黄床上色视频| 午夜婷婷国产麻豆精品| 精品人妻午夜一区二区三区四区 | 欧美色图免费看| 深夜福利视频在线免费观看| 久久久久久伊人| 风间由美一区二区av101| 国产又粗又长又爽视频| 精品一区二区三区日韩| 侵犯稚嫩小箩莉h文系列小说| 欧美午夜一区二区| 国产日本在线| 国产欧美精品一区二区| 日本电影一区二区| 欧美日韩亚洲自拍| 亚洲欧美国产77777| 国产一区二区三区在线观看| 在线观看日韩欧美| 亚洲精品777| 久久久久久久免费视频| 久久国产麻豆精品| 日本黄色片免费观看| 91精品国产aⅴ一区二区| 亚洲搞黄视频| 91人成网站www| 午夜久久美女| 无码人妻丰满熟妇区毛片蜜桃精品 | 男插女视频网站| 精品久久久久久久久久久| 欧美扣逼视频| 国产精品福利片| 91精品电影| 中文字幕制服丝袜| 亚洲一二三区视频在线观看| 亚洲日本中文字幕在线| 日本久久亚洲电影| 久久99国产精品视频| 天天操狠狠操夜夜操| 亚洲人成人一区二区在线观看| 亚洲乱码在线观看| 91精品国产高清久久久久久91| 天堂在线精品| www,av在线| 性欧美疯狂xxxxbbbb| 日韩黄色影片| 91亚洲国产成人久久精品网站| 欧美久久成人| 一区二区三区免费在线观看视频| 欧美日韩日日骚| 日本最新在线视频| 国产精品视频入口| 丝袜亚洲另类欧美综合| www深夜成人a√在线| 亚洲精品国产精品国产自| 国产精品一区二区免费福利视频| 国产在线播放观看|