2013-02-12 158 views
3

我需要實現以下組件,但不知道從哪裏開始。Android遮罩背景與圓形漸變形狀

我有兩個片段堆疊。頂部片段也具有漸變背景和其他內容。下面的片段也有自己的內容,你應該能夠看到下面的內容。

下面的圖片顯示情況和白色的圓應該是可移動的,所以用戶可以在一定位置上看到下面的內容。

enter image description here

回答

3

我推薦羅曼蓋伊的解決方案。據我所知這是最簡單的(也可能是最有效的方法,因爲推薦它)。該解決方案基於Shader s。

你可以在這裏找到的代碼,描述,整個項目,樣品視頻和截圖:http://www.curious-creature.org/2012/12/13/android-recipe-2-fun-with-shaders/

你會通過調整掩模PNG文件中啓動您的自定義。那麼你可能會提供一個着色器參數,以便在繪製時使用它們的片段。最後,在每次指針移動事件之後,您將爲每個片段設置適當的着色器。

我知道這只是解決方案的草圖,但上面鏈接中提供的整個項目代碼應該會讓你的執行速度非常快。

+0

我在使用這種方法時遇到了困難,因爲它需要掩蔽的底部視圖。是否有可能像黑色圓形PNG一樣使用,並將其還原爲白色,並在繪圖中使用一些xfermode以使其工作? – Niko 2013-02-12 14:21:21

+0

你是什麼意思「需要掩蓋底部視圖」?我認爲它沒有。 'SpotlightView'將會掩蓋'mTargetBitmap'中的任何東西。我可能會創建一個'ViewGroup'來完成'SpotlightView'的工作,但是對於所有的子視圖。它會覆蓋'onDraw()'並將它們繪製到'mTargetBitmap'。 *然後*它將使用這個位圖像素作爲掩碼目標並應用掩碼。這與'SlidingDrawer'的作用類似 - 除了我們正在屏蔽並且SD正在裁剪外 - 這可以在SlidingDrawer.dispatchDraw()中看到。 – andr 2013-02-12 14:48:57

+0

但是如果聚光燈需要快速移動,那不就是因爲它需要新的targetBitmap嗎?或者是否應該將全視圖作爲目標位圖並剪裁? – Niko 2013-02-12 15:03:10