滾動回彈效果分析:
首先,建立乙個類,繼承scrollview,重寫ontouch事件,實現伸縮回彈效果。
scroollview節點下只能有乙個子節點,這個子節點就是我們要移動的view布局。
第一步:獲取要操作的子view布局
第二步:重寫ontouch事件監聽
分析具體事件:
觀察分析得出結論:
讓布局移動每一次拉動的y軸一半的距離,然後鬆手滾動[攜帶動畫]回到原來的位置。
下拉或者上拉的時候,記錄按下時的y軸位置
action_down
移動過程中的處理:
計算上一次與本次的y軸(拉動距離)[而不是按下時候的y值,和現在移動到的y值,是每上一次和本次的y值比較
判斷是否需要移動布局的情況:y軸的乙個距離偏移
//2種情況,隨著布局的拖動, inner.getmeasuredheight()的值是變化的
與getheight()的區別:
當螢幕可以包裹內容的時候,他們的值相等
當view的高度超出螢幕時,getmeasuredheight()是實際view的大小,與螢幕無關,getheight的大小此時則是螢幕的大小。
此時,getmeasuredheight() = getheight+超出部分。
抬起的處理:布局回滾到正常位置
移動動畫回滾到正常位置(*:動畫執行期間,不允許拖拉操作)
距離:-的滾動距離
public class myscrollview extends scrollviewpublic myscrollview(context context, attributeset attrs)
public myscrollview(context context, attributeset attrs, int defstyleattr)
@override
protected void onfinishinflate()
}@override
public boolean ontouchevent(motionevent ev) else
return super.ontouchevent(ev);
}/**
* 自定義touch事件處理
** @param ev
*/private void commontouchevent(motionevent ev)
innerview.layout(innerview.getleft(), innerview.gettop() - detaily / 2, innerview.getright(), innerview.getbottom() - detaily / 2);
}break;
case motionevent.action_up:
y = 0;
//布局回滾到原來的位置
if (isneedanimation())
break;}}
}private void animation()
@override
public void onanimationend(animation animation)
@override
public void onanimationrepeat(animation animation)
});innerview.startanimation(ta);
}/**
* 判斷是否需要回滾
** @return
*/private boolean isneedanimation()
/*** 判斷是否需要移動
** @return
*/private boolean isneedmove()
return false;
}}
自定義具有回彈效果的ScrollView
專案中需要具有回彈效果的scrollview,可設定最大拖動距離,實現回彈效果。可以用來解決與子布局中的onclick事件衝突問題。override public boolean canscrollvertically int direction public class springbackscr...
簡單的回彈效果
這個主要是垂直方向的,如果需要左右的,修改下y為x即可。import android.content.context import android.graphics.rect import android.util.attributeset import android.view.motioneve...
Flash氣泡回彈效果
好久沒有碰過flash了,今天溫習一下as3.0,做了乙個回彈效果,氣泡回彈 本想著怎麼可以定義氣泡的不同顏色,這樣可以做出更絢麗的效果,或者更進步一,氣泡和氣泡直接回彈,想了老半天沒有想出來,就先這樣,等有更好的方案時候在更新 效果 as package private function init...