Skip to content

xuzb/SlidingLayout

Repository files navigation

SlidingLayout

A library for sliding views, which is usually used in book readers.

一个针对电子书阅读的划屏库 libsliding。

Demo下载

Overview

本库的主要相关的类如下:

SlidingLayout: 用于滑动的Layout,类似ViewPager

SldingAdapter: 用于获取数据和页面展示的类,类似Android的Adapter,不过SlidingAdapter有自己的接口需要实现

Slider: 滑动方式的基类,包括PageSlider和OverlappedSlider,分别表示左右平移滑动和左右覆盖滑动。

Usage

在布局文件里加入如下的xml

<com.martian.libsliding.SlidingLayout
    android:id="@+id/sliding_container"
    android:layout_width="match_parent"
    android:layout_height="match_parent"/>

在Java代码里获取到SlidlingLayout的实例后(设为slidingLayout), 首先设置提供内容的Adapter,Adapter需要继承SlidingAdapter实现相应的接口

slidingLayout.setAdapter(new SlidingAdapter() {...}); // 基于SlidingAdapter创建Adapter实例

然后设置滑动方式

slidingLayout.setSlider(new PageSlider()); // 左右平移滑动,类似ViewPager

或者

slidingLayout.setSlider(new OverlappedSlider()); // 左右覆盖滑动

具体用法可参照目录app下的MainActivity.java

SlidingAdapter

由于电子书内容的获取一般是顺序的获取,因此不同于Android的BaseAdapter, SlidingAdapter提供了关于next和previous的接口,具体如下:

// 通过内容实例t来创建或更新contentView,
// 若contentView为null,则创建新的view,否则更新contentView
// 返回为创建或更新后的contentView
public abstract View getView(View contentView, T t);

// 获取当前要显示的内容实例
public abstract T getCurrent();

// 获取下一个要显示的内容实例
public abstract T getNext();

// 获取前一个要显示的内容实例
public abstract T getPrevious();

// 判断当前是否还有下一个内容实例
public abstract boolean hasNext();

// 判断当前是否还有前一个内容实例
public abstract boolean hasPrevious();

// 实现如何从当前的实例移动到下一个实例
protected abstract void computeNext();

// 实现如何从当前的实例移动到前一个实例
protected abstract void computePrevious();

该库已使用在我们的小说阅读应用淘小说中,欢迎大家下载试用

About

A library for sliding views, usually used in book readers. 一个针对电子书阅读的划屏库libsliding。

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages