android裡scroller類是為了實現view平滑滾動的乙個helper類。通常在自定義的view時使用,在view中定義乙個私有成員mscroller = new scroller(context)。設定mscroller滾動的位置時,並不會導致view的滾動,通常是用mscroller記錄/計算view滾動的位置,再重寫view的computescroll(),完成實際的滾動。
mscroller.getcurrx() //獲取mscroller當前水平滾動的位置
mscroller.getcurry() //獲取mscroller當前豎直滾動的位置
mscroller.getfinalx() //獲取mscroller最終停止的水平位置
mscroller.getfinaly() //獲取mscroller最終停止的豎直位置
mscroller.setfinalx(int newx) //設定mscroller最終停留的水平位置,沒有動畫效果,直接跳到目標位置
mscroller.setfinaly(int newy) //設定mscroller最終停留的豎直位置,沒有動畫效果,直接跳到目標位置
//滾動,startx, starty為開始滾動的位置,dx,dy為滾動的偏移量, duration為完成滾動的時間
mscroller.startscroll(int startx, int starty, int dx, int dy) //使用預設完成時間250ms
mscroller.startscroll(int startx, int starty, int dx, int dy, int duration)
mscroller.computescrolloffset() //返回值為boolean,true說明滾動尚未完成,false說明滾動已經完成。這是乙個很重要的方法,通常放在view.computescroll()中,用來判斷是否滾動是否結束。
具體**:
public class customview extends linearlayout
public customview(context context, attributeset attrs)
//呼叫此方法滾動到目標位置
public void smoothscrollto(int fx, int fy)
//呼叫此方法設定滾動的相對
public void smoothscrollby(int dx, int dy)
//為了易於控制滑屏控制,android框架提供了computescroll()方法去控制這個流程。在繪製view時,會在draw()過程呼叫該方法
@override
public void computescroll()
super.computescroll(); }
@override
public boolean ontouchevent(motionevent event)
return super.ontouchevent(event); }
class customgesturelistener implements gesturedetector.ongesturelistener
@override
public void onshowpress(motionevent e)
@override
public boolean onsingletapup(motionevent e)
@override
public boolean onscroll(motionevent e1, motionevent e2,
float distancex, float distancey)
@override
public void onlongpress(motionevent e)
@override
public boolean onfling(motionevent e1, motionevent e2, float velocityx,
float velocityy)
}}
android Scroller原理分析
在android中,scroller是用來實現view的滑動效果。使用的步驟如下 1.建立scroller物件 2.呼叫scroller.startscoller 或者fling 方法。3.在呼叫startscroller 或者fling 方法後呼叫invalidate 促使view重繪 4.重寫v...
Android Scroller學習筆記
今天看了一篇郭霖大神的關於scroller的文章,在這裡做個筆記,以方便學習。原文見鏈結android scroller完全解析,關於scroller你所需知道的一切 一,什麼是scroller scroller是乙個專門用來處理滾動效果的工具類,我們直接使用scroller的場景並不多,但是許多我...
BroadcastReciever簡單用法示例
生命週期非常短,在接受到廣播時建立,onrecieve 方法執行完後銷毀 10s內onrecieve 方法未執行完,會出現anr錯誤 broadcastreciever簡單用法示例 傳送廣播 intent intent new intent this,sendbraodcast intent 注 1...