中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當前位置: 首頁 > news >正文

展廳設(shè)計用什么軟件sem與seo的區(qū)別

展廳設(shè)計用什么軟件,sem與seo的區(qū)別,哪個網(wǎng)站能買到做披薩的芝士正宗,個人主題網(wǎng)站設(shè)計1. 過渡繪制 屏幕上某一像素點在一幀中被重復繪制多次,就是過渡繪制。 下圖中多個卡片跌在一起,但是只有第一個卡片是完全可見的。背后的卡片只有部分可見。但是Android系統(tǒng)在繪制時會將下層的卡片進行繪制,接著再將上層的卡片進行繪制。但其…

1. 過渡繪制

屏幕上某一像素點在一幀中被重復繪制多次,就是過渡繪制。
下圖中多個卡片跌在一起,但是只有第一個卡片是完全可見的。背后的卡片只有部分可見。但是Android系統(tǒng)在繪制時會將下層的卡片進行繪制,接著再將上層的卡片進行繪制。但其實,下層卡片不可見的部分是不需要進行繪制的,只有可見部分才需要進行繪制。

依據(jù)過渡繪制的層度可以分成:

  • 無過渡繪制(一個像素只被繪制了一次)
  • 過渡繪制x1(一個像素被繪制了兩次)
  • 過渡繪制x2(一個像素被繪制了三次)
  • 過渡繪制x3(一個像素被繪制了四次)
  • 過渡繪制x4+(一個像素被繪制了五次以上)

2. 查看自己應用的過渡繪制情況

方法一:通過開發(fā)者選項開啟GPU過渡繪制調(diào)試

Android手機的開發(fā)者選項中有『調(diào)試 GPU 過度繪制』的選項:

點開后后選擇『顯示過渡繪制區(qū)域』:

方法二:通過adb命令開啟GPU過渡繪制調(diào)試

當然,如果每次都進入系統(tǒng)設(shè)置嫌麻煩,可以使用adb命令進行開啟和關(guān)閉:
開啟『調(diào)試 GPU 過度繪制』:

adb shell setprop debug.hwui.overdraw show

關(guān)閉『調(diào)試 GPU 過度繪制』:

adb shell setprop debug.hwui.overdraw false

執(zhí)行命令之后可能需要重新啟動你當前開發(fā)的應用。

顏色與過渡繪制:

  • 原色:沒有過度繪制
  • 藍色:1 次過度繪制
  • 綠色:2 次過度繪制
  • 粉色:3 次過度繪制
  • 紅色:4 次及以上過度繪制

在平時的開發(fā)中,如果出現(xiàn)粉色及以上的過渡繪制情況。說明過渡繪制以及很嚴重了。需要進行優(yōu)化。

3. 優(yōu)化過渡繪制

1. 去除Activity自帶的默認背景顏色:

查看Android源碼里的Theme主題,如下:

<style name="Theme">...<!-- Window attributes --><item name="windowBackground">@drawable/screen_background_selector_dark</item>...
</style>

也就是說繼承Theme這個style的風格,默認情況下,新建一個Activity都是有背景的。正常情況下,很多界面其實是不需要背景的。

下面是華為自帶天氣APP的首頁,我們可以看到文字部分以及圖標部分都是綠色,說面已經(jīng)是第三層過渡繪制了,其中背后天氣圖是一層,文字又是一層,正常來說應該只有兩層,也就是文字和圖標應該是藍色。

那么這多出來的一層應該就是Activity自帶的背景色了。也就是theme里面設(shè)置的。

我們只要在自己的AppTheme里面去除該背景色即可:

<style name="AppTheme" parent="android:Theme.Light.NoTitleBar"><item name="android:windowBackground">@null</item>
</style>

或者在Activity的onCreate方法中:

getWindow().setBackgroundDrawable(null);

2. 使用Canvas的clipRect和clipPath方法限制View的繪制區(qū)域

一個Activity對應有一個Canvas,也就是畫布,畫布的概念就是一個畫板,這個畫布提供了很多的API,我們可以通過調(diào)用畫布的API來繪圖以及對畫布做一些操作,clipRect方法用來裁切畫布上的一個矩形區(qū)域,該矩形區(qū)域用Rect對象來描述。調(diào)用了clipRect之后,畫布的可繪制區(qū)域減小到和Rect指定的矩形區(qū)域一樣大小。所有的繪制將限制在該矩形范圍之內(nèi)。這里的裁切概念和PS里的裁切類似。

典型的例子,抽屜布局,找了網(wǎng)易云音樂開刀:

image.png

注意觀察左側(cè)抽屜打開的時候,抽屜布局和背后布局重疊在一起了,此時整個屏幕一多半都變成了紅色,過渡繪制嚴重。

在抽屜布局彈出時,抽屜布局是不透明的,也就是說抽屜布局背后擋住的內(nèi)容布局是不需要繪制的,而網(wǎng)易云進行了繪制,導致抽屜布局所在區(qū)域的像素點繪制了多次。

google官方在android.support.v4.widget包下有DrawerLayout.Java類。使用來實現(xiàn)抽屜布局的。該類在重寫了drawChild方法:

@Override
protected boolean drawChild(Canvas canvas, View child, long drawingTime) {final int height = getHeight();// 判斷是否是內(nèi)容視圖final boolean drawingContent = isContentView(child);int clipLeft = 0, clipRight = getWidth();// 記錄當前畫布信息final int restoreCount = canvas.save();if (drawingContent) {// 只有在繪制內(nèi)容視圖時才進行裁切final int childCount = getChildCount();for (int i = 0; i < childCount; i++) {final View v = getChildAt(i);if (v == child || v.getVisibility() != VISIBLE ||!hasOpaqueBackground(v) || !isDrawerView(v) ||v.getHeight() < height) {// 如果child是內(nèi)容視圖/視圖不可見/視圖背景透明/不是抽屜視圖/child高度小于父布局高度// 則不做畫布裁切continue;}if (checkDrawerViewAbsoluteGravity(v, Gravity.LEFT)) {// 盒子在左側(cè)時裁切的left和rightfinal int vright = v.getRight();if (vright > clipLeft) clipLeft = vright;} else {// 盒子在右側(cè)時裁切的的left和rightfinal int vleft = v.getLeft();if (vleft < clipRight) clipRight = vleft;}}// 裁切畫布canvas.clipRect(clipLeft, 0, clipRight, getHeight());}// 繪制子視圖final boolean result = super.drawChild(canvas, child, drawingTime);// 回復到裁切之前的畫布canvas.restoreToCount(restoreCount);
}

drawChild方法在ViewGroup類的dispatchDraw方法內(nèi)被調(diào)用,用來繪制子視圖,DrawerLayout類通過重寫該方法,因為在所有孩子視圖繪制之前都會調(diào)用drawChild方法,但是這里只需要對內(nèi)容區(qū)域視圖做裁切,當繪制內(nèi)容區(qū)域視圖時,取得抽屜視圖的位置信息,如果抽屜視圖可見、背景為不透明、抽屜高度和父布局高度一致時,取得抽屜視圖左、上、右、下邊緣在canvas中的位置信息。接著進行裁切,將內(nèi)容視圖未被擋住的部分區(qū)域裁切出來,并把裁切完的canvas交由子View進行繪制,這樣,內(nèi)容區(qū)域只有在裁切后的區(qū)域才會繪制,其他區(qū)域不進行繪制。

待子View繪制完之后,恢復Canvas到裁切之前的狀態(tài),因為一個Window下的所有View都使用的是同一個Canvas,所以需要恢復狀態(tài)給其他子View使用。

下面看一個系統(tǒng)里的“下載”APP,使用的是DrawerLayout實現(xiàn):

應用中雖然內(nèi)容區(qū)域是紅色,但是抽屜視圖拉出來之后,抽屜視圖的過渡繪制情況卻比內(nèi)容區(qū)域未被擋住的部分少。

3. ImageView的background和imageDrawable重疊

Android中,所有的view均可以設(shè)置background。ImageView除了能夠設(shè)置background之外,還能設(shè)置ImageDrawable。

在開發(fā)中,很多時候需要顯示圖片,在圖片加載出來之前通常是需要顯示一張默認圖片的,很多時候會使用ImageView的background屬性來設(shè)置默認背景圖,而imageDrawable來設(shè)置需要加載的圖片。這樣會導致一個問題,當圖片加載到頁面后,默認背景圖被擋住了,但是卻任然需要繪制,導致過渡繪制情況的發(fā)生。

解決方案是把背景圖和真正加載的圖片都通過imageDrawable方法進行設(shè)置。

4. 總結(jié)

  • Android中一個window對應一個Canvas,window下的所有視圖(View/ViewGroup)使用的都是同一個canvas,視圖樹的父節(jié)點在調(diào)用子視圖的View.draw之前,會對Canvas進行裁切,裁切的區(qū)域就是View在屏幕中所占的矩形區(qū)域,這也就是為什么超過View邊界的內(nèi)容會被裁切掉的原因。

  • 既然過渡繪制值一個像素點被繪制多次,我們只要保證圖片或者背景顏色不要疊加在一起即可。正確的方式應該是盡量減少帶背景的View產(chǎn)生重疊區(qū)域。如果重疊,使用canvas的clipRect進行裁切。

  • 盡量減少視圖的深度,來減少視圖樹的遍歷過程。

最后

最后我想說:對于程序員來說,要學習的知識內(nèi)容、技術(shù)有太多太多,要想不被環(huán)境淘汰就只有不斷提升自己,從來都是我們?nèi)ミm應環(huán)境,而不是環(huán)境來適應我們!

為了幫助到大家更好的全面清晰的掌握好性能優(yōu)化,準備了相關(guān)的核心筆記(還該底層邏輯):https://qr18.cn/FVlo89

性能優(yōu)化核心筆記:https://qr18.cn/FVlo89

啟動優(yōu)化

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

UI優(yōu)化

網(wǎng)絡(luò)優(yōu)化

Bitmap優(yōu)化與圖片壓縮優(yōu)化https://qr18.cn/FVlo89

多線程并發(fā)優(yōu)化與數(shù)據(jù)傳輸效率優(yōu)化

體積包優(yōu)化

《Android 性能監(jiān)控框架》:https://qr18.cn/FVlo89

《Android Framework學習手冊》:https://qr18.cn/AQpN4J

  1. 開機Init 進程
  2. 開機啟動 Zygote 進程
  3. 開機啟動 SystemServer 進程
  4. Binder 驅(qū)動
  5. AMS 的啟動過程
  6. PMS 的啟動過程
  7. Launcher 的啟動過程
  8. Android 四大組件
  9. Android 系統(tǒng)服務 - Input 事件的分發(fā)過程
  10. Android 底層渲染 - 屏幕刷新機制源碼分析
  11. Android 源碼分析實戰(zhàn)

http://m.risenshineclean.com/news/59049.html

相關(guān)文章:

  • 五星級酒店網(wǎng)站建設(shè)短鏈接在線生成
  • 做運營需要看的網(wǎng)站什么是seo文章
  • 漢網(wǎng)可以建設(shè)網(wǎng)站不網(wǎng)站建設(shè)制作公司
  • 蘇州網(wǎng)絡(luò)銷售公司寧波seo咨詢
  • 快速建立平臺網(wǎng)站開發(fā)網(wǎng)站模板設(shè)計seo網(wǎng)站關(guān)鍵詞優(yōu)化工具
  • 中國監(jiān)理建設(shè)協(xié)會網(wǎng)站今日重大軍事新聞
  • jsp網(wǎng)站購物車怎么做網(wǎng)站建設(shè)方案設(shè)計書
  • 網(wǎng)頁制作中網(wǎng)站名稱怎么做谷歌查詢關(guān)鍵詞的工具叫什么
  • 宮免費網(wǎng)站網(wǎng)絡(luò)服務合同
  • 常德網(wǎng)站設(shè)計公司寧波百度關(guān)鍵詞推廣
  • 煙臺專門做網(wǎng)站的公司網(wǎng)站設(shè)計方案
  • 網(wǎng)站備案 費用百度上怎么打廣告宣傳
  • 如何分析競爭對手的網(wǎng)站開網(wǎng)店3個月來虧了10萬
  • 做網(wǎng)站去哪好百度網(wǎng)站提交入口
  • 找人做網(wǎng)站維護多少錢代發(fā)qq群發(fā)廣告推廣
  • 爬取數(shù)據(jù)做網(wǎng)站網(wǎng)站seo內(nèi)容優(yōu)化
  • 做企業(yè)網(wǎng)站的意義優(yōu)化網(wǎng)站排名技巧
  • 做網(wǎng)站搞笑口號中國國家培訓網(wǎng)
  • 下載免費軟件哪個網(wǎng)站好百度提交入口的網(wǎng)址
  • 杭州網(wǎng)站建設(shè)案例網(wǎng)址查詢?nèi)肟?/a>
  • 自制個人網(wǎng)站網(wǎng)站seo收錄工具
  • 獨立網(wǎng)站建設(shè)推廣有什么好方法
  • 學校建設(shè)網(wǎng)站的結(jié)論網(wǎng)站搜索優(yōu)化價格
  • 品牌網(wǎng)站建設(shè)磐石網(wǎng)絡(luò)優(yōu)等好搜搜索
  • 國內(nèi)外公司網(wǎng)站差異安卓優(yōu)化大師hd
  • 網(wǎng)上購物有哪些網(wǎng)站?seo根據(jù)什么具體優(yōu)化
  • b2c電子商務網(wǎng)站源碼網(wǎng)絡(luò)推廣深圳有效渠道
  • 上海網(wǎng)站建設(shè)方法保定百度seo公司
  • 境外企業(yè)網(wǎng)站推廣網(wǎng)絡(luò)服務有限公司
  • 順德網(wǎng)站建設(shè)價格國家認可的教育培訓機構(gòu)