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
-
Library
-
Sample
已下载
0