SlidView

SlidView:在很多应用中都可以见到,左右滑动屏幕可以显示隐藏的菜单和其他布局。


演示效果:


演示代码,大家可以戳这里下载。



界面布局:

<com.flyingduck.slidviewdemo.view.SlidLayout
        android:id="@+id/slid_layout"
        android:layout_width="match_parent"
        android:layout_height="match_parent" >

        <include
            android:id="@+id/left_layout"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            layout="@layout/left_layout" />

        <include
            android:id="@+id/right_layout"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            layout="@layout/right_layout" />

        <include
            android:id="@+id/main_layout"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            layout="@layout/main_layout" />
    </com.flyingduck.slidviewdemo.view.SlidLayout>

com.flyingduck.slidviewdemo.view.slidview 是继承的FrameLayout的一个自定义View(代码已放在GitHub上,欢迎大家fork和star),

其中include的三个布局都很简单,职位演示作用,更加负载的布局,大家可以自己添加在left_layout.xml right_layout.xml main_layout中。由于是继承的FrameLayout,所以需要将你应用的主布局放在最后这样才不会在显示的时候被其他布局覆盖。


提供的接口:

bindTouchableView(View view)  绑定一个View用于响应touch事件,我的例子中绑定的是main_layout.xml布局。不绑定View的话是没有滑动效果的。

unbindTouchableView(View view) 解除绑定

setLeftLayoutWidth(int leftLayoutWidth) 设置左侧布局显示的宽度

getLeftLayoutWidth()

setRightLayoutWidth(int rightLayoutWidth) 设置右侧布局显示的宽度

getRightLayoutWidth()

getScreenWidth() 获取屏幕的宽度,可以根据这个值来设置左/右侧布局的显示宽度

setMinDistanceCanSlid(int minDistance) 这个值设置手指滑动能引起其他页显示的最小距离


这里没有添加对手指滑动速度的判断来控制翻页的功能,主要是因为发现在手机等小屏幕设备上要求不是很明显,不过以后会加上。


实现原理:SlidView

重写了OnTouchListener的onTouch()方法,并将MotionEvent 传递给了GestureDetector处理,然后自定义SimpleOnGestureListener,重写其中的方法,主要是其中的 onScroll()方法。当然不使用GestureDetector 只重写onTouch()事件也是足够的。




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值