編輯:關於Android編程
最近的項目中,有一個需求要用ViewPager中嵌套ViewPager去實現整個效果,沒做任何處理做出來後,只能不停的滑動子ViewPager,父ViewPager就無法滑動了,這樣肯定是不滿足的,分析了一下原因,很顯示是整個滑動事件都被子ViewPager消耗掉了,所以只能對ViewPager做一下自定義處理,才可以實現。以下是這個需求實現後的效果圖:
從圖上就可以看出:我們用ViewPager中嵌套了ViewPager,而且要實現的是子ViewPager滑動到最後一頁時,再滑就是滑動父ViewPager.下面將自定義的ViewPager代碼貼出來,大家可以參考下。<喎?/kf/ware/vc/" target="_blank" class="keylink">vcD4KPHA+oaGhoTwvcD4KPHByZSBjbGFzcz0="brush:java;">/**********************************************************
* @文件名稱:MyViewPager.java
* @創建時間:2014年11月18日 下午4:24:25
* @修改歷史:2014年11月18日創建初始版本
**********************************************************/
public class MyViewPager extends ViewPager
{
//父ViewPager的引用
private ViewPager viewPager;
private boolean flag = true;
private float mLastMotionX;
public BookstoreViewPager(Context context)
{
super(context);
}
public BookstoreViewPager(Context context, AttributeSet attrs)
{
super(context, attrs);
}
public ViewPager getViewPager()
{
return viewPager;
}
//處理前必須調用此方法初始化沖突ViewPager
public void setViewPager(ViewPager viewPager)
{
this.viewPager = viewPager;
}
@Override
public boolean dispatchTouchEvent(MotionEvent ev)
{
final float x = ev.getX();
switch (ev.getAction())
{
case MotionEvent.ACTION_DOWN:
// 使父控件不處理任何觸摸事件
viewPager.requestDisallowInterceptTouchEvent(true);
flag = true;
mLastMotionX = x;
break;
case MotionEvent.ACTION_MOVE:
if (flag)
{
if (x - mLastMotionX > 5 && getCurrentItem() == 0)
{
flag = false;
viewPager.requestDisallowInterceptTouchEvent(false); //將事件交由父控件處理
}
if (x - mLastMotionX < -5 && getCurrentItem() == getAdapter().getCount() - 1)
{
flag = false;
viewPager.requestDisallowInterceptTouchEvent(false);
}
}
break;
case MotionEvent.ACTION_UP:
viewPager.requestDisallowInterceptTouchEvent(false);
break;
case MotionEvent.ACTION_CANCEL:
viewPager.requestDisallowInterceptTouchEvent(false);
break;
}
return super.dispatchTouchEvent(ev);
}
}
近來回顧了一下關於Activity的生命周期,參看了相關書籍和官方文檔,也有了不小的收獲,對於以前的認知有了很大程度上的改善,在這裡和大家分享一下。熟悉javaEE的朋友
使用“wrap_content”和“match_parent”要確保布局的靈活性並適應各種尺寸的屏幕,您應使用"
手機qq安裝失敗怎麼辦?手機qq安裝後打不開是什麼原因?下面我們一起看看解決方法吧!手機安裝失敗原因及解決方法1、證書過期(或者未生效): 下載安裝前將手
為了兼容簡體、繁體及其他語系,推薦使用UTF-8編碼。 首選,我們看看Android端應該怎麼做: 在發送前,應該對參數值要進行UTF-8編碼,我寫了一個s