編輯:關於Android編程
因為ScrollView本身沒有帶onScrollListener的監聽回調事件,所以,首先要重寫ScrollView,下面給出代碼
MyScrollView.java
import android.content.Context;
import android.os.Handler;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.widget.ScrollView;
public class MyScrollView extends ScrollView {
private OnScrollListener onScrollListener;
//用在用戶手指離開MyScrollView,MyScrollView還在繼續滑動,用來保存Y的距離
private int lastScrollY;
public MyScrollView(Context context) {
this(context, null);
}
public MyScrollView(Context context, AttributeSet attrs) {
this(context, attrs, 0);
}
public MyScrollView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
//寫一個onScrollListener的監聽回調方法
public void setOnScrollListener(OnScrollListener onScrollListener) {
this.onScrollListener = onScrollListener;
}
//用於用戶手指離開MyScrollView的時候獲取MyScrollView滾動的Y距離,然後回調給onScroll方法中
private Handler handler = new Handler() {
public void handleMessage(android.os.Message msg) {
int scrollY = MyScrollView.this.getScrollY();
//此時的距離和記錄下的距離不相等,在隔5毫秒給handler發送消息
if(lastScrollY != scrollY){
lastScrollY = scrollY;
handler.sendMessageDelayed(handler.obtainMessage(), 5);
}
if(onScrollListener != null){
onScrollListener.onScroll(scrollY);
}
};
};
/**
* 重寫onTouchEvent, 當用戶的手在MyScrollView上面的時候,
* 直接將MyScrollView滑動的Y方向距離回調給onScroll方法中,當用戶抬起手的時候,
* MyScrollView可能還在滑動,所以當用戶抬起手我們隔5毫秒給handler發送消息,在handler處理
* MyScrollView滑動的距離
*/
@Override
public boolean onTouchEvent(MotionEvent ev) {
if(onScrollListener != null){
onScrollListener.onScroll(lastScrollY = this.getScrollY());
}
switch(ev.getAction()){
case MotionEvent.ACTION_UP:
handler.sendMessageDelayed(handler.obtainMessage(), 5);
break;
}
return super.onTouchEvent(ev);
}
//滾動的回調接口
public interface OnScrollListener{
//返回滑動的Y的距離
public void onScroll(int scrollY);
}
} 下面是主程序中的部分代碼
首先在XML文件中加入MyScrollView控件
第二步寫一個類繼承MyScrollView裡頭的回調接口
class onMyScrollListener implements com.scnu.yxp.travelapp.view.MyScrollView.OnScrollListener
{
@Override
public void onScroll(int scrollY) {
//當滑動的距離大於多少時執行相應的動作
if(scrollY >= homepage_btn_window.getHeight())
{
upBtn.setVisibility(View.VISIBLE);
}else{
upBtn.setVisibility(View.GONE);
}
}
}第三步,設置監聽器
onMyScrollListener listener = new onMyScrollListener(); myScrollView.setOnScrollListener(listener);到這裡就可以了
一看就懂的Android APP開發入門教程
工作中有做過手機App項目,前端和android或ios程序員配合完成整個項目的開發,開發過程中與ios程序配合基本沒什麼問題,而android各種機子和rom的問題很多
模仿美團點評的Android應用中價格和購買欄懸浮固定的效果
隨著移動互聯網的快速發展,它已經和我們的生活息息相關了,在公交地鐵裡面都能看到很多人的人低頭看著自己的手機屏幕,從此“低頭族”一詞就產生了,作為一名移動行業的開發人員,我
Android用OpenGL ES2.0顯示YUV數據,在手機上需要兩種坐標系的解決方案
裡面評論有很多人提到了這個問題,我也是其中一員,但是問遍了所有人,自己也發帖(http://bbs.csdn.net/topics/390769358) 尋
關於android開發環境的搭建問題
碰到幾個問題,記錄一下,方便其他網友查詢 我是win7,64位系統,JAVA以前裝過,所以沒有安裝JDK直接下載Android Studio進行安裝,結果提示沒有安裝