高仿微信聊天介面長按彈框樣式

2021-09-11 15:26:38 字數 1481 閱讀 8592

網上找了一下,沒找到。

android 現成的 listpopupwindow 又不能滿足需求。

關鍵檔案、示例**及使用方法等我都放到 github 上了。

這篇文章就不展開說明了。

這篇文章重點說明下怎麼把這個樣式給擼出來的。

說明一些關鍵點。

讓大家知其然,更加知其所以然。

**傳送門

popupwindow 預設寬高設定

我們知道,建立 popupwindow 時可以指定顯示的寬度和高度。

這邊說下**裡面預設的寬高是如何設定的。

預設寬度=裝置的寬度/3。

預設高度的設定就比較麻煩一點。

因為高度如果設定過少,可能顯示的列表 item 數目就會比較少。

如果設定過大,可能顯示列表會撐滿整個螢幕。

基於此,這邊**設定的預設高度是動態變化的。

變化演算法如下:

最大預設高度=裝置的高度/2。

列表高度=item高度*item數目。

如果列表高度《最大預設高度,預設高度=列表高度。

如果列表高度》最大預設高度,預設高度=最大預設高度。

至於item高度如何計算,示例**裡面有,這邊就不贅餘闡釋了。

popupwindow 顯示位置確定

在說明顯示位置之前,我們先來簡單說下 android 的座標系。

上面的簡單畫了一下,主要是說明

x軸方向,往右邊x值變大。

y軸方向,往下面y值變大。

這個對於後面顯示位置的計算有用。

接下來我們說下顯示位置的,既然是乙個位置,那麼就會有兩個維度值。

x軸(水平方向)

y軸(豎直方向)

除了維度值,還有乙個基準點,這裡的基準點就是列表的左上角。

為了說明該 popupwindow 適應各個位置,所以效果圖裡面有三個按鈕,分別位於左下角,中間,右上角。

x座標位置確定

由上圖我們可以得出結論。

當顯示的view在左邊時,顯示的x座標=view的中心點x座標。

當顯示的view在右邊時,顯示的x座標=view的中心點x座標-popupwindow寬度。

y座標位置確定

由上圖我們可以得出結論。

當顯示的view在上邊時,顯示的y座標=view的中心點y座標。

當顯示的view在下邊時,顯示的y座標=view的中心點y座標-popupwindow高度。

Android仿微信聊天介面

專案已經傳到了github 同樣我先說下思路 1.定義訊息型別需要將所有的訊息字段定義出來,那麼需要哪些欄位了 如上圖所示,這裡就不解釋了 3,如何布局?private void setimagelayout final imageview img,string url else img.setla...

關於微信聊天介面更換背景

關於su ceview豎屏問題 小公尺4手機測試,camera.setdisplayorientation 90 可以實現 哈哈,不動了吧。但是頂部被覆蓋了 因為是整個window的背景的原因 那咋辦呢。還是兩層布局,為啥背景圖被壓縮了?我也不知道,可不可以讓背景圖不被壓縮,可以!套乙個scroll...

用html模擬的微信聊天介面

charset utf 8 name aplus terminal content 1 name content name content yes name content black translucent name viewport content width device width,init...