可以下拉放大的Layout
- 下拉刷新
- ScrollView
- RecyclerView
- CoordinatorLayout (其他Layout需要处理改Layout的onTouchEvent事件,否则可能无法使用)
依赖
compile 'com.gavin.view.flexible:library:1.0.2'
xml(ScrollView)
<com.gavin.view.flexible.FlexibleLayout
...>
<ScrollView
...>
<LinearLayout
...
android:orientation="vertical">
<ImageView
android:id="@+id/iv_header"
.../>
<TextView
... />
</LinearLayout>
</ScrollView>
</com.gavin.view.flexible.FlexibleLayout>
Activity
下拉放大
private ImageView mHeader;
private ScrollView mScrollView;
private FlexibleLayout mFlexibleLayout;
...
mFlexibleLayout.setHeader(mHeader)
.setReadyListener(new OnReadyPullListener() {
@Override
public boolean isReady() {
//下拉放大的条件
return mScrollView.getScrollY() == 0;
}
});
下拉放大 + 刷新
mFlexibleLayout.setHeader(mHeader)
.setReadyListener(new OnReadyPullListener() {
@Override
public boolean isReady() {
return mScrollView.getScrollY() == 0;
}
})
.setRefreshable(true)
.setDefaultRefreshView(new OnRefreshListener() {
@Override
public void onRefreshing() {
//刷新操作
...
//刷新完成后需要调用onRefreshComplete()通知FlexibleLayout
mFlexibleLayout.onRefreshComplete();
}
});
配置
方法 | 功能 | 默认 |
---|---|---|
setEnable(boolean isEnable) | 允许下拉放大 | true |
setHeader(View header) | 设置Header | null |
setMaxPullHeight(int height) | Header最大下拉高度 | header 高度 + 1/3屏幕宽度 |
setRefreshable(boolean isEnable) | 是否允许下拉刷新 | false |
setMaxRefreshPullHeight(int height) | 刷新View最大下拉高度 | 1/3屏幕宽度 |
setRefreshSize(int size) | 刷新View的尺寸(正方形) | 1/15屏幕宽度 |
isRefreshing() | 是否正在刷新 |
监听
方法 | 功能 |
---|---|
setReadyListener(OnReadyPullListener listener) | 设置准备监听 |
setOnPullListener(OnPullListener onPullListener) | 下拉监听 |
setRefreshView(View refreshView, OnRefreshListener listener) | 设置下拉刷新View 以及监听 |
setDefaultRefreshView(OnRefreshListener listener) | 使用默认的下拉刷新View |