樓主手機上裝了好多個軟體,陌陌不常玩的,看了下它的登入註冊下面是一些美女的,而且有透明度的變化,關鍵是沒有壓縮和失真的情況,然後分析了下,這些肯定不是一張背景圖了,可想而知,著名的9宮格啊,這樣的話,實現方式就多了,gridview,自定義layout等,今天我以自定義viewgroup的方式來嘗試下這個實現
先看下效果
首先看了下,一行是3張,按照矩陣的思路,就是3 * 3,看著效果圖就是5行3列,也就是這個子view的總數 = rows * columns = 5 * 3 = 15
最好的是自己定義乙個viewgroup看一下執行的流程,以下是我寫的時候測試的方法執行順序
可以看到先執行onfinishinflate,這裡一般處理布局layout裡child的初始化,getchild(0)
可以看到onsizechanged只執行一次,這裡可以獲取viewgroup的寬高
而onmeasure,onlayout可能執行多次,這裡是2次,我們可以使用標示位做些處理,當onlayout執行兩次的時候我沒處理,導致第一張會重複覆蓋的情況,我加了標示位後問題解決。
以下是**實現思路
onmeaure時addchildview
@override預設是getsugesstionwidth和getsugesstionheightprotected void
onmeasure(int widthmeasurespec, int heightmeasurespec)
onlayout根據想要擺放的位置來定位child的position,根據陌陌的效果是5 * 3 即是5行3列的 所以總的child個數是 5 * 3,所以要獲取到每個childview 的position 計算出這個childview 的left 和 top 完成layout的工作 ,簡單的演算法如下
private int getlettop(int childindex) }}根據安卓的座標系 onlayout**如下return lefttop;
}
@override這裡**基本已完成了80%了,下面就是一些效果的實現,忽明忽暗的很容易想到alpha,而且要用到隨機數protected void
onlayout(boolean changed, int left, int top, int right, int bottom) }}
**如下
int randown = (int) (math.random() * (rows * columns - 1));使用handler postdelayed 遞迴實現 隨機切換if(cindex == -1)else
postdelayed(runnable
,2000);
總體來說很簡單
可以熟悉一下自定義viewgroup的流程及執行的順序
openssl老版本編譯
將命令提示符定位到e openssl 1.0.2h。輸入perl configure vc win32 openssldir e openssl 2012 輸入ms do nasm。將命令提示符定位到d program files microsoft visual studio 11.0 vc bi...
老版本WTS WAF bypass小記
挖漏洞的時候總是會遇到waf,繞過記錄 view.asp?big 75 id 1漏洞點在id引數 新增單引號報錯 來一波老套的id 1 and 1 1,出現防火牆 老版本wts waf繞過很簡單,在關鍵字裡面加 符號即可 成功繞過 猜表名,這個地方使用burpsuite暴力跑就行,也可以手動測一些比...
ubuntu老版本更新源
使用 如下命令,獲取ubuntu版本代號 lsb release c得到如下輸出 codename lucid即,目前版本號名稱為 lucid 參考如下部落格,替換你系統的版本名 參考文章1 參考文章2 修改 etc hosts 檔案,新增ubuntu網域名稱 敲入如下命令 sudo gedit e...