Android App开发中使用RecyclerView实现Gallery画廊的实例

2019-12-10 18:27:32于海丽

添加一个显示大图的区域,把RecyclerView改为自己定义的。
然后看我们自定义RecyclerView的代码:

package com.example.zhy_horizontalscrollview03; 
 
import android.content.Context; 
import android.support.v7.widget.RecyclerView; 
import android.util.AttributeSet; 
import android.view.MotionEvent; 
import android.view.View; 
 
public class CopyOfMyRecyclerView extends RecyclerView 
{ 
 
  public CopyOfMyRecyclerView(Context context, AttributeSet attrs) 
  { 
    super(context, attrs); 
  } 
 
  private View mCurrentView; 
 
  /** 
   * 滚动时回调的接口 
   */ 
  private OnItemScrollChangeListener mItemScrollChangeListener; 
 
  public void setOnItemScrollChangeListener( 
      OnItemScrollChangeListener mItemScrollChangeListener) 
  { 
    this.mItemScrollChangeListener = mItemScrollChangeListener; 
  } 
 
  public interface OnItemScrollChangeListener 
  { 
    void onChange(View view, int position); 
  } 
 
  @Override 
  protected void onLayout(boolean changed, int l, int t, int r, int b) 
  { 
    super.onLayout(changed, l, t, r, b); 
 
    mCurrentView = getChildAt(0); 
 
    if (mItemScrollChangeListener != null) 
    { 
      mItemScrollChangeListener.onChange(mCurrentView, 
          getChildPosition(mCurrentView)); 
    } 
  } 
 
  @Override 
  public boolean onTouchEvent(MotionEvent e) 
  { 
 
    if (e.getAction() == MotionEvent.ACTION_MOVE) 
    { 
      mCurrentView = getChildAt(0); 
      // Log.e("TAG", getChildPosition(getChildAt(0)) + ""); 
      if (mItemScrollChangeListener != null) 
      { 
        mItemScrollChangeListener.onChange(mCurrentView, 
            getChildPosition(mCurrentView)); 
 
      } 
 
    } 
 
    return super.onTouchEvent(e); 
  } 
 
} 

定义了一个滚动时回调的接口,然后在onTouchEvent中,监听ACTION_MOVE,用户手指滑动时,不断把当前第一个View回调回去~
关于我咋知道getChildAt(0)和getChildPosition()可用,起初我以为有getFirstVisibleItem这个方法,后来发现么有;但是发现了getRecycledViewPool()看名字我觉得是Viewholder那个缓存队列,我想那么直接取这个队列的第一个不就是我要的View么,后来没有成功。我就观察它内部的View,最后发现,第一个显示的始终是它第一个child,至于getChildPosition这个看方法就看出来了。
现在的效果:

Android,App开发,RecyclerView,Gallery