亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

View的工作原理(二)

2019-11-09 18:42:55
字體:
來源:轉載
供稿:網友

測量會用到

一。MeasureSpec,它是一個32位的int型整數。

它由兩部分組成,分別是前三位的SpecMode(MeasureSpec & 0xc000 0000) 和后29位的SpecSize(MeasureSpec &0x3FFF FFFF)組成。之所以把他們合并成MeasureSpec是為了節省存儲空間。

   SpecMode:,表示測量的模式 有,有三種:

public static class MeasureSpec {    public static final int AT_MOST = -2147483648;    public static final int EXACTLY = 1073741824;    public static final int UNSPECIFIED = 0;

         1.EXACTLY (精確模式,SpecSize的值即是View的最終大小,對應LayoutParams的match_parent 和具體數值兩種模式)

         2.AT_MOST(最大模式,View的最終大小不能超過SpecSize, 對應LayoutParams的wrap_content)

         3.UNSPECIFIED(不對View的大小做限制)    

   SpecSize:表示測量模式下的尺寸大小

MeasureSpec類中提供以下方法分別獲得SpecMode和SpecSize

public static int getMode(int measureSpec){return (measureSpec & MODE_MASK);}
public static int getSize(int measureSpec){return (measureSpec & ~ MODE_MASK);}MeasureSpec類中提供以下方法獲得MeasureSpec

public static final int makeMeasureSpec(int size,int mode){if(sUseBrokenMakeMeasureSpec){return size + mode;}else{ return (size & ~MODE_MASK) | (mode & MODE_MASK);}}

二。DecorView 的Measure

childWidthMeasureSpec = getRootMeasureSpec(desiredWindowWidth,lp.width);//desireWindowWidth表示窗口childHeightMeasureSpec = getRootMeasureSpec(desiredWindowHeight,lp.height);//desireWindowHeight表示窗口高度performMeasure(childWidthMeasureSpec,childHeightMeasureSpec);由以上可知的:窗口的尺寸和自身的LayoutParams傳入getRootMeasureSpec方法后可得到DecorView的MeasureSpec
PRivate static int getRootMeasureSpec(int windowSize,int rootDimension){int measureSpec;case ViewGroup.LayoutParams.MATCH_PARENT:measureSpec = MeasureSpec.makeMeasureSpec(windowSize,MeasureSpec.EXACTLY);break;case ViewGroup.LayoutParams.WRAP_CONTENT:measureSpec = MeasureSpec.makeMeasureSpec(windowSize,MeasureSpec.AT_MOST);break;default:measureSpec = MeasureSpec.makeMeasureSpec(rootDimension,MeasureSpec.EXACTLY);break;}return measureSpec;}三。普通View的Measure

protected void measureChildWithMargins(View child,int parentWidthMeasureSpec,int widthUsed,int parentHeightMeasureSpec,int heightUsed){final MarginLayoutParams lp = (MarginLayoutParams)child.getLayoutParams;final int childWidthMeasureSpec = getChildMeasureSpec(parentWidthMeasureSpec,mPaddingLeft+mPaddingRight+lp.leftMargin+lp.rightMargin+widhUsed,lp.width);final int childHeightMeasureSpec = getChildMeasureSpec(parentHeightMeasureSpec,mPaddingTop+mPaddingBottom+lp.topMargin+lp.bottomMargin+heightUsed,lp.height);}child.measue(childWidthMeasureSpec ,childHeightMeasureSpec );由上可知:view的MeasureSpec的獲得和DecorView有些類似,具體指由父容器的MeasureSpec和子元素的LayoutParams決定getChildMeasureSpec的實現過程這里就不寫了,有興趣可以參看源碼,由該函數可得:1.如果子元素是具體值,如lp.width=100dp,則其SpecMode都是EXACTLY,SpecSize為1002.如果是LayoutParams.MATCH_PARENT = lp.width, 則SpecMode和父容器的MeasureSpec的SpecMode一致,SpecSize是父容器的剩余大小3.如果LayoutParams.WRAP_CONTENT = lp.width,則SpecMode都是AT_MOST,SpecSize是父容器的剩余大小                參考:Android開放藝術探索


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品一区二区久久久| 91欧美日韩一区| 国产精品久久不能| 色综合久综合久久综合久鬼88| 欧美日韩中国免费专区在线看| 一区二区三区动漫| 国产成人精彩在线视频九色| 色阁综合伊人av| 亚洲精品一区二区久| 中文字幕久热精品视频在线| 欧美日韩国产综合视频在线观看中文| 欧美日韩美女视频| 91香蕉国产在线观看| 欧美激情日韩图片| 日韩黄在线观看| 97精品国产97久久久久久春色| 国语对白做受69| 精品国产91久久久久久老师| 精品视频—区二区三区免费| 国产主播在线一区| 日韩一区二区久久久| 中文字幕欧美日韩va免费视频| 一区二区三区无码高清视频| 热草久综合在线| 国产成人精品久久二区二区91| 亚洲国产精品久久久久久| 久久久99免费视频| 国产日韩视频在线观看| 91精品国产高清久久久久久| 久久夜色精品国产亚洲aⅴ| 日韩69视频在线观看| 国产69精品久久久久99| 中文字幕日韩在线视频| 91精品视频在线看| 九九视频直播综合网| 国产精品1234| 色琪琪综合男人的天堂aⅴ视频| 日韩欧美在线国产| 理论片在线不卡免费观看| 久久69精品久久久久久国产越南| 正在播放国产一区| 国产精品久久久久久久一区探花| 欧美精品videos另类日本| 亚洲va男人天堂| 国产精品久久久久久久7电影| 最近的2019中文字幕免费一页| 久久久久日韩精品久久久男男| 久久久久久久91| 日本久久亚洲电影| 亚洲成人免费在线视频| 777国产偷窥盗摄精品视频| 亚洲japanese制服美女| 欧美成人精品一区二区三区| 亚洲午夜精品久久久久久久久久久久| 欧美激情中文字幕乱码免费| 日本精品一区二区三区在线播放视频| 亚洲淫片在线视频| 国产成人aa精品一区在线播放| 岛国av一区二区三区| 97久久伊人激情网| 国产成人小视频在线观看| 亚洲高清一二三区| 大伊人狠狠躁夜夜躁av一区| 欧美性20hd另类| 亚洲国产第一页| 中文字幕精品一区久久久久| 欧美电影免费在线观看| 国产亚洲欧洲高清一区| 亚洲一级黄色av| 亚洲一级免费视频| 91精品视频播放| 久久精品久久精品亚洲人| 2020久久国产精品| xxav国产精品美女主播| 性亚洲最疯狂xxxx高清| 亚洲精品中文字| 一区二区三区日韩在线| 亚洲福利视频免费观看| 久久天天躁狠狠躁夜夜爽蜜月| 国产成人欧美在线观看| 久久亚洲精品视频| 国产91精品黑色丝袜高跟鞋| 91精品国产91久久久久久不卡| 色综合视频网站| 亚洲精品一区久久久久久| 日韩精品丝袜在线| 中文字幕亚洲色图| 欧美一级黄色网| 欧美激情亚洲综合一区| 亚洲人成电影在线播放| 久久久久一本一区二区青青蜜月| 中文国产成人精品| 韩曰欧美视频免费观看| 亚洲一区二区三区四区在线播放| 午夜精品久久久久久久男人的天堂| 国产成人午夜视频网址| 久久av资源网站| xvideos亚洲人网站| 亚洲精品免费一区二区三区| 黑人狂躁日本妞一区二区三区| 国产成人91久久精品| 日韩欧美国产成人| 亚洲另类激情图| 欧美日韩免费一区| 久久91超碰青草是什么| 91综合免费在线| 欧美贵妇videos办公室| 国产精品一区二区久久| 国产中文字幕日韩| 色妞久久福利网| 欧美在线视频观看免费网站| 亚洲国产精品网站| 久久久999国产| 国产精品成人免费电影| 成人网在线免费观看| 亚洲欧洲国产伦综合| 青青青国产精品一区二区| 91高清免费在线观看| 日韩动漫免费观看电视剧高清| 国产经典一区二区| 91理论片午午论夜理片久久| 国产精品aaaa| 国产欧美日韩综合精品| 欧美成人中文字幕在线| 亚洲a区在线视频| 91精品视频免费观看| 国产精品丝袜一区二区三区| 日韩不卡在线观看| 亚洲一区中文字幕在线观看| 亚洲国产天堂网精品网站| 性欧美暴力猛交69hd| 欧美亚洲日本黄色| 国产男女猛烈无遮挡91| 亚洲国产精品99| 在线观看国产精品淫| 中文字幕亚洲欧美日韩在线不卡| 成人天堂噜噜噜| 2019中文在线观看| 精品在线观看国产| 亚洲新声在线观看| 欧美成人精品h版在线观看| 69av成年福利视频| 亚洲色图美腿丝袜| 亚洲欧美日韩第一区| 国产精品观看在线亚洲人成网| 亚洲成年网站在线观看| 91福利视频网| 91免费的视频在线播放| 日韩亚洲欧美中文高清在线| 国产精品久久av| 亚洲人午夜色婷婷| 欧美裸体xxxx| 国内精品视频久久| 亚洲午夜精品久久久久久性色| 国产精品美腿一区在线看| 91在线视频导航| 成人黄色影片在线| 欧美日韩美女在线观看| 国产精品一区二区三区毛片淫片| 中文字幕亚洲无线码a| 亚洲国内精品视频| 日韩欧美高清视频| 亚洲一区二区三区sesese| 欧美激情久久久久|