中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何解決Android關于SeekBar無法點擊到最大值問題

發布時間:2021-06-21 15:13:00 來源:億速云 閱讀:248 作者:小新 欄目:移動開發

小編給大家分享一下如何解決Android關于SeekBar無法點擊到最大值問題,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

先說一下問題發現經過吧,最近項目定制系統設置應用,其中亮度條一開始是0-255值變化,使用了SeekBar控件去調節,后來需求變更將值劃分為10個等級,也就是進度條的max為9,可以說一下子進度條從0-255變成了0-9范圍縮小了很多,范圍縮小,控件沒有變,也就是每個進度點到下一個進度點的距離就變長了,眾所周知,SeekBar是支持拖動以及點擊兩種方式控制,在我無聊瞎點時發現,我怎么點,這個進度條都無法通過點擊跳到最大值,瞬間也就從劃水模式變成認真模式=_=||。順便也就寫下來記錄一下,防止以后忘記。

經過分析,其實問題原因也大概是這樣的,SeekBar的進度大家都知道返回是一個int的整形,那么這個整形怎么取呢?這里也不細說各種判定,簡略說也就和我們平時計算一個線段平均分N段一樣,那么也就是每個進度點都有一段范圍長的,如上面我的范圍是0-9取值其實是10個數,10個值所以我們進度條肯定是將線段長度分成9段[一條線段是有兩個端點,取n個值就劃分成n-1段],那么也相當于一個蛋糕只切了9份,那么最后肯定有一個數字分不到范圍,所以假設我們控件長度是90,分0-9,,那么其實取給0的范圍是[0,10)這么一個集合,以此類推1的范圍則是[10,20)...略,所以分到最后也就最大值9沒分到范圍,這里說的是范圍,因為點擊時,是看點擊范圍在哪里然后給他移動到代表那個范圍的點,那么9到底在哪里呢?其實9也算有范圍,咳咳,打臉自己,其實9的范圍就是[90],沒錯,最大值,你只能取最后滿足它100%的數。所以不是點不到,而是這個點太難點到了。唉--平時話少,也不知道解釋得到位不到位,若還是不懂,可以自己實際用一個SeekBar把控件長度定大一點,取值的max定小一點,然后自己體會一下吧= =!

那么為啥我們拖動可以到最大值呢?其實這個很好解釋,因為拖動時控件處理MOVE事件,大家應該知道控件touch事件,你要抬起手這個焦點才會被釋放,所以我們一直拖,控件都會處理這個事件,而能到最大值原因是我們實際是拖到了或者超過最大值位置的點那么此時通過一系列計算判定也就跑到了最大值去了

說完原因,那么接下來就說一下解決方法吧,剛剛說了,最大值的判定范圍太小了,那么思路就是擴充最大值的判定范圍不就可以了么?

方法一:我們都知道控件除了本身實際長度外,其實還有很多額外的量,如android:layout_marginXXX, android:paddingXXX,但是margin并不會計算在控件內部范圍,但是padding就不一樣,所以我們可以通過增加padding從而增加點擊范圍,從而使得最大值的判定范圍增大。如增加個android:paddingRight="20dp" 我目前用的是這種

方法二:原理同上,不過是通過setTouchDelegate方法去增大觸控范圍,具體這個方法使用方式和局限性大家可以自己百度[我就是這么懶=_=|]

方法三:還有一種方法那就是自己重新處理相關touch事件,修改范圍判定算法,把蛋糕重新切一下,如把8的判定改成是[80,85)那么剩下的就分給9之類的,這算是一個最好的解決方法,也是最麻煩的[所以我懶,也沒去做],僅提供思路。

以上是“如何解決Android關于SeekBar無法點擊到最大值問題”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

大足县| 东宁县| 丰原市| 夏邑县| 海淀区| 曲阳县| 济阳县| 铁岭市| 通化县| 普兰店市| 彭泽县| 杨浦区| 彭水| 永和县| 新和县| 靖远县| 上饶市| 石景山区| 长春市| 龙山县| 太仓市| 梁山县| 高台县| 武平县| 怀安县| 泸定县| 稷山县| 诸暨市| 宁德市| 济源市| 界首市| 龙泉市| 法库县| 密山市| 临城县| 嘉义县| 加查县| 彩票| 施秉县| 北碚区| 绥阳县|