SeekBar平滑滾動修改

2021-07-01 21:45:39 字數 2263 閱讀 4248

前提:

1.採用了定製元件+apk響應的實現方式

2.需求主要分為:

1).音量平滑設定。對於音量的控制由底層提供介面,在seekbar中的調節,只需要對應上每次setprogress()設定的值即可。在apk中,過載seekbar的onprogresschanged()函式時,進行設定即可。

2).seekbar的平滑滾動修改

3.seekbar繼承與absseekbar,修改相關兩個核心函式:負責ui重新整理的onprogressrefresh(),負責互動的tracktouchevent(),其中的setprogress()呼叫是修改切入點。

具體思路,截斷tracktouchevent()中setprogress()的呼叫,增加乙個定時器來分解值的設定。同時由於涉及到ui的更新,需要通過handler來協助處理,否則可能造成主線程的阻塞。

修改:

private

boolean wisky_debug = true;

private string tag = "seekbar";

private

static

int refreshtime = 50; //執行頻率(ms)

private

final myseekbar myseekbar = this;

private

static

int absvalue = 0; //控制重新整理次數

private timer timer;

private handler h = null;

private message message = null;

private

static

final

int invalidate = 1;

private

static

int mrefershflag; //重新整理標誌----1,遞增。0,遞減.

private

boolean isfinished = false; //是否完成移動操作

private

boolean istimeron = false; //定時器是否開啟

private

static

final

int volume_level = 18; //音量設定單步長度

h = new handler()

super.handlemessage(msg);

}};

private

void

settimer() else

message.what = invalidate;

h.sendmessage(message);

//absvalue--; //次數遞減

absvalue = absvalue - volume_level;

if(absvalue <= 0 )

}}, 0, refreshtime);

}

}

private

void

canceltimer()

isfinished = true;

istimeron = false;

}

private

void

timerrunner()

else

}

private

void

tracktouchevent(motionevent event)

else

settimer();

}else

}}

public

boolean

getistimeron()

public

boolean

getisfinished()

public

void

setisfinished(boolean isfinished)

經過上面對seekbar的重寫後,在apk中呼叫進行相關的配合呼叫即可。

hash實現錨點平滑滾動定位

hash hash 屬性是乙個可讀可寫的字串,該字串是 url 的錨部分 從 號開始的部分 location.hash anchorname。錨點 錨點是網頁製作中超級鏈結的一種,又叫命名錨記。命名錨記像乙個迅速定位器一樣,是一種頁面內的超級鏈結 錨點1 錨點2 錨點1錨點2 解析 我是在本地伺服器...

前端 平滑滾動到底部 頂部

頁面滾動時,新增平滑特效 1 html 新增全域性css之後,直接使用window.scroll 0,0 就可以平滑滾動到頂部了。注 相容性很差,僅支援火狐 chrome高階版本 平滑滾動到某塊元素的底部 scrollintoview 1 let anchorelement document.get...

js平滑滾動到頂部,底部,指定地方

採用錨點進行頁面中的跳轉的確很方便,但是要想增加網頁的效果,可以使用jquery中的animate,實現滾動的乙個動作,慢慢的滾動到你想跳轉到的位置,從而看起來會非常高大上。滾動到頂部 scroll top click function 800 滾動到指定位置 scroll a click func...