布局:
<?xml version=
"1.0" encoding=
"utf-8"?>
<LinearLayout xmlns:android=
"http://schemas.android.com/apk/res/android"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:background=
"@color/backgcolor"
android:orientation=
"vertical">
<include layout=
"@layout/top_oper" />
<com.xianghuocircle.widget.pulltorefresh.SwipyRefreshLayout
xmlns:xtao=
"http://schemas.android.com/apk/res-auto"
android:id=
"@+id/refresh_view"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:background=
"@color/backgcolor"
xtao:direction=
"both">
<com.xianghuocircle.widget.MyScrollView
android:id=
"@+id/scrollview"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent">
<LinearLayout
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:orientation=
"vertical">
<ImageView
android:id=
"@+id/iv_photo"
android:layout_width=
"match_parent"
android:layout_height=
"180dp"
android:scaleType=
"centerCrop"
android:src=
"@mipmap/icon_chaozhi_guanggao" />
<TextView
android:id=
"@+id/tv_baotuan_gifts"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center_horizontal"
android:layout_marginTop=
"@dimen/padding_15"
android:text=
"@string/baotuan_gifts"
android:textColor=
"@color/black70"
android:textSize=
"@dimen/small_size"
android:visibility=
"gone" />
<TextView
android:id=
"@+id/tv_baotuan_gifts_dec"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center_horizontal"
android:layout_marginBottom=
"@dimen/padding_5"
android:layout_marginTop=
"@dimen/padding_5"
android:text=
"@string/baotuan_gifts_dec"
android:textSize=
"@dimen/smallest_size"
android:visibility=
"gone" />
<RelativeLayout
android:id=
"@+id/rl_brand_info"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:padding=
"@dimen/activity_horizontal_margin">
<ImageView
android:id=
"@+id/iv_brand_photo"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:src=
"@mipmap/ic_launcher" />
<TextView
android:id=
"@+id/tv_brand_info"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_alignLeft=
"@id/iv_brand_photo"
android:layout_alignRight=
"@id/iv_brand_photo"
android:layout_below=
"@id/iv_brand_photo"
android:layout_marginTop=
"@dimen/padding_5"
android:gravity=
"center"
android:text=
"@string/app_name"
android:textColor=
"@color/black60"
android:textSize=
"@dimen/smallest_size" />
<TextView
android:id=
"@+id/tv_brand_info_dec"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_alignTop=
"@id/iv_brand_photo"
android:layout_toRightOf=
"@id/iv_brand_photo"
android:maxLength=
"3"
android:paddingLeft=
"@dimen/padding_20"
android:paddingTop=
"@dimen/padding_5"
android:text=
"@string/app_name"
android:textColor=
"@color/black70"
android:textSize=
"@dimen/smaller_size" />
<
/RelativeLayout>
<android.support.v7.widget.RecyclerView
android:id="@+id/recyclerView
"
android:layout_width="match_parent
"
android:layout_height="match_parent
"
android:paddingLeft="@dimen/padding_5
"
android:paddingRight="@dimen/padding_5
" />
</LinearLayout>
</com.xianghuocircle.widget.MyScrollView>
</com.xianghuocircle.widget.pulltorefresh.SwipyRefreshLayout>
</LinearLayout>
自定义ScrollView
package com.xianghuocircle.widget;
import android.content.Context;
import android.util.AttributeSet;
import android.util.Log;
import android.view.MotionEvent;
import android.view.ViewConfiguration;
import android.widget.ScrollView;
/**
* 自定义ScrollView
*/
public class MyScrollView extends ScrollView {
private int downX;
private int downY;
private int mTouchSlop;
public boolean isTop() {
return isTop;
}
public void setTop(
boolean top) {
isTop = top;
}
private boolean isTop =
false;
private OnScrollToBottomListener onScrollToBottom;
public MyScrollView(Context context) {
super(context);
mTouchSlop = ViewConfiguration.get(context).getScaledTouchSlop();
}
public MyScrollView(Context context, AttributeSet attrs) {
super(context, attrs);
mTouchSlop = ViewConfiguration.get(context).getScaledTouchSlop();
}
public MyScrollView(Context context, AttributeSet attrs,
int defStyleAttr) {
super(context, attrs, defStyleAttr);
mTouchSlop = ViewConfiguration.get(context).getScaledTouchSlop();
}
@Override
protected void onOverScrolled(
int scrollX,
int scrollY,
boolean clampedX,
boolean clampedY) {
super.onOverScrolled(scrollX, scrollY, clampedX, clampedY);
if(scrollY !=
0 &&
null != onScrollToBottom &&isTop()){
onScrollToBottom.onScrollBottomListener(clampedY);
}
}
public void setOnScrollToBottomLintener(OnScrollToBottomListener listener){
onScrollToBottom = listener;
}
public interface OnScrollToBottomListener{
public void onScrollBottomListener(
boolean isBottom);
}
@Override
public boolean onInterceptTouchEvent(MotionEvent e) {
int action = e.getAction();
switch (action) {
case MotionEvent.ACTION_DOWN:
setTop(
false);
downX = (
int) e.getRawX();
downY = (
int) e.getRawY();
Log.i(
"-----::----downY-----::",downY+
"");
break;
case MotionEvent.ACTION_MOVE:
int moveY = (
int) e.getRawY();
Log.i(
"-----::----moveY-----::",moveY+
"");
/****判断是向下滑动,才设置为true****/
if(downY-moveY>
0){
setTop(
true);
}
else{
setTop(
false);
}
if (Math.abs(moveY - downY) > mTouchSlop) {
return true;
}
}
return super.onInterceptTouchEvent(e);
}
}
FullyGridLayoutManager
package com.xianghuocircle.manager;
import android.content.Context;
import android.support.v7.widget.GridLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.view.ViewGroup;
public class FullyGridLayoutManager extends GridLayoutManager {
public FullyGridLayoutManager(Context context,
int spanCount) {
super(context, spanCount);
}
public FullyGridLayoutManager(Context context,
int spanCount,
int orientation,
boolean reverseLayout) {
super(context, spanCount, orientation, reverseLayout);
}
private int[] mMeasuredDimension =
new int[
2];
@Override
public void onMeasure(RecyclerView.Recycler recycler, RecyclerView.State state,
int widthSpec,
int heightSpec) {
final int widthMode = View.MeasureSpec.getMode(widthSpec);
final int heightMode = View.MeasureSpec.getMode(heightSpec);
final int widthSize = View.MeasureSpec.getSize(widthSpec);
final int heightSize = View.MeasureSpec.getSize(heightSpec);
int width =
0;
int height =
0;
int count = getItemCount();
int span = getSpanCount();
for (
int i =
0; i < count; i++) {
measureScrapChild(recycler, i,
View.MeasureSpec.makeMeasureSpec(i, View.MeasureSpec.UNSPECIFIED),
View.MeasureSpec.makeMeasureSpec(i, View.MeasureSpec.UNSPECIFIED),
mMeasuredDimension);
if (getOrientation() == HORIZONTAL) {
if (i % span ==
0) {
width = width + mMeasuredDimension[
0];
}
if (i ==
0) {
height = mMeasuredDimension[
1];
}
}
else {
if (i % span ==
0) {
height = height + mMeasuredDimension[
1];
}
if (i ==
0) {
width = mMeasuredDimension[
0];
}
}
}
switch (widthMode) {
case View.MeasureSpec.EXACTLY:
width = widthSize;
case View.MeasureSpec.AT_MOST:
case View.MeasureSpec.UNSPECIFIED:
}
switch (heightMode) {
case View.MeasureSpec.EXACTLY:
height = heightSize;
case View.MeasureSpec.AT_MOST:
case View.MeasureSpec.UNSPECIFIED:
}
setMeasuredDimension(width, height);
}
private void measureScrapChild(RecyclerView.Recycler recycler,
int position,
int widthSpec,
int heightSpec,
int[] measuredDimension) {
if (position < getItemCount()) {
try {
View view = recycler.getViewForPosition(
0);
if (view !=
null) {
RecyclerView.LayoutParams p = (RecyclerView.LayoutParams) view.getLayoutParams();
int childWidthSpec = ViewGroup.getChildMeasureSpec(widthSpec,
getPaddingLeft() + getPaddingRight(), p.width);
int childHeightSpec = ViewGroup.getChildMeasureSpec(heightSpec,
getPaddingTop() + getPaddingBottom(), p.height);
view.measure(childWidthSpec, childHeightSpec);
measuredDimension[
0] = view.getMeasuredWidth() + p.leftMargin + p.rightMargin;
measuredDimension[
1] = view.getMeasuredHeight() + p.bottomMargin + p.topMargin;
recycler.recycleView(view);
}
}
catch (Exception e) {
e.printStackTrace();
}
}
}
}
页面
package com.xianghuocircle.ui.fragment.home.child.fresh;
import android.os.Bundle;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.widget.ImageView;
import android.widget.RelativeLayout;
import android.widget.TextView;
import com.xianghuocircle.R;
import com.xianghuocircle.adapter.SpellGroupZoneNewAdapter;
import com.xianghuocircle.adapter.fresh.GiffZoneAdapter;
import com.xianghuocircle.manager.FullyGridLayoutManager;
import com.xianghuocircle.ui.activity.BaseActivity;
import com.xianghuocircle.utils.UIUtils;
import com.xianghuocircle.widget.MyScrollView;
import com.xianghuocircle.widget.pulltorefresh.SwipyRefreshLayout;
import butterknife.Bind;
/**
* 送礼专区
*/
public class GiffZoneActivity extends BaseActivity implements GiffZoneAdapter.OnItemClickListener {
/**
* 商品图
*/
@Bind(R.id.iv_photo)
ImageView ivPhoto;
/**
* 包团送礼
*/
@Bind(R.id.tv_baotuan_gifts)
TextView tvBaotuanGifts;
@Bind(R.id.tv_baotuan_gifts_dec)
TextView tvBaotuanGiftsDec;
/**
* 商品信息
*/
@Bind(R.id.iv_brand_photo)
ImageView ivBrandPhoto;
@Bind(R.id.tv_brand_info)
TextView tvBrandInfo;
@Bind(R.id.tv_brand_info_dec)
TextView tvBrandInfoDec;
@Bind(R.id.rl_brand_info)
RelativeLayout rlBrandInfo;
@Bind(R.id.recyclerView)
RecyclerView mRecyclerView;
@Bind(R.id.refresh_view)
SwipyRefreshLayout refreshView;
@Bind(R.id.scrollview)
MyScrollView scrollview;
private FullyGridLayoutManager manager;
private GiffZoneAdapter mAdapter;
@Override
protected int initContentView() {
return R.layout.activity_giff_zone;
}
@Override
protected void initData(Bundle savedInstanceState) {
super.initData(savedInstanceState);
manager =
new FullyGridLayoutManager(mContext,
2);
manager.setOrientation(LinearLayoutManager.VERTICAL);
manager.setSmoothScrollbarEnabled(
true);
mRecyclerView.setLayoutManager(manager);
mAdapter =
new GiffZoneAdapter(mContext);
mRecyclerView.setAdapter(mAdapter);
mRecyclerView.setFocusable(
false);
}
@Override
protected void initView() {
super.initView();
onShowTopBack(
true);
setTitleText(getString(R.string.send_gifts));
onMessage(
false);
onShowRightShare(
true);
tvBaotuanGifts.setVisibility(View.VISIBLE);
tvBaotuanGiftsDec.setVisibility(View.VISIBLE);
rlBrandInfo.setVisibility(View.GONE);
}
@Override
protected void initListener() {
super.initListener();
mAdapter.setOnItemClickListener(
this);
}
@Override
public void OnItemClick(
int position) {
UIUtils.showToast(
"position==>"+position);
}
}
效果实现…………………………….