Skip to content
This repository has been archived by the owner on Dec 8, 2020. It is now read-only.

Commit

Permalink
add shrink space
Browse files Browse the repository at this point in the history
  • Loading branch information
leochuan committed Dec 22, 2017
1 parent 1c4b55a commit 267f0b7
Show file tree
Hide file tree
Showing 13 changed files with 95 additions and 33 deletions.
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ repositories {
}
dependencies {
compile 'rouchuan.viewpagerlayoutmanager:viewpagerlayoutmanager:2.0.4'
compile 'rouchuan.viewpagerlayoutmanager:viewpagerlayoutmanager:2.0.5'
}
```

Expand All @@ -60,7 +60,7 @@ Maven:
<dependency>
<groupId>rouchuan.viewpagerlayoutmanager</groupId>
<artifactId>viewpagerlayoutmanager</artifactId>
<version>2.0.4</version>
<version>2.0.5</version>
<type>pom</type>
</dependency>
```
Expand Down
4 changes: 2 additions & 2 deletions README_ZH.md
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ repositories {
}
dependencies {
compile 'rouchuan.viewpagerlayoutmanager:viewpagerlayoutmanager:2.0.4'
compile 'rouchuan.viewpagerlayoutmanager:viewpagerlayoutmanager:2.0.5'
}
```

Expand All @@ -58,7 +58,7 @@ Maven:
<dependency>
<groupId>rouchuan.viewpagerlayoutmanager</groupId>
<artifactId>viewpagerlayoutmanager</artifactId>
<version>2.0.4</version>
<version>2.0.5</version>
<type>pom</type>
</dependency>
```
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_base);
setTitle(getIntent().getCharSequenceExtra(MainActivity.INTENT_TITLE));
recyclerView = (RecyclerView) findViewById(R.id.recycler);
recyclerView = findViewById(R.id.recycler);
viewPagerLayoutManager = createLayoutManager();
recyclerView.setAdapter(new DataAdapter());
recyclerView.setLayoutManager(viewPagerLayoutManager);
Expand Down
10 changes: 5 additions & 5 deletions descriptor.json
Original file line number Diff line number Diff line change
Expand Up @@ -15,26 +15,26 @@
"public_stats": false
},
"version": {
"name": "2.0.4",
"name": "2.0.5",
"desc": "Fix bugs and support wrap content and match parent",
"released": "2017-12-02",
"vcs_tag": "2.0.4",
"vcs_tag": "2.0.5",
"gpgSign": false
},
"files": [
{
"includePattern": "viewpagerlayoutmanager/build/libs/(.*\\.jar)",
"uploadPattern": "rouchuan/viewpagerlayoutmanager/viewpagerlayoutmanager/2.0.4/$1",
"uploadPattern": "rouchuan/viewpagerlayoutmanager/viewpagerlayoutmanager/2.0.5/$1",
"matrixParams": { "override": 1 }
},
{
"includePattern": "viewpagerlayoutmanager/(.*\\.pom)",
"uploadPattern": "rouchuan/viewpagerlayoutmanager/viewpagerlayoutmanager/2.0.4/$1",
"uploadPattern": "rouchuan/viewpagerlayoutmanager/viewpagerlayoutmanager/2.0.5/$1",
"matrixParams": { "override": 1 }
},
{
"includePattern": "viewpagerlayoutmanager/build/outputs/aar/(.*release\\.aar)",
"uploadPattern": "rouchuan/viewpagerlayoutmanager/viewpagerlayoutmanager/2.0.4/viewpagerlayoutmanager-2.0.4.aar",
"uploadPattern": "rouchuan/viewpagerlayoutmanager/viewpagerlayoutmanager/2.0.5/viewpagerlayoutmanager-2.0.5.aar",
"matrixParams": { "override": 1 }
}
],
Expand Down
2 changes: 1 addition & 1 deletion viewpagerlayoutmanager/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ dependencies {
}

apply plugin: 'maven'
def currentVersion = '2.0.4'
def currentVersion = '2.0.5'
task createPom << {
pom {
project {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,14 +29,15 @@ public CarouselLayoutManager(Context context, int itemSpace, int orientation, bo

public CarouselLayoutManager(Builder builder) {
this(builder.context, builder.itemSpace, builder.minScale, builder.orientation,
builder.maxVisibleItemCount, builder.moveSpeed, builder.reverseLayout);
builder.maxVisibleItemCount, builder.moveSpeed, builder.shrinkSpace, builder.reverseLayout);
}

private CarouselLayoutManager(Context context, int itemSpace, float minScale, int orientation,
int maxVisibleItemCount, float moveSpeed, boolean reverseLayout) {
int maxVisibleItemCount, float moveSpeed, int shrinkSpace, boolean reverseLayout) {
super(context, orientation, reverseLayout);
setEnableBringCenterToFront(true);
setIntegerDy(true);
setShrinkSpace(shrinkSpace);
setMaxVisibleItemCount(maxVisibleItemCount);
this.itemSpace = itemSpace;
this.minScale = minScale;
Expand Down Expand Up @@ -123,6 +124,7 @@ public static class Builder {
private float moveSpeed;
private int maxVisibleItemCount;
private boolean reverseLayout;
private int shrinkSpace;

public Builder(Context context, int itemSpace) {
this.itemSpace = itemSpace;
Expand Down Expand Up @@ -159,6 +161,11 @@ public Builder setMaxVisibleItemCount(int maxVisibleItemCount) {
return this;
}

public Builder setShrinkSpace(int shrinkSpace) {
this.shrinkSpace = shrinkSpace;
return this;
}

public CarouselLayoutManager build() {
return new CarouselLayoutManager(this);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,14 +42,17 @@ public CircleLayoutManager(Context context, int gravity, boolean reverseLayout)

public CircleLayoutManager(Builder builder) {
this(builder.context, builder.radius, builder.angleInterval, builder.moveSpeed, builder.maxRemoveAngle,
builder.minRemoveAngle, builder.gravity, builder.zAlignment, builder.flipRotate, builder.maxVisibleItemCount, builder.reverseLayout);
builder.minRemoveAngle, builder.gravity, builder.zAlignment, builder.flipRotate,
builder.maxVisibleItemCount, builder.shrinkSpace, builder.reverseLayout);
}

private CircleLayoutManager(Context context, int radius, int angleInterval, float moveSpeed, float max, float min,
int gravity, int zAlignment, boolean flipRotate, int maxVisibleItemCount, boolean reverseLayout) {
private CircleLayoutManager(Context context, int radius, int angleInterval, float moveSpeed,
float max, float min, int gravity, int zAlignment, boolean flipRotate,
int maxVisibleItemCount, int shrinkSpace, boolean reverseLayout) {
super(context, (gravity == LEFT || gravity == RIGHT) ? VERTICAL : HORIZONTAL, reverseLayout);
setEnableBringCenterToFront(true);
setMaxVisibleItemCount(maxVisibleItemCount);
setShrinkSpace(shrinkSpace);
this.radius = radius;
this.angleInterval = angleInterval;
this.moveSpeed = moveSpeed;
Expand Down Expand Up @@ -274,6 +277,7 @@ public static class Builder {
private static int MIN_REMOVE_ANGLE = -90;

private int radius;
private int shrinkSpace;
private int angleInterval;
private float moveSpeed;
private float maxRemoveAngle;
Expand Down Expand Up @@ -351,6 +355,11 @@ public Builder setMaxVisibleItemCount(int maxVisibleItemCount) {
return this;
}

public Builder setShrinkSpace(int shrinkSpace) {
this.shrinkSpace = shrinkSpace;
return this;
}

public CircleLayoutManager build() {
return new CircleLayoutManager(this);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,15 +42,18 @@ public CircleScaleLayoutManager(Context context, boolean reverseLayout) {
}

public CircleScaleLayoutManager(Builder builder) {
this(builder.context, builder.radius, builder.angleInterval, builder.centerScale, builder.moveSpeed, builder.maxRemoveAngle,
builder.minRemoveAngle, builder.gravity, builder.zAlignment, builder.flipRotate, builder.maxVisibleItemCount, builder.reverseLayout);
this(builder.context, builder.radius, builder.angleInterval, builder.centerScale, builder.moveSpeed,
builder.maxRemoveAngle, builder.minRemoveAngle, builder.gravity, builder.zAlignment,
builder.flipRotate, builder.maxVisibleItemCount, builder.shrinkSpace, builder.reverseLayout);
}

private CircleScaleLayoutManager(Context context, int radius, int angleInterval, float centerScale, float moveSpeed, float max,
float min, int gravity, int zAlignment, boolean flipRotate, int maxVisibleItemCount, boolean reverseLayout) {
private CircleScaleLayoutManager(Context context, int radius, int angleInterval, float centerScale,
float moveSpeed, float max, float min, int gravity, int zAlignment,
boolean flipRotate, int maxVisibleItemCount, int shrinkSpace, boolean reverseLayout) {
super(context, HORIZONTAL, reverseLayout);
setEnableBringCenterToFront(true);
setMaxVisibleItemCount(maxVisibleItemCount);
setShrinkSpace(shrinkSpace);
this.radius = radius;
this.angleInterval = angleInterval;
this.centerScale = centerScale;
Expand Down Expand Up @@ -308,6 +311,7 @@ public static class Builder {
private boolean flipRotate;
private int zAlignment;
private int maxVisibleItemCount;
private int shrinkSpace;

public Builder(Context context) {
this.context = context;
Expand Down Expand Up @@ -381,6 +385,11 @@ public Builder setMaxVisibleItemCount(int maxVisibleItemCount) {
return this;
}

public Builder setShrinkSpace(int shrinkSpace) {
this.shrinkSpace = shrinkSpace;
return this;
}

public CircleScaleLayoutManager build() {
return new CircleScaleLayoutManager(this);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,13 +31,14 @@ public GalleryLayoutManager(Context context, int itemSpace, int orientation, boo
}

public GalleryLayoutManager(Builder builder) {
this(builder.context, builder.itemSpace, builder.angle, builder.maxAlpha, builder.minAlpha,
builder.orientation, builder.moveSpeed, builder.flipRotate, builder.maxVisibleItemCount, builder.reverseLayout);
this(builder.context, builder.itemSpace, builder.angle, builder.maxAlpha, builder.minAlpha, builder.orientation,
builder.moveSpeed, builder.flipRotate, builder.maxVisibleItemCount, builder.shrinkSpace, builder.reverseLayout);
}

private GalleryLayoutManager(Context context, int itemSpace, float angle, float maxAlpha, float minAlpha,
int orientation, float moveSpeed, boolean flipRotate, int maxVisibleItemCount, boolean reverseLayout) {
private GalleryLayoutManager(Context context, int itemSpace, float angle, float maxAlpha, float minAlpha, int orientation,
float moveSpeed, boolean flipRotate, int maxVisibleItemCount, int shrinkSpace, boolean reverseLayout) {
super(context, orientation, reverseLayout);
setShrinkSpace(shrinkSpace);
setIntegerDy(true);
setMaxVisibleItemCount(maxVisibleItemCount);
this.itemSpace = itemSpace;
Expand Down Expand Up @@ -162,7 +163,7 @@ private float calRotation(float targetOffset) {
}

private float calAlpha(float targetOffset) {
final float offset = Math.abs(targetOffset);
final float offset = Math.abs(targetOffset);
float alpha = (minAlpha - maxAlpha) / mInterval * offset + maxAlpha;
if (offset >= mInterval) alpha = minAlpha;
return alpha;
Expand All @@ -184,6 +185,7 @@ public static class Builder {
private boolean reverseLayout;
private Context context;
private int maxVisibleItemCount;
private int shrinkSpace;

public Builder(Context context, int itemSpace) {
this.itemSpace = itemSpace;
Expand Down Expand Up @@ -245,6 +247,11 @@ public Builder setMaxVisibleItemCount(int maxVisibleItemCount) {
return this;
}

public Builder setShrinkSpace(int shrinkSpace) {
this.shrinkSpace = shrinkSpace;
return this;
}

public GalleryLayoutManager build() {
return new GalleryLayoutManager(this);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,13 +30,14 @@ public RotateLayoutManager(Context context, int itemSpace, int orientation, bool

public RotateLayoutManager(Builder builder) {
this(builder.context, builder.itemSpace, builder.angle, builder.orientation, builder.moveSpeed,
builder.reverseRotate, builder.maxVisibleItemCount, builder.reverseLayout);
builder.reverseRotate, builder.maxVisibleItemCount, builder.shrinkSpace, builder.reverseLayout);
}

private RotateLayoutManager(Context context, int itemSpace, float angle, int orientation,
float moveSpeed, boolean reverseRotate, int maxVisibleItemCount, boolean reverseLayout) {
private RotateLayoutManager(Context context, int itemSpace, float angle, int orientation, float moveSpeed,
boolean reverseRotate, int maxVisibleItemCount, int shrinkSpace, boolean reverseLayout) {
super(context, orientation, reverseLayout);
setIntegerDy(true);
setShrinkSpace(shrinkSpace);
setMaxVisibleItemCount(maxVisibleItemCount);
this.itemSpace = itemSpace;
this.angle = angle;
Expand Down Expand Up @@ -128,6 +129,7 @@ public static class Builder {
private boolean reverseLayout;
private Context context;
private int maxVisibleItemCount;
private int shrinkSpace;

public Builder(Context context, int itemSpace) {
this.context = context;
Expand Down Expand Up @@ -170,6 +172,11 @@ public Builder setMaxVisibleItemCount(int maxVisibleItemCount) {
return this;
}

public Builder setShrinkSpace(int shrinkSpace) {
this.shrinkSpace = shrinkSpace;
return this;
}

public RotateLayoutManager build() {
return new RotateLayoutManager(this);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,13 +31,14 @@ public ScaleLayoutManager(Context context, int itemSpace, int orientation, boole

public ScaleLayoutManager(Builder builder) {
this(builder.context, builder.itemSpace, builder.centerScale, builder.maxAlpha, builder.minAlpha,
builder.orientation, builder.moveSpeed, builder.maxVisibleItemCount, builder.reverseLayout);
builder.orientation, builder.moveSpeed, builder.maxVisibleItemCount, builder.shrinkSpace, builder.reverseLayout);
}

private ScaleLayoutManager(Context context, int itemSpace, float centerScale, float maxAlpha, float minAlpha,
int orientation, float moveSpeed, int maxVisibleItemCount, boolean reverseLayout) {
int orientation, float moveSpeed, int maxVisibleItemCount, int shrinkSpace, boolean reverseLayout) {
super(context, orientation, reverseLayout);
setIntegerDy(true);
setShrinkSpace(shrinkSpace);
setMaxVisibleItemCount(maxVisibleItemCount);
this.itemSpace = itemSpace;
this.centerScale = centerScale;
Expand Down Expand Up @@ -125,7 +126,7 @@ protected void setItemViewProperty(View itemView, float targetOffset) {
}

private float calAlpha(float targetOffset) {
final float offset = Math.abs(targetOffset);
final float offset = Math.abs(targetOffset);
float alpha = (minAlpha - maxAlpha) / mInterval * offset + maxAlpha;
if (offset >= mInterval) alpha = minAlpha;
return alpha;
Expand Down Expand Up @@ -155,6 +156,7 @@ public static class Builder {
private static float MAX_ALPHA = 1f;

private int itemSpace;
private int shrinkSpace;
private int orientation;
private float centerScale;
private float moveSpeed;
Expand Down Expand Up @@ -213,6 +215,11 @@ public Builder setMaxVisibleItemCount(int maxVisibleItemCount) {
return this;
}

public Builder setShrinkSpace(int shrinkSpace) {
this.shrinkSpace = shrinkSpace;
return this;
}

public ScaleLayoutManager build() {
return new ScaleLayoutManager(this);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -97,6 +97,11 @@ public abstract class ViewPagerLayoutManager extends LinearLayoutManager
*/
private int mMaxVisibleItemCount = DETERMINE_BY_MAX_AND_MIN;

/**
* when the size of main direction will minus twice of it
*/
private int shrinkSpace;

/**
* @return the mInterval of each item's mOffset
*/
Expand Down Expand Up @@ -352,7 +357,7 @@ public void onLayoutChildren(RecyclerView.Recycler recycler, RecyclerView.State
//make sure properties are correct while measure more than once
View scrap = recycler.getViewForPosition(0);
measureChildWithMargins(scrap, 0, 0);
mDecoratedMeasurement = mOrientationHelper.getDecoratedMeasurement(scrap);
mDecoratedMeasurement = mOrientationHelper.getDecoratedMeasurement(scrap) - 2 * shrinkSpace;
mDecoratedMeasurementInOther = mOrientationHelper.getDecoratedMeasurementInOther(scrap);
mSpaceMain = (mOrientationHelper.getTotalSpace() - mDecoratedMeasurement) / 2;
mSpaceInOther = (mOrientationHelper.getTotalSpaceInOther() - mDecoratedMeasurementInOther) / 2;
Expand Down Expand Up @@ -739,6 +744,17 @@ public boolean getInfinite() {
return mInfinite;
}

public int getShrinkSpace() {
return shrinkSpace;
}

public void setShrinkSpace(int shrinkSpace) {
assertNotInLayoutOrScroll(null);
if (this.shrinkSpace == shrinkSpace) return;
this.shrinkSpace = shrinkSpace;
removeAllViews();
}

/**
* When smooth scrollbar is enabled, the position and size of the scrollbar thumb is computed
* based on the number of visible pixels in the visible items. This however assumes that all
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
<modelVersion>4.0.0</modelVersion>
<groupId>rouchuan.viewpagerlayoutmanager</groupId>
<artifactId>viewpagerlayoutmanager</artifactId>
<version>2.0.4</version>
<version>2.0.5</version>
<packaging>aar</packaging>
<name>Viewpager Layout Manager</name>
<url>https://github.com/leochuan/ViewPagerLayoutManager</url>
Expand Down

0 comments on commit 267f0b7

Please sign in to comment.