前提:
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...