Skip to content

Commit

Permalink
update version to 2.1.0
Browse files Browse the repository at this point in the history
  • Loading branch information
cpacm committed Jun 6, 2018
1 parent 8296818 commit 5881f72
Show file tree
Hide file tree
Showing 44 changed files with 559 additions and 793 deletions.
54 changes: 37 additions & 17 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,32 +3,57 @@
I wrote this library just because I want a lightweight slider.
>Use your own imageloader;
>Create your own indicator;
>Variety of transition effects;
>Customize the animation of each page.
>Variety of transition effects.
~(~ ̄▽ ̄)~
这是一款轻量级的图片轮播器,它包括了一下几个特点:

## Demo
>与图片加载框架完全解耦;
>内置常用的指示器,基本满足对指示器的需求;
>丰富多彩的转场动画,亦可以发挥你的创意创造新的特效;
>内置不同款式的轮播器。
[中文文档](http://www.cpacm.net/2016/06/03/%E5%BC%80%E6%BA%90%E9%A1%B9%E7%9B%AE%EF%BC%9A%E4%B8%80%E4%B8%AA%E9%AB%98%E5%BA%A6%E8%87%AA%E7%94%B1%E7%9A%84%E8%BD%BB%E9%87%8F%E5%8C%96Slider/)

![simpleslider](https://raw.githubusercontent.com/cpacm/SimpleSlider/develop/pic/simpleslider.png)

## How to use

### Gradle

```groovy
dependencies {
compile 'com.cpacm.simpleslider:library:2.0.0'
compile 'com.cpacm.simpleslider:library:2.1.0'
}
```


### Add the slider to your layout
```xml
<com.cpacm.library.SimpleSlider
android:id="@+id/simple_slider"
android:layout_width="match_parent"
android:layout_height="140dp">

</com.cpacm.library.SimpleSlider>
```

### Config in your code

```java
simpleSlider.setInfiniteEnable(true);
simpleSlider.startAutoScroll(true);
simpleSlider.setSliderDuration(3000);
simpleSlider.setSliderTransformDuration(DEFAULT_SCROLL_DURATION, new SpringInterpolator());
simpleSlider.setPageTransformer(new ZoomOutSlideTransformer());
circlePageIndicator = (CirclePageIndicator) findViewById(R.id.indicator);
circlePageIndicator.setViewPager(simpleSlider);
```

## Advanced usage

### Basic
![indicator](https://raw.githubusercontent.com/cpacm/SimpleSlider/develop/pic/BasicSlider.gif)


### Indicator

![indicator](https://raw.githubusercontent.com/cpacm/SimpleSlider/develop/pic/simpleslider_indicator.gif)
![indicator](https://raw.githubusercontent.com/cpacm/SimpleSlider/develop/pic/IndicatorSlider.gif)

- `CirclePageIndicator`
- `IconPageIndicator`
Expand All @@ -44,25 +69,20 @@ Modify from [SpringIndicator](https://github.com/chenupt/SpringIndicator)
**You can customize the indicator implements `PageIndicator`**

### Transform
![Transform](https://raw.githubusercontent.com/cpacm/SimpleSlider/develop/pic/simpleslider_transform.gif)
![Transform](https://raw.githubusercontent.com/cpacm/SimpleSlider/develop/pic/TransformSlider.gif)

The above transforms come from [AndroidImageSlider](https://github.com/daimajia/AndroidImageSlider)

**You can customize the transform extends `BaseTransformer`**

### Animation
![Transform](https://raw.githubusercontent.com/cpacm/SimpleSlider/develop/pic/simpleslider_animation.gif)

**You can customize the animation implements `OnAnimationListener`**

## **Note:**
**In the infinite loop mode, at least three sliders.**
**Android API >= 3.0**

License
---

Copyright 2016 cpacm
Copyright 2018 cpacm

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
Expand Down
4 changes: 2 additions & 2 deletions app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,8 @@ android {
applicationId "com.cpacm.simpleslider"
minSdkVersion 15
targetSdkVersion 27
versionCode 2
versionName "2.0"
versionCode 5
versionName "2.1.0"
}
buildTypes {
release {
Expand Down
29 changes: 23 additions & 6 deletions app/src/main/java/com/cpacm/simpleslider/BasicActivity.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,18 +3,19 @@
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.Menu;
import android.view.MenuItem;
import android.view.animation.Interpolator;

import com.cpacm.library.SimpleViewPager;
import com.cpacm.library.transformers.CyclePageTransformer;

import com.cpacm.library.indicator.ViewpagerIndicator.CirclePageIndicator;

public class BasicActivity extends AppCompatActivity {
private final static int DEFAULT_SCROLL_DURATION = 500;

private SimpleViewPager simpleSlider;
private CirclePageIndicator circlePageIndicator;

SimpleViewPager simpleSlider, simpleSlider2;

@Override
protected void onCreate(Bundle savedInstanceState) {
Expand All @@ -27,9 +28,13 @@ protected void onCreate(Bundle savedInstanceState) {
simpleSlider = (SimpleViewPager) findViewById(R.id.simple_slider);
simpleSlider.setAdapter(new BasicPagerAdapter(this));
simpleSlider.startAutoScroll(true);
simpleSlider.setPageTransformer(new CyclePageTransformer(simpleSlider));//翻页动画
//circlePageIndicator = (CirclePageIndicator) findViewById(R.id.indicator);
//simpleSlider.setViewPagerIndicator(circlePageIndicator);//为viewpager设置指示器
simpleSlider.setSliderTransformDuration(DEFAULT_SCROLL_DURATION, new SpringInterpolator());

simpleSlider2 = (SimpleViewPager) findViewById(R.id.simple_slider2);
simpleSlider2.setAdapter(new BasicPagerAdapter(this));
simpleSlider2.startAutoScroll(true);
simpleSlider2.setPageTransformer(new CyclePageTransformer(simpleSlider2));//翻页动画

}

@Override
Expand All @@ -43,4 +48,16 @@ public boolean onOptionsItemSelected(MenuItem item) {
}
return super.onOptionsItemSelected(item);
}

//spring interpolator
private final class SpringInterpolator implements Interpolator {

private final static float FACTOR = 0.5F;

@Override
public float getInterpolation(final float input) {
return (float) (Math.pow(2.0F, -10.0F * input) *
Math.sin((input - FACTOR / 4.0F) * (2.0F * Math.PI) / FACTOR) + 1.0F);
}
}
}
13 changes: 1 addition & 12 deletions app/src/main/java/com/cpacm/simpleslider/IndicatorActivity.java
Original file line number Diff line number Diff line change
Expand Up @@ -76,13 +76,6 @@ protected void onCreate(Bundle savedInstanceState) {
springIndicator.setViewPager(simpleSliderLayout);
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
Expand All @@ -92,11 +85,7 @@ public boolean onOptionsItemSelected(MenuItem item) {
if (id == android.R.id.home) {
finish();
}
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}

return super.onOptionsItemSelected(item);
}

}
2 changes: 2 additions & 0 deletions app/src/main/java/com/cpacm/simpleslider/SliderActivity.java
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
package com.cpacm.simpleslider;

import android.content.Intent;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.Toolbar;
Expand Down Expand Up @@ -74,6 +75,7 @@ public boolean onOptionsItemSelected(MenuItem item) {

//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
Snackbar.make(getWindow().getDecorView().findViewById(android.R.id.content), "SimpleSlider created by cpacm!", Snackbar.LENGTH_SHORT).show();
return true;
}

Expand Down
72 changes: 44 additions & 28 deletions app/src/main/java/com/cpacm/simpleslider/TransformActivity.java
Original file line number Diff line number Diff line change
Expand Up @@ -33,18 +33,22 @@
import com.cpacm.library.transformers.BackgroundToForegroundTransformer;
import com.cpacm.library.transformers.BaseTransformer;
import com.cpacm.library.transformers.CubeInTransformer;
import com.cpacm.library.transformers.CubeOutTransformer;
import com.cpacm.library.transformers.DefaultTransformer;
import com.cpacm.library.transformers.DepthPageTransformer;
import com.cpacm.library.transformers.DrawerTransformer;
import com.cpacm.library.transformers.FadeTransformer;
import com.cpacm.library.transformers.FlipHorizontalTransformer;
import com.cpacm.library.transformers.FlipPageViewTransformer;
import com.cpacm.library.transformers.ForegroundToBackgroundTransformer;
import com.cpacm.library.transformers.RotateDownTransformer;
import com.cpacm.library.transformers.RotateUpTransformer;
import com.cpacm.library.transformers.ScaleInOutTransformer;
import com.cpacm.library.transformers.StackTransformer;
import com.cpacm.library.transformers.TabletTransformer;
import com.cpacm.library.transformers.ZoomInTransformer;
import com.cpacm.library.transformers.ZoomOutSlideTransformer;
import com.cpacm.library.transformers.ZoomOutTransformer;

import java.util.ArrayList;
import java.util.List;
Expand All @@ -65,6 +69,7 @@ protected void onCreate(Bundle savedInstanceState) {
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
simpleViewPager = (SimpleViewPager) findViewById(R.id.simple_slider);
simpleViewPager.startAutoScroll(true);

initTransforms();

Expand All @@ -77,13 +82,6 @@ protected void onCreate(Bundle savedInstanceState) {
}


@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
Expand All @@ -93,28 +91,34 @@ public boolean onOptionsItemSelected(MenuItem item) {
if (id == android.R.id.home) {
finish();
}
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}

return super.onOptionsItemSelected(item);
}

public class TransformAdapter extends RecyclerView.Adapter<TransformAdapter.NormalTextViewHolder> {

private int selectIndex = -1;

@Override
public NormalTextViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
return new NormalTextViewHolder(LayoutInflater.from(TransformActivity.this).inflate(R.layout.list_item, parent, false));
}

@Override
public void onBindViewHolder(NormalTextViewHolder holder, final int position) {
public void onBindViewHolder(final NormalTextViewHolder holder, final int position) {
holder.mTextView.setText(transformerNames.get(position));
if (selectIndex == position) {
holder.mTextView.setTextColor(getResources().getColor(R.color.colorPrimary));
} else {
holder.mTextView.setTextColor(getResources().getColor(android.R.color.black));
}
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
simpleViewPager.setPageTransformer(transformers.get(position));
int lastPosition = selectIndex;
selectIndex = position;
notifyItemChanged(lastPosition);
notifyItemChanged(selectIndex);
}
});
}
Expand All @@ -139,48 +143,60 @@ private void initTransforms() {
transformerNames = new ArrayList<>();

transformers.add(new AccordionTransformer());
transformerNames.add("AccordionTransformer");
transformerNames.add(AccordionTransformer.class.getSimpleName());

transformers.add(new BackgroundToForegroundTransformer());
transformerNames.add("BackgroundToForegroundTransformer");
transformerNames.add(BackgroundToForegroundTransformer.class.getSimpleName());

transformers.add(new CubeInTransformer());
transformerNames.add("CubeInTransformer");
transformerNames.add(CubeInTransformer.class.getSimpleName());

transformers.add(new CubeOutTransformer());
transformerNames.add(CubeOutTransformer.class.getSimpleName());

transformers.add(new DefaultTransformer());
transformerNames.add("DefaultTransformer");
transformerNames.add(DefaultTransformer.class.getSimpleName());

transformers.add(new DepthPageTransformer());
transformerNames.add("DepthPageTransformer");
transformerNames.add(DepthPageTransformer.class.getSimpleName());

transformers.add(new DrawerTransformer());
transformerNames.add(DrawerTransformer.class.getSimpleName());

transformers.add(new FadeTransformer());
transformerNames.add("FadeTransformer");
transformerNames.add(FadeTransformer.class.getSimpleName());

transformers.add(new FlipHorizontalTransformer());
transformerNames.add("FlipHorizontalTransformer");
transformerNames.add(FlipHorizontalTransformer.class.getSimpleName());

transformers.add(new FlipPageViewTransformer());
transformerNames.add("FlipPageViewTransformer");
transformerNames.add(FlipPageViewTransformer.class.getSimpleName());

transformers.add(new ForegroundToBackgroundTransformer());
transformerNames.add("ForegroundToBackgroundTransformer");
transformerNames.add(ForegroundToBackgroundTransformer.class.getSimpleName());

transformers.add(new RotateDownTransformer());
transformerNames.add("RotateDownTransformer");
transformerNames.add(RotateDownTransformer.class.getSimpleName());

transformers.add(new RotateUpTransformer());
transformerNames.add("RotateUpTransformer");
transformerNames.add(RotateUpTransformer.class.getSimpleName());

transformers.add(new ScaleInOutTransformer());
transformerNames.add(ScaleInOutTransformer.class.getSimpleName());

transformers.add(new StackTransformer());
transformerNames.add("StackTransformer");
transformerNames.add(StackTransformer.class.getSimpleName());

transformers.add(new TabletTransformer());
transformerNames.add("TabletTransformer");
transformerNames.add(TabletTransformer.class.getSimpleName());

transformers.add(new ZoomInTransformer());
transformerNames.add("ZoomInTransformer");
transformerNames.add(ZoomInTransformer.class.getSimpleName());

transformers.add(new ZoomOutSlideTransformer());
transformerNames.add("ZoomOutSlideTransformer");
transformerNames.add(ZoomOutSlideTransformer.class.getSimpleName());

transformers.add(new ZoomOutTransformer());
transformerNames.add(ZoomOutTransformer.class.getSimpleName());
}
}
Loading

0 comments on commit 5881f72

Please sign in to comment.