|
| 1 | +package com.lsjwzh.widget.recyclerviewpagerdeomo; |
| 2 | + |
| 3 | +import android.app.Activity; |
| 4 | +import android.os.Bundle; |
| 5 | +import android.support.v7.widget.LinearLayoutManager; |
| 6 | +import android.support.v7.widget.RecyclerView; |
| 7 | +import android.view.View; |
| 8 | +import android.widget.Button; |
| 9 | +import android.widget.EditText; |
| 10 | + |
| 11 | +import com.lsjwzh.widget.recyclerviewpager.LoopRecyclerViewPager; |
| 12 | + |
| 13 | +public class LoopPagerActivity extends Activity { |
| 14 | + protected LoopRecyclerViewPager mRecyclerViewPager; |
| 15 | + private EditText mTargetPosition; |
| 16 | + private Button mScrollToPosition; |
| 17 | + |
| 18 | + @Override |
| 19 | + protected void onCreate(Bundle savedInstanceState) { |
| 20 | + super.onCreate(savedInstanceState); |
| 21 | + setContentView(R.layout.demo_loopviewpager); |
| 22 | + initViewPager(); |
| 23 | + } |
| 24 | + |
| 25 | + protected void initViewPager() { |
| 26 | + mRecyclerViewPager = (LoopRecyclerViewPager) findViewById(R.id.viewpager); |
| 27 | + mTargetPosition = (EditText) findViewById(R.id.target_position); |
| 28 | + mScrollToPosition = (Button) findViewById(R.id.scroll_to_target_position); |
| 29 | + mScrollToPosition.setOnClickListener(new View.OnClickListener() { |
| 30 | + @Override |
| 31 | + public void onClick(View v) { |
| 32 | + int position = mTargetPosition.getText() != null ? Integer.valueOf(mTargetPosition |
| 33 | + .getText() |
| 34 | + .toString()) : 0; |
| 35 | + mRecyclerViewPager.smoothScrollToPosition(position); |
| 36 | + } |
| 37 | + }); |
| 38 | + |
| 39 | + LinearLayoutManager layout = new LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, |
| 40 | + false); |
| 41 | + mRecyclerViewPager.setTriggerOffset(0.15f); |
| 42 | + mRecyclerViewPager.setFlingFactor(0.25f); |
| 43 | + mRecyclerViewPager.setLayoutManager(layout); |
| 44 | + mRecyclerViewPager.setAdapter(new LayoutAdapter(this, mRecyclerViewPager)); |
| 45 | + mRecyclerViewPager.setHasFixedSize(true); |
| 46 | + mRecyclerViewPager.setLongClickable(true); |
| 47 | + |
| 48 | + mRecyclerViewPager.setOnScrollListener(new RecyclerView.OnScrollListener() { |
| 49 | + @Override |
| 50 | + public void onScrollStateChanged(RecyclerView recyclerView, int scrollState) { |
| 51 | + |
| 52 | + } |
| 53 | + |
| 54 | + @Override |
| 55 | + public void onScrolled(RecyclerView recyclerView, int i, int i2) { |
| 56 | +// mPositionText.setText("First: " + mRecyclerViewPager.getFirstVisiblePosition()); |
| 57 | + int childCount = mRecyclerViewPager.getChildCount(); |
| 58 | + int width = mRecyclerViewPager.getChildAt(0).getWidth(); |
| 59 | + int padding = (mRecyclerViewPager.getWidth() - width) / 2; |
| 60 | + |
| 61 | + for (int j = 0; j < childCount; j++) { |
| 62 | + View v = recyclerView.getChildAt(j); |
| 63 | + //往左 从 padding 到 -(v.getWidth()-padding) 的过程中,由大到小 |
| 64 | + float rate = 0; |
| 65 | + if (v.getLeft() <= padding) { |
| 66 | + if (v.getLeft() >= padding - v.getWidth()) { |
| 67 | + rate = (padding - v.getLeft()) * 1f / v.getWidth(); |
| 68 | + } else { |
| 69 | + rate = 1; |
| 70 | + } |
| 71 | + v.setScaleY(1 - rate * 0.1f); |
| 72 | + } else { |
| 73 | + //往右 从 padding 到 recyclerView.getWidth()-padding 的过程中,由大到小 |
| 74 | + if (v.getLeft() <= recyclerView.getWidth() - padding) { |
| 75 | + rate = (recyclerView.getWidth() - padding - v.getLeft()) * 1f / v.getWidth(); |
| 76 | + } |
| 77 | + v.setScaleY(0.9f + rate * 0.1f); |
| 78 | + } |
| 79 | + } |
| 80 | + } |
| 81 | + }); |
| 82 | + |
| 83 | + mRecyclerViewPager.addOnLayoutChangeListener(new View.OnLayoutChangeListener() { |
| 84 | + @Override |
| 85 | + public void onLayoutChange(View v, int left, int top, int right, int bottom, int oldLeft, int oldTop, int oldRight, int oldBottom) { |
| 86 | + if (mRecyclerViewPager.getChildCount() < 3) { |
| 87 | + if (mRecyclerViewPager.getChildAt(1) != null) { |
| 88 | + View v1 = mRecyclerViewPager.getChildAt(1); |
| 89 | + v1.setScaleY(0.9f); |
| 90 | + } |
| 91 | + } else { |
| 92 | + if (mRecyclerViewPager.getChildAt(0) != null) { |
| 93 | + View v0 = mRecyclerViewPager.getChildAt(0); |
| 94 | + v0.setScaleY(0.9f); |
| 95 | + } |
| 96 | + if (mRecyclerViewPager.getChildAt(2) != null) { |
| 97 | + View v2 = mRecyclerViewPager.getChildAt(2); |
| 98 | + v2.setScaleY(0.9f); |
| 99 | + } |
| 100 | + } |
| 101 | + |
| 102 | + } |
| 103 | + }); |
| 104 | + } |
| 105 | +} |
0 commit comments