編輯:Android開發教程
1.1.1 handlePageFlip
PageFlip可以理解為“翻頁”。從這個意思上來看,它應該與圖層緩沖區有關系——因為是多緩沖機制,在適當的時機,我們就需要做“翻頁”的動作。
void SurfaceFlinger::handlePageFlip()
{…
const DisplayHardware&hw = graphicPlane(0).displayHardware();//編號為0的Display
const RegionscreenRegion(hw.bounds());//整個屏幕區域
const LayerVector¤tLayers(mDrawingState.layersSortedByZ);/*當前所有layers*/
const bool visibleRegions = lockPageFlip(currentLayers);/*Step1.下面會詳細分析這個函數,注意它的返回
值是一個bool類型變量。*/
if (visibleRegions ||mVisibleRegionsDirty) {//可見區域發生變化
RegionopaqueRegion;//不透明區域
computeVisibleRegions(currentLayers, mDirtyRegion, opaqueRegion);/*Step2.計算可見區域*/
/*Step3.重建mVisibleLayersSortedByZ,即所有可見圖層的排序*/
const size_t count= currentLayers.size();
mVisibleLayersSortedByZ.clear();//清空
mVisibleLayersSortedByZ.setCapacity(count);//容量
for (size_t i=0 ;i<count ; i++) {
if(!currentLayers[i]->visibleRegionScreen.isEmpty())//當前圖層有可見區域
mVisibleLayersSortedByZ.add(currentLayers[i]);
}
mWormholeRegion = screenRegion.subtract(opaqueRegion);/*Step4.蟲洞計算*/
mVisibleRegionsDirty = false;
invalidateHwcGeometry();
}
unlockPageFlip(currentLayers);/*Step5.與lockPageFlip相對應 */
…
mDirtyRegion.andSelf(screenRegion);//排除屏幕范圍之外的區域
}
最近項目中需要用到ListView下拉刷新的功能,一開始想圖省事,在網上直接找一個現成的,可是嘗試了 網上多個版本的下拉刷新之後發現效果都不怎麼理想。有些是因為功能不完整
1. 當新建Android Library Project 工程或將已有工程轉化為Android Library Project, 如果工程源代碼中有如下語句:int i
很多時候當我們發現從網上下載的一些工程無法使用,只有R布局文件報錯的時候,多數原因是工程本身的target和自身eclipse的target不符合。而自己的target可
1、什麼是簽名?如果這個問題不是放在Android開發中來問,如果是放在一個普通的版塊,我想大家都 知道簽名的含義。可往往就是將一些生活中常用的術語放在計算機這種專業領域