編輯:關於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);到這裡就可以了
工作中有做過手機App項目,前端和android或ios程序員配合完成整個項目的開發,開發過程中與ios程序配合基本沒什麼問題,而android各種機子和rom的問題很多
隨著移動互聯網的快速發展,它已經和我們的生活息息相關了,在公交地鐵裡面都能看到很多人的人低頭看著自己的手機屏幕,從此“低頭族”一詞就產生了,作為一名移動行業的開發人員,我
裡面評論有很多人提到了這個問題,我也是其中一員,但是問遍了所有人,自己也發帖(http://bbs.csdn.net/topics/390769358) 尋
碰到幾個問題,記錄一下,方便其他網友查詢 我是win7,64位系統,JAVA以前裝過,所以沒有安裝JDK直接下載Android Studio進行安裝,結果提示沒有安裝