xmuSistone / VerticalSlideFragment

vertical slide to switch to the next fragment page, looks like vertical viewpager
1.61k stars 305 forks source link

onViewPosChanged 和 onTouchEvent 里的异常处理 #7

Closed MrFuFuFu closed 8 years ago

MrFuFuFu commented 8 years ago

onViewPosChanged方法里:有的时候会默认白板,这个很恶心。后面有时间再优化 这个能重现么,我不能复现这个问题,还有,这个应该需要怎么解决呢。

onTouchEvent 方法里mDragHelper.processTouchEvent(e); // 该行代码可能会抛异常,正式发布时请将这行代码加上try catch 这行代码,会抛异常这个问题具体情况是怎么样的呢?比如具体的 异常信息。

嗯,非常感谢这个库~如果你能提供上述问题的信息或者解决方案的话,那就再好不过了~

xmuSistone commented 8 years ago
  1. onViewPosChanged白板,我之所以加上了这行注释,是因为部分手机(应该说大部分)在拖动一个view时另一个view直接空白掉,所以那段代码强行调用了一次invalidate。其实invalidate不会损耗太多的系统资源,textView.setText都会导致parentView重新调用onLayout。当时是出于对性能的考量,尽量减少重绘的次数。加上的那行注释,是警醒后来的人。目前看来应该是没有多大问题的,毕竟我现在所在的公司用的就是这个框架。
  2. onTouchEvent里面mDragHelper.processTouchEvent(e)这个确实应该加上try catch,因为安卓手机品牌太多,不同的手机厂商定制的系统有所不同。传入的TouchEvent若是序列断掉,直接会导致程序OOM。

目前的这个库应该是完整的了,存在的一些问题大多已被修复。我现今的公司用友盟统计bug,现在爆出的问题不多的。

MrFuFuFu commented 8 years ago

@xmuSistone 谢谢你的及时回复,嗯,我已经加上了 try catch,同时,我增加这个方法,调用该方法后就可以实现,通过点击某些按钮直接滑到第二页的功能

public void switchToBottom(){
    animTopOrBottom(frameView1, -101);
}
@OnClick(R.id.tv_goods_detail)
public void tvGoodsDetail(View view){
    scroll_view_slide.fullScroll(ScrollView.FOCUS_DOWN);//当 fragment1滚动到底部
    mSwitchToBottomListener.onSwitchToBottom();//监听,在 Activity 调用 DragLayout 的 switchToBottom() 方法
}
xmuSistone commented 8 years ago

恩,可以的,很聪明的方法 哈哈哈。

ljackChen001 commented 6 years ago

@MrFuFuFu 哥们 点击某些按钮直接滑到第二页的功能 这个具体实现可以发一下嘛 参考下