material-scrolling

介绍:

material滚动技巧,可以自定义滚动行为,最终效果类似于Design Support Library的CoordinatorLayout,但是是用ObservableScrollView实现的。其实我一直觉得ObservableScrollView实现的效果要比Design Support Library做的好些。这里面的MaterialScrollingLayout相当于CoordinatorLayout的作用

运行效果:

使用说明:

MaterialScrollingLayout

ObservableRecyclerView在MaterialScrollingLayout里面。

<jp.satorufujiwara.scrolling.MaterialScrollingLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:id="@+id/materialScrollingLayout"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:ms_flexible_height="240dp"
        >
    <com.github.ksoichiro.android.observablescrollview.ObservableRecyclerView
            android:id="@+id/recyclerView"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            />
</jp.satorufujiwara.scrolling.MaterialScrollingLayout>

ms_flexible_height是RecyclerViews顶部到第一个item的高度。

并在Activity或者Fragment中调用MaterialScrollingLayout.addBehavior(View, Behavior)。

第一个参数是目标view,第二个参数是滚动时view的行为(behavior)。

materialScrollingLayout.addBehavior(bgImageView, new ParallaxBehavior());
materialScrollingLayout.addBehavior(titleTextView, new ScrollingBehavior());
materialScrollingLayout.addBehavior(fabView, new FabBehavior(getResources()));

FabBehavior是一个自定义的Behavior。如果你想自定义behavior,创建一个继承'Behavior'的类。

public class TitleBehavior extends Behavior {
    private final int scrollLimitHeight;
    public TitleBehavior(Resources r) {
        scrollLimitHeight = r.getDimensionPixelOffset(R.dimen.title_scroll_height);
    }
    @Override
    protected void onScrolled(View target, int scrollY, int dy) {
        ViewCompat.setTranslationY(target, -Math.min(scrollY, scrollLimitHeight));
    }
}

MaterialViewPager

如果你想使用ViewPager,使用MaterialViewPager。

PagerAdapter必须实现MaterialScrollingViewPager.ContainRecyclerViewPagerAdapter。

<jp.satorufujiwara.scrolling.MaterialScrollingViewPager
        android:id="@+id/viewpager"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:ms_flexible_height="240dp"
        app:ms_base_height="48dp"
        />

并在Activity或者Fragment中调用MaterialScrollingViewPager.addBehavior(View, Behavior)。

Gradle

repositories {
    jcenter()
}
dependencies {
    compile 'jp.satorufujiwara:material-scrolling:1.0.0'
    compile 'com.github.ksoichiro:android-observablescrollview:1.5.2'
}

Dependencies

已下载
0