我想創建一個可縮放的容器,我目標API 14+爲什麼在縮放手勢過程中調用setScaleX會導致閃爍?
在我onScale(我使用的ScaleGestureDetector檢測捏縮放)我做這樣的事情:
public boolean onScale (ScaleGestureDetector detector) {
float scaleFactor = detector.getScaleFactor();
setScaleX(getScaleX() * scaleFactor);
setScaleY(getScaleY() * scaleFactor);
return true;
};
它的工作原理,但變焦不平滑。實際上它明顯地閃爍。
我也試過硬件層,認爲一旦紋理上傳後縮放會發生在GPU上,因此會超快。但它沒有什麼區別 - 變焦不平滑,有時候會變幻莫測。
我在做什麼錯?
我不想發表一個答案,因爲我無法測試解決方案,但你可以,所以採取一個lokk在這裏:http://stackoverflow.com/questions/5790503/can-we-use-尺度手勢檢測器捏捏放大在Android。嘗試後,請返回此處並告訴我們是否解決了問題。看看最後的回覆。 – g00dy
我意識到這個解決方案,但它有嚴重的缺陷 - 它只能縮放畫布的畫布 - 沒有剪輯和觸點被轉換。這就是爲什麼我使用了setScale,它改變了容器中的變換矩陣,並調整了剪輯矩形並適當地轉換了觸摸座標(無需您自己執行矩陣運算) –
您可以分享更多代碼嗎?具體是實際的繪圖例程。你有沒有嘗試過任何分析,看看圖紙在哪裏掙扎?我會考慮在緊縮繪圖循環中最小化(可能爲零)對象分配的數量。我知道這些都是一般的(也許很明顯),但是如果沒有更多的信息,很難多說。 – snowdragon