編輯:關於Android編程
明天還要加班,苦逼的程序猿,簡單說說最近遇到的一個問題吧。
我在viewpager+fragment學習筆記中簡單介紹過ViewPager+Fragment的用法,其實並不難,當時實現了一個如下圖所示的效果:
然而,在實際開發中這一點技術可能根本不夠用,項目中會有各種各樣奇葩的需求,我最近就遇到了一個怪異的需求,搗鼓之後還是解決了,今天和大家聊聊。
由於涉及到公司項目,我在這裡就使用我自己制作的一個Demo來和大家介紹。
我們要實現的效果如下圖:<喎?/kf/ware/vc/" target="_blank" class="keylink">vcD4NCjxociAvPg0KPHA+PGltZyBhbHQ9"這裡寫圖片描述" src="/uploadfile/Collfiles/20150822/2015082208374211.gif" title="\" />
這裡一共有三個Fragment,其中兩個通過左右滑動顯示,第三個要通過點擊右上角的+來顯示,在第三個Fragment上我們通過點擊Fragment上的一個按鈕再回到第一個Fragment上。其實這個要做非常簡單,就是重寫ViewPager的onTouch事件,在onTouch中判斷當前的item,如果是1則取消向左滑動的動作。大致的一個思路就是這樣。看代碼:
public class MyViewPager extends ViewPager {
private int startX;
private float currentX;
public MyViewPager(Context context) {
super(context);
}
public MyViewPager(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
public boolean onTouchEvent(MotionEvent ev) {
switch (ev.getAction()) {
case MotionEvent.ACTION_DOWN:
startX = (int) ev.getX();
Log.i(lenve, ACTION_DOWN);
break;
case MotionEvent.ACTION_MOVE:
Log.i(lenve, ACTION_MOVE);
currentX = ev.getX();
break;
case MotionEvent.ACTION_UP:
Log.i(lenve, ACTION_UP);
break;
}
if (getCurrentItem() == 1 && currentX < startX) {
return false;
} else if (getCurrentItem() == 2) {
return false;
} else {
return super.onTouchEvent(ev);
}
}
}
我在項目中是重寫了onInterceptTouchEvent方法。但是這裡重寫onInterceptTouchEvent不管用,還是得重寫onTouchEvent事件,個中原因想到周日好好研究研究,明天還要加班,今天就說這麼多吧。有問題歡迎討論。
很多項目要用到圖片選擇控件,每次都要寫一大堆邏輯。於是基於圖片選擇組件(PhotoPicker)封裝了一個控件PhotoUploadView。方便簡易,一鍵集成,幾句代碼
本文實例講述了Android基於service實現音樂的後台播放功能。分享給大家供大家參考,具體如下:Service是一個生命周期長且沒有用戶界面的程序,當程序在各個ac
啦啦啦,這是山寨UC浏覽器的下拉刷新效果的第二篇,第一篇請移步Android 自定義View UC下拉刷新效果(一)我們看圖說話:主要工作1.下拉刷新的圓形向回首頁的圓形
本章系Android基礎將會總結了Android 布局常見面試問題。其實對於基礎方面Android 開發來說,經常面試無非就是UI,網絡,數據庫,這三大方面,本章節總結