生活随笔
收集整理的這篇文章主要介紹了
GSView
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
GSView
用了一下午和一晚上寫完了一個小DEMO,還順便研究了一下如何用手機錄GIF,手機不想root,花了點時間。
這幾天晚上玩手機的時候,突然有一個想法,app上的title和按鈕在單手操作的時候,尤其是大屏手機,一直手按左上角返回的時候不方便,晚上躺著玩手機,尤其是側臥的時候,很不愿意用另一只手,這幾天晚上還有蚊子,只露出一直手玩手機就好了(-_-)。有什么解決辦法呢,安卓不是內置了重力感應么,使用這個功能還不用權限,可以試試。
重力感應的核心類是SensorManager,基本上沒什么難度,實現SensorEventListener的接口,重寫onSensorChanged()和onAccuracyChanged(),主要操作在onSensorChanged()里面,onSensorChanged()可以說是時刻都在變化,注意里面不要寫一些耗時操作,不然會被調用很多次。
@Overridepublic void onSensorChanged(SensorEvent event) {if (event.sensor == null) {return;}if (event.sensor.getType() == Sensor.TYPE_ACCELEROMETER) {int x = (int) event.values[0];int y = (int) event.values[1];int z = (int) event.values[2];}}
通過代碼片段,可以看到,整個重力感應的封裝很簡單,我們只要關心 event.values數組的前三個參數即可,當然了 event.values[]其實是float類型的,我們為了方便計算,轉成Int即可,除非你需要很高的精度,手機的左右側翻我們只需要關心X即可,當然這里是指豎屏狀態下,橫屏需要重新計算,當x>3&&x<-3的時候,手機其實已經明顯翻轉了,這時我們就可以進行相應的操作了,這里為了有更好看的效果,我使用了屬性動畫ValueAnimator,需要注意一點,在onSensorChanged中,會多次調用一個動畫,導致出現了鬼畜的現象,因此需要設置一個控制變量,當動畫執行后,才能再次調用。先看看效果:
首先是向右側翻手機
首先是向左側翻手機與之類似
由于是在模擬器上錄制的,重力感應會有問題,就先拿click事件代替重力事件了,真機上親測沒問題。
一旦解決了動畫多次調用的問題,就沒什么難度了,向右移動的時候,title向右移動的距離是:(屏幕的寬度-title的寬度)/2,back按鈕移動的距離是:屏幕的寬度-title的寬度-back的寬度,類似的向左移動的時候,back已經在最左邊了,移動距離為0,title移動的距離是:(屏幕寬度-title的寬度)/2-back的寬度。當手機平放的時候,記得復位。還有一點注意的是ValueAnimator.ofFloat()方法里面可以不定個float的值,沒有特殊需要,傳入一個即可,一般的getAnimatedValue時,會判斷mValues數組是否為空,如果不為空,就取第一個即可。項目待會傳到網上,代碼是很復雜。
今天網速很好,代碼詳情:
https://git.oschina.net/w5727/GSView.git
總結
以上是生活随笔為你收集整理的GSView的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。