精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

高h震动喷水双性1v1| 男人在线观看视频| 日韩影片中文字幕| 亚洲同性同志一二三专区| 高清视频一区二区三区| 啦啦啦免费高清视频在线观看| av一区二区高清| 欧美大胆人体bbbb| 亚洲一区二区蜜桃| 色图在线观看| 中文字幕乱码亚洲精品一区| 高清视频一区| 国产精品欧美激情在线| 国产亚洲高清视频| 久久夜色精品国产欧美乱| 亚洲第九十七页| 日本一区精品视频| 欧美中文字幕一二三区视频| 国产精品入口芒果| 免费av不卡| 国产亲近乱来精品视频| 国产精品久久久久免费| 91av久久久| 久久亚洲美女| 97在线视频一区| 永久免费看黄网站| 欧美成人自拍| 亚洲热线99精品视频| 亚洲精品乱码久久久久久蜜桃欧美| 91伊人久久| 色综合久久久网| 青草青青在线视频| 影院在线观看全集免费观看| 国产精品三级电影| 日本一区视频在线观看免费| 亚洲欧美日韩成人在线| 成人免费毛片高清视频| 亚洲xxxx18| ,亚洲人成毛片在线播放| 免费在线观看成人| 国产精品露脸自拍| 无码人妻精品一区二区50| 国产精品毛片在线看| 欧美激情aaaa| 免费中文字幕在线观看| 欧美激情第10页| 久久天天躁夜夜躁狠狠躁2022| 国产精品麻豆免费版现看视频| 久久最新网址| 亚洲午夜av久久乱码| 成人精品在线观看视频| 婷婷综合电影| 日韩精品中文字| 日韩精品卡通动漫网站| 亚洲精品进入| 亚洲欧美日韩精品久久| 精品无码一区二区三区| 日韩av资源网| 亚洲精品网站在线播放gif| 欧美熟妇精品黑人巨大一二三区| 欧美男男freegayvideosroom| 亚洲第一中文字幕| 精品中文字幕在线播放| 五月综合久久| 国产一区二区三区18| 国产91丝袜美女在线播放| 人人狠狠综合久久亚洲婷| 日韩视频在线免费| 国产盗摄一区二区三区在线| 国产精品porn| 91高清视频免费| 91视频久久久| 国产老肥熟一区二区三区| 国产精品白丝jk白祙| 日韩有码电影| 国产精品福利一区| 69精品丰满人妻无码视频a片 | 尤物九九久久国产精品的分类| 国产真人做爰视频免费| 成人av二区| 欧美成人中文字幕在线| 国产微拍精品一区| 日韩电影免费在线观看网站| 91香蕉亚洲精品| 深爱激情五月婷婷| 日本一区二区成人| 国产精品免费看久久久无码| 爱情电影社保片一区| 欧美日韩不卡一区二区| jjzz黄色片| 国产亚洲一区二区三区啪| 久久九九免费视频| 久久精品一二区| 精品一二三四在线| 九九久久99| 毛片免费不卡| 精品久久久一区| 一区二区三区四区毛片| 日韩aaa久久蜜桃av| www.国产精品一二区| 日本一区二区欧美| 青青草国产精品97视觉盛宴 | 超碰在线97免费| 亚洲一区二区免费在线观看| 亚洲视频国产视频| 久久久久香蕉视频| 免费成人美女在线观看| 国产一区二区三区免费不卡| 欧美a在线看| 欧美小视频在线| 香蕉视频1024| 久久综合国产| 日韩av电影在线播放| 午夜精品一二三区| 亚洲欧洲性图库| 九热视频在线观看| 麻豆一区二区| 欧美日韩国产91| 中文字幕一区二区人妻痴汉电车| jlzzjlzz国产精品久久| 91精品一区二区三区四区| 日本欧美韩国| 亚洲欧美制服丝袜| 午夜精品三级久久久有码| 国产一区二区电影| 亚洲欧洲一区二区在线观看| 国产精品粉嫩| 亚洲精品白浆高清久久久久久| 男人操女人的视频网站| 美女网站在线免费欧美精品| 免费日韩av电影| 九色porny丨入口在线| 日韩精品一区二区在线| 手机在线免费看毛片| 麻豆精品新av中文字幕| 日韩中文字幕一区二区| 国产伦精品一区二区三区视频金莲| 亚洲成人精品视频在线观看| 久久久久久av无码免费网站| 国产乱对白刺激视频不卡| 国产精品波多野结衣| 欧美成人xxxx| www.欧美精品| 一区二区美女视频| 亚洲欧洲www| 久久人人爽av| 中文字幕av亚洲精品一部二部| 国产精品日韩欧美综合| av免费在线一区二区三区| 欧美在线观看一区| 欧美极品jizzhd欧美18| 精品一区二区久久久| 伊人久久青草| 精品一区二区三区中文字幕| 欧美成人激情图片网| 精品人妻一区二区三区四区不卡 | 一级特黄aa大片| 国产精品电影一区二区| 日本亚洲一区二区三区| 午夜精品剧场| 国产三级精品在线不卡| 男人av在线播放| 亚洲欧洲日产国产网站| 中文资源在线播放| 亚洲色欲色欲www| 国产伦精品一区二区三区妓女下载 | 国产欧美88| 欧美国产日韩一区二区| 天堂v在线观看| 91精品福利在线| 娇小11一12╳yⅹ╳毛片| 国产综合久久久久久鬼色| 免费的av在线| 日韩成人午夜| 国产精品视频一区二区高潮| 国产最新在线| 亚洲国产精品嫩草影院久久| 69视频免费看| 亚洲欧美一区二区久久| 国产二级一片内射视频播放| 另类国产ts人妖高潮视频| 一区二区三区四区欧美| 亚洲国产aⅴ精品一区二区| 8090成年在线看片午夜| 大胆av不用播放器在线播放| 欧美一三区三区四区免费在线看| 中文在线观看免费网站| 欧美国产欧美综合| 美女又黄又免费的视频| 欧美一级视频| 黄色一级片av| 欧美裸体在线版观看完整版| 91久久精品www人人做人人爽| 日韩脚交footjobhd| 久热99视频在线观看| 欧美zozo| 欧美xxx久久| 亚洲高清视频免费观看| 亚洲一区免费观看| 99精品全国免费观看| 高清shemale亚洲人妖| 亚洲福利精品视频| 怡红院精品视频在线观看极品| 先锋影音亚洲资源| 欧美日韩一区二区三区不卡视频| 成人乱人伦精品视频在线观看| 天堂8中文在线最新版在线| 超薄丝袜一区二区| 麻豆导航在线观看| 日韩av中文字幕在线| 国产麻豆精品一区| 在线国产电影不卡| 日韩毛片在线播放| 亚洲精品福利视频网站| 人人爽人人爽人人片| 99久久久免费精品国产一区二区| 亚欧美一区二区三区| 奇米色一区二区| 超碰网在线观看| 激情丁香综合| 欧美精品在欧美一区二区| 婷婷综合网站| 色之综合天天综合色天天棕色 | 亚洲黄色www| 国内老熟妇对白xxxxhd| 欧美人体做爰大胆视频| 日本一本在线观看| 欧美日韩加勒比精品一区| 精品视频久久久久| 一区二区三区四区激情| 久久久精品少妇| 亚洲国产成人私人影院tom| 野外性满足hd| 99国产精品久久久| av无码一区二区三区| 成人免费视频免费观看| 激情综合激情五月| 国产99精品国产| 亚洲精品无码一区二区| 国产专区综合网| 亚洲av无日韩毛片久久| 久久99久久久久久久久久久| 亚洲天堂2018av| 开心九九激情九九欧美日韩精美视频电影| 免费裸体美女网站| 全部av―极品视觉盛宴亚洲| 亚洲无吗一区二区三区| 蜜桃视频第一区免费观看| 一个色综合久久| 国内精品在线播放| a级大片免费看| 国产91精品露脸国语对白| 老司机av网站| 99国内精品久久| www在线观看免费视频| 国产欧美日韩在线看| 国产一区在线观看免费| 18成人在线观看| 真实国产乱子伦对白在线| 亚洲一区成人在线| 国产成人免费观看视频| 欧美性少妇18aaaa视频| 这里只有精品999| 在线播放中文字幕一区| www.com欧美| 亚洲加勒比久久88色综合| 精品久久久久一区二区三区 | 欧美日韩免费观看一区| 经典一区二区| 国产精品夜夜夜爽张柏芝| 在线欧美不卡| www.超碰com| 国产资源精品在线观看| 大尺度做爰床戏呻吟舒畅| 久久久美女艺术照精彩视频福利播放| youjizz亚洲女人| 伊人一区二区三区| 黄色一级片免费在线观看| 欧洲国产伦久久久久久久| av在线免费在线观看| 亚洲国产精品va| www.亚洲视频| 欧美极品少妇xxxxⅹ免费视频| 综合日韩av| 91影视免费在线观看| 日韩超碰人人爽人人做人人添| 一卡二卡3卡四卡高清精品视频| 国产精品magnet| 69久久久久久| 不卡视频在线看| 久久久久麻豆v国产| 午夜精品久久久久久久久| 这里只有精品国产| 亚洲国产成人久久| 欧美69xxxx| 日本久久久a级免费| 欧美经典影片视频网站| 日本成人三级| 狠狠88综合久久久久综合网| 一道本视频在线观看| 99精品在线观看视频| 永久免费看片视频教学| 欧美性猛交xxxx黑人| 国产 日韩 欧美 精品| 精品国产一区二区在线| 一区二区三区四区日本视频| 91黄色精品| 成人一区二区| 男人靠女人免费视频网站| 国产精品影视网| 亚洲黄色网址大全| 一本到三区不卡视频| 国产成人无码www免费视频播放| 中文字幕亚洲情99在线| 日韩av中字| 精品一区二区三区视频日产| 在线成人超碰| 四季av一区二区三区| 中文字幕不卡在线观看| 99久热在线精品996热是什么| 日韩欧美不卡一区| 麻豆tv在线| 国产日本欧美一区二区三区在线 | 欧美床上激情在线观看| 狠狠久久综合| 日韩精品另类天天更新| 国产一区二区三区的电影| 95视频在线观看| 一区二区三区中文字幕电影| 国产又黄又猛又爽| 中文字幕免费精品一区| 性欧美18一19sex性欧美| 久久久久久九九九九| 亚洲精品韩国| 国产 xxxx| 午夜精品123| 欧美 日韩 人妻 高清 中文| 免费91在线视频| 国产电影一区二区| 熟妇熟女乱妇乱女网站| 精品无码三级在线观看视频| 国产精品麻豆一区| 欧美高清精品3d| a级影片在线| av一本久道久久波多野结衣| 欧美三级免费| 亚洲激情 欧美| 精品久久久久久久久中文字幕 | 一区二区在线播放视频| 国产欧美日韩在线看| 亚洲最新av网站| 久久九九免费视频| 日韩中文字幕一区二区高清99| 欧美 日韩 国产精品| 成人美女在线观看| 日韩av在线电影| 亚洲欧洲午夜一线一品| 91大神在线观看线路一区| 亚洲一二三区在线| 国产伦精一区二区三区| 18精品爽视频在线观看| 日韩av一区在线观看| 性欧美1819sex性高清| 一区二区欧美日韩| 国产成人av电影在线观看| 日本一本高清视频| 亚洲欧美999| 日韩成人精品一区二区三区| 黄色录像特级片| 99麻豆久久久国产精品免费| 亚洲图片欧美日韩| 久久婷婷国产麻豆91天堂| 久久夜色电影| 一级在线免费视频| 亚洲另类在线制服丝袜| 天堂在线资源网| 国产精品aaa| 欧美一区免费| 黄色a一级视频| 欧美日韩国产综合一区二区三区| 在线黄色网页| 久久综合久久久| 国产一区二区三区免费在线观看| 久久精品视频9| 在线国产精品视频| 亚洲综合影院| 国产野外作爱视频播放| 亚洲午夜久久久久| av男人的天堂在线| 国产一区在线免费观看| 老司机精品视频在线| 日本亚洲欧美在线| 久久亚洲国产精品| 亚洲桃色综合影院| 亚洲综合在线一区二区| 欧美日韩亚洲一区二| 18+视频在线观看| 欧美午夜免费| 99国产精品久| 亚洲乱码在线观看|