可橫向或部分橫向滑動的列表實現

2021-09-02 13:51:38 字數 2364 閱讀 8930

先看下效果:

首先需要構造乙個header部分,header部分分為固定header和滑動header,滑動header採用橫向scrollview實現:

private void 

bindheader()

rightheader = new linearlayout(context);

for(string str:movedlist)

headerliearlayout.addview(rightheader);

addview(headerliearlayout);

}

下面列表部分使用listview:

private void 

buildlistview()

布局模式完成,現在關鍵是如何實現橫向滑動,且只是部分內容橫向滑動。

由於我們自己需要主動去滑動,因此我們需要監聽滑動事件,並能區分是橫向動作還是豎直動作,如果是豎直動作的話只需要交給listview實現就可以了,橫向則需要我們自己主動去滑動部分子view,以下為事件的攔截及處理機制:

@override

public boolean

onintercepttouchevent(motionevent ev)

int x = (int) ev.getx();

int y = (int) ev.gety();

switch (action)

break;

case motionevent.action_cancel:

case motionevent.action_up:

mtouchstate = touch_state_reset

;break;

} return

mtouchstate != touch_state_reset;}

@override

public boolean

ontouchevent(motionevent event)

velocitytracker.addmovement(event);

switch (action)

break;

case motionevent.action_up:

final velocitytracker vt = velocitytracker

;vt.computecurrentvelocity(1000);

int velocityx = (int) vt.getxvelocity();

int max = rightheader.getchildat(0).getwidth() * rightheader.getchildcount()

- rightheader.getwidth();

scroller.fling(rightheader.getscrollx(),

0,-velocityx,0,

0,max,0,

0);invalidate();

if (velocitytracker != null)

mtouchstate = touch_state_reset

;break;

case motionevent.action_cancel:

mtouchstate = touch_state_reset

;break;

} return true;

}

scroll 是乙個滾動控制器,在這裡需要用它來實現橫向滑動。注意startscroll和fling函式,看名字就知道了這裡不多述,重要的一點是呼叫了該函式後,主動重新整理view會條用completscroll函式(不明白的可以檢視view的重新整理機制),在這個函式中是實現真正的滑動部分:

@override

public void

computescroll()

}

在scrollchildto函式中完成對listview中各個child的部分view的橫向滑動:

protected void 

scrollchildto(int mscrollx)}}

}}

這裡的item布局可以看出,橫向滾動部分使用linearlayout部分包裹,因此只需要讓該view滾動即可.

private void 

adjustmoved(view view)

}

基本實現基本完成了,剩下的事情就是填充資料展示之類的。

可橫向滑動的vue tab元件

前端使用技術 框架 vue 元件 ly tab乙個用於移動端的可觸控滑動具有回彈效果的可復用vue元件 ly tab 介紹位址 ly tab npm位址 1,引入包,定義成公共元件 2,頁面呼叫,定義資料源,寫事件 呼叫 資料來源 data backgroundstyle rgba 255,255,...

UITableView 的橫向滑動實現

為了實現橫向滑動的控制項,可以繼承類 uiscrollview 或類 uiview 自定義可以橫向滑動的控制項,這裡通過 uitableview 的旋轉,實現可以橫向滑動的控制項。先說明與實現相關的幾個概念 自定義乙個 uiview 的子類 horizontaltableview 在其中新增乙個 u...

實現移動端touch事件的橫向滑動列表效果

要實現手機端橫向滑動效果並不難,了解實現的原理及業務邏輯就很容易實現。原理 touchstart 手指按下瞬間獲取相對於頁面的位置 touchmove 手指移動多少,元素相應移動多少 接下來講講實現邏輯 其實就是手指拖動列表向哪個方向移動多少畫素,並設定左右拖動的邊界值。附上 及注釋 在區域內向左右...