一款自定義的熱門搜尋元件

2021-07-24 00:20:36 字數 2327 閱讀 1267

首先,元件能填充許多小的字元元件如textview,所以它必須是乙個viewgroup

滑動問題, 支援上下滑動,需要我們重寫ontouchevent事件,與view的scrollto和scrollby來完成

測量 – onmeausre測量元件自身的大小

@override

protected

void

onmeasure(int widthmeasurespec, int heightmeasurespec)

主要是給定當前元件乙個固定的高度view_default_height,並且這個高度在後續的擴張和縮小會用到

布局放置 – onlayout放置每個child的位置

布局思想就是:

寬度的布局: 依次測量每個child的寬度並累加,如果寬度和大於viewgroup的寬度,就把前面幾個child拿來進行一行的布局,在此條件下還有可能出現剩餘空間,將剩餘空間分攤到每個元件上去即可;如下圖:

高度的布局: 記錄每一行的的高度布局位置,下次布局從上次的高度布局開始向下布局即可,

實現**如下:

@override

protected

void

onlayout(boolean changed, int l, int t, int r, int b)

}/**

* 說明還有一部分沒有布局的child

*/if(end_index != childcount)

second_enter++;

}/**

* 布局一行的元件檢視

*@param start_index 其實child

*@param end_index 結束child

*@param start_x x開始的位置

*@param start_y y開始的位置

*@param space 一行剩餘的空間

*/private

void

onlayoutchildview(int start_index, int end_index, int start_x, int start_y, int space)

int i;

for(i = start_index; i < end_index; i++)

//每排最後乙個必須等於右邊限制的位置,對齊;除了最後一排單獨幾個那種

if(i == end_index - 1 && space != 0)

child.layout(start_x, start_y, endx, endy);

start_x = endx + default_space;

}if(i == childcount)

}

觸控滑動

設計思想:

看圖就明白了,主要是判斷向上和向下的滑動距離,要限制其滑動的最大距離

**很簡單,如下:

@override

public

boolean

ontouchevent(motionevent event)

int action = event.getaction();

switch (action)else

if (need_move_y > moveupdistance)else

downy = movey;

break;

case motionevent.action_up:

break;

default:

break;

}return

true;}}

完成到這裡,元件就可以上下滑動了;但是在這兒有個問題,我也沒搞懂,當你新增的child設定了setonclick後滑動就會受干擾,如果是addtouchlistener的話就能正常的上下滑動,根據監聽事件的傳遞機制是:dispatch – ontouch – intecpttouch – ontouchevent – onclick,而且這又涉及了很多child我懷疑是某個child消費了滑動事件導致的,但是還沒找到解決方法,哪位能解決了,還請告知

至此,元件就設計完成了,原始碼在下面:

Vue自定義元件 簡單實現乙個自定義元件

在用vue構建專案的過程中,我們有時會用到別人開發的元件如vue router 使用他人元件的正常步驟如下 1 命令列進行安裝,執行install 2 在vue專案中的入口檔案main.js中,進行匯入 3 然後用vue.use plugin 引入該元件。我們也可以創造屬於自己的元件,具體步驟如下 ...

Vue自定義元件 簡單實現乙個自定義元件

在用vue構建專案的過程中,我們有時會用到別人開發的元件如vue router 使用他人元件的正常步驟如下 1 命令列進行安裝,執行install 2 在vue專案中的入口檔案main.js中,進行匯入 3 然後用vue.use plugin 引入該元件。我們也可以創造屬於自己的元件,具體步驟如下 ...

一款完全可自定義的文字到語音Mac軟體

ghostreader plus是一款可以將文字內容轉換為語音的mac軟體,ghostreader plus通過語音標籤來編輯文字,還可以對文字中的文字,支援讀取odt txt utxt和html檔案。ghostreader plus的直觀設計和廣泛的功能幫助您輕鬆節省時間.ghostreader ...