AutoScrollViewPager与PullToRefreshScrollView冲突解决

本文介绍了一个基于Android平台的应用中实现下拉刷新功能及自动滚动视图的具体方法。通过设置PullToRefreshScrollView组件,定义了刷新时显示的文字提示,并为组件配置了触摸监听事件以响应用户的交互行为。此外,还展示了如何初始化ViewPager实现轮播图效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

//##############################################这一句(标记)


private void initPtrefresh(){

ptRefreshScrollView = (PullToRefreshScrollView) getActivity().findViewById(R.id.ptrsw_jiaodian_fragment);

//这几个刷新Label的设置  
String label = DateUtils.formatDateTime(getActivity().getApplicationContext(), System.currentTimeMillis(),
                DateUtils.FORMAT_SHOW_TIME | DateUtils.FORMAT_SHOW_DATE | DateUtils.FORMAT_ABBREV_ALL);
ptRefreshScrollView.getLoadingLayoutProxy().setLastUpdatedLabel(label);
        ptRefreshScrollView.getLoadingLayoutProxy().setPullLabel("下拉刷新");  
        ptRefreshScrollView.getLoadingLayoutProxy().setRefreshingLabel("正在刷新");  
        ptRefreshScrollView.getLoadingLayoutProxy().setReleaseLabel("释放立即刷新");  
        ptRefreshScrollView.setOnRefreshListener(new OnRefreshListener<ScrollView>() {


@Override
public void onRefresh(PullToRefreshBase<ScrollView> refreshView) {
initData1();
initData2();
initData3();
initData4();
initData5();
initData6();
ptRefreshScrollView.onRefreshComplete();
}

});

//##############################################这一句

ptRefreshScrollView.setOnTouchListener(new OnTouchListener() {


@Override
public boolean onTouch(View v, MotionEvent event) {
vp.getParent().requestDisallowInterceptTouchEvent(false);
return false;
}
});

}




//-----------------------

private void initViewPager() {
rg = (RadioGroup) getActivity().findViewById(R.id.rg_jiaodian);
vp = (AutoScrollViewPager) getActivity().findViewById(R.id.vp_jiaodian_fragment_banner);
LayoutInflater inflater = LayoutInflater.from(getActivity());
view1 = (ImageView) inflater.inflate(R.layout.layout_1, null);
view2 = (ImageView) inflater.inflate(R.layout.layout_2, null);
view3 = (ImageView) inflater.inflate(R.layout.layout_3, null);
view4 = (ImageView) inflater.inflate(R.layout.layout_4, null);
view5 = (ImageView) inflater.inflate(R.layout.layout_5, null);
ArrayList<ImageView> views = new ArrayList<ImageView>();
views.add(view1);
views.add(view2);
views.add(view3);
views.add(view4);
views.add(view5);

view1.setImageResource(R.drawable.banner_chuangye5);
view2.setImageResource(R.drawable.banner_jiuye5);
view3.setImageResource(R.drawable.banner_peixun1);
view4.setImageResource(R.drawable.dianshang_detail);
view5.setImageResource(R.drawable.banner_chuangye4);
adapter = new MyVpAdapter(views);
vp.setAdapter(adapter);
vp.startAutoScroll(2000);
vp.setInterval(2000);
vp.setOnPageChangeListener(new OnPageChangeListener() {

@Override
public void onPageSelected(int arg0) {
if(arg0<5){
rg.check(rg.getChildAt(arg0).getId());
}else{
rg.check(rg.getChildAt(arg0%5).getId());
}
}

@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
}

@Override
public void onPageScrollStateChanged(int arg0) {

}
});

//##############################################这一句
vp.setOnTouchListener(new View.OnTouchListener() {
private int lastX;
private int lastY;


@Override
public boolean onTouch(View v, MotionEvent event) {
vp.getParent().requestDisallowInterceptTouchEvent(true);
int x = (int) event.getRawX();
int y = (int) event.getRawY();


switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
lastX = x;
lastY = y;
break;
case MotionEvent.ACTION_MOVE:
int deltaY = y - lastY;
int deltaX = x - lastX;
if (Math.abs(deltaX) < Math.abs(deltaY)) {
vp.getParent().requestDisallowInterceptTouchEvent(false);
} else {
vp.getParent().requestDisallowInterceptTouchEvent(true);
}
default:
break;
}
return false;
}
});
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值