diff --git a/.travis.yml b/.travis.yml index 452e48d..797c2f4 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,25 +1,12 @@ language: android android: components: - # Uncomment the lines below if you want to - # use the latest revision of Android SDK Tools - # - platform-tools - # - tools - - # The BuildTools version used by your project - - build-tools-22.0.1 - - # The SDK version used to compile your project - - android-22 - - # Additional components - - extra-google-google_play_services - - extra-google-m2repository - - extra-android-m2repository - - addon-google_apis-google-19 - - # Specify at least one system image, - # if you need to run emulator(s) during your tests - - sys-img-armeabi-v7a-android-19 - - sys-img-x86-android-17 -script: ./gradlew assembleDebug + - tools + - platform-tools + - build-tools-25.0.2 + - android-25 + - extra-android-support + - extra + - extra-android-m2repository +script: + - ./gradlew assembleDebug \ No newline at end of file diff --git a/build.gradle b/build.gradle index 49166ee..ab115a3 100644 --- a/build.gradle +++ b/build.gradle @@ -9,8 +9,7 @@ buildscript { mavenCentral() } dependencies { - classpath 'com.android.tools.build:gradle:1.1.2' - classpath 'com.jakewharton.sdkmanager:gradle-plugin:0.10.+' + classpath 'com.android.tools.build:gradle:2.2.3' } } diff --git a/demo/build.gradle b/demo/build.gradle index de31b19..283285c 100644 --- a/demo/build.gradle +++ b/demo/build.gradle @@ -1,14 +1,13 @@ -apply plugin: 'android-sdk-manager' apply plugin: 'com.android.application' android { - compileSdkVersion 22 - buildToolsVersion "22.0.1" + compileSdkVersion 25 + buildToolsVersion "25.0.2" defaultConfig { - minSdkVersion 8 - targetSdkVersion 22 + minSdkVersion 11 + targetSdkVersion 25 versionCode 2 versionName "1.0.1" } @@ -22,7 +21,6 @@ android { dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) compile project(':library') - compile 'com.android.support:appcompat-v7:22.+' - compile 'com.nineoldandroids:library:2.4.0' + compile 'com.android.support:appcompat-v7:25.1.1' compile 'com.daimajia.androidanimations:library:1.0.3@aar' } diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 918e0f3..0128637 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ -#Sun May 03 23:34:25 CST 2015 +#Fri Feb 17 17:23:25 CST 2017 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-2.2.1-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-2.14.1-all.zip diff --git a/library/build.gradle b/library/build.gradle index b2e8cc6..d096c07 100644 --- a/library/build.gradle +++ b/library/build.gradle @@ -1,12 +1,12 @@ apply plugin: 'com.android.library' android { - compileSdkVersion 22 - buildToolsVersion "22.0.1" + compileSdkVersion 25 + buildToolsVersion "25.0.2" defaultConfig { - minSdkVersion 8 - targetSdkVersion 22 + minSdkVersion 11 + targetSdkVersion 25 versionCode 15 versionName "1.1.5" } @@ -22,9 +22,8 @@ android { dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) - compile 'com.android.support:appcompat-v7:22.1.1' - compile "com.android.support:support-v4:22.1.1" + compile 'com.android.support:appcompat-v7:25.1.1' + compile "com.android.support:support-v4:25.1.1" compile 'com.squareup.picasso:picasso:2.5.2' - compile 'com.nineoldandroids:library:2.4.0' } apply from: './gradle-mvn-push.gradle' diff --git a/library/src/main/java/com/daimajia/slider/library/Animations/DescriptionAnimation.java b/library/src/main/java/com/daimajia/slider/library/Animations/DescriptionAnimation.java index 6c03d99..79cee72 100644 --- a/library/src/main/java/com/daimajia/slider/library/Animations/DescriptionAnimation.java +++ b/library/src/main/java/com/daimajia/slider/library/Animations/DescriptionAnimation.java @@ -1,11 +1,11 @@ package com.daimajia.slider.library.Animations; +import android.animation.ObjectAnimator; +import android.animation.ValueAnimator; +import android.support.v4.view.ViewCompat; import android.view.View; import com.daimajia.slider.library.R; -import com.nineoldandroids.animation.ObjectAnimator; -import com.nineoldandroids.animation.ValueAnimator; -import com.nineoldandroids.view.ViewHelper; /** * A demo class to show how to use {@link com.daimajia.slider.library.Animations.BaseAnimationInterface} @@ -49,7 +49,7 @@ public void onNextItemAppear(View view) { View descriptionLayout = view.findViewById(R.id.description_layout); if(descriptionLayout!=null){ - float layoutY = ViewHelper.getY(descriptionLayout); + float layoutY = ViewCompat.getY(descriptionLayout); view.findViewById(R.id.description_layout).setVisibility(View.VISIBLE); ValueAnimator animator = ObjectAnimator.ofFloat( descriptionLayout,"y",layoutY + descriptionLayout.getHeight(), diff --git a/library/src/main/java/com/daimajia/slider/library/SliderLayout.java b/library/src/main/java/com/daimajia/slider/library/SliderLayout.java index ba36e5e..cbce814 100644 --- a/library/src/main/java/com/daimajia/slider/library/SliderLayout.java +++ b/library/src/main/java/com/daimajia/slider/library/SliderLayout.java @@ -43,48 +43,46 @@ /** * SliderLayout is compound layout. This is combined with {@link com.daimajia.slider.library.Indicators.PagerIndicator} * and {@link com.daimajia.slider.library.Tricks.ViewPagerEx} . - * + *

* There is some properties you can set in XML: - * + *

* indicator_visibility - * visible - * invisible - * + * visible + * invisible + *

* indicator_shape - * oval - * rect - * + * oval + * rect + *

* indicator_selected_color - * + *

* indicator_unselected_color - * + *

* indicator_selected_drawable - * + *

* indicator_unselected_drawable - * + *

* pager_animation - * Default - * Accordion - * Background2Foreground - * CubeIn - * DepthPage - * Fade - * FlipHorizontal - * FlipPage - * Foreground2Background - * RotateDown - * RotateUp - * Stack - * Tablet - * ZoomIn - * ZoomOutSlide - * ZoomOut - * + * Default + * Accordion + * Background2Foreground + * CubeIn + * DepthPage + * Fade + * FlipHorizontal + * FlipPage + * Foreground2Background + * RotateDown + * RotateUp + * Stack + * Tablet + * ZoomIn + * ZoomOutSlide + * ZoomOut + *

* pager_animation_span - * - * */ -public class SliderLayout extends RelativeLayout{ +public class SliderLayout extends RelativeLayout { private Context mContext; /** @@ -159,11 +157,11 @@ public class SliderLayout extends RelativeLayout{ */ public SliderLayout(Context context) { - this(context,null); + this(context, null); } public SliderLayout(Context context, AttributeSet attrs) { - this(context,attrs,R.attr.SliderStyle); + this(context, attrs, R.attr.SliderStyle); } public SliderLayout(Context context, AttributeSet attrs, int defStyle) { @@ -171,15 +169,15 @@ public SliderLayout(Context context, AttributeSet attrs, int defStyle) { mContext = context; LayoutInflater.from(context).inflate(R.layout.slider_layout, this, true); - final TypedArray attributes = context.getTheme().obtainStyledAttributes(attrs,R.styleable.SliderLayout, - defStyle,0); + final TypedArray attributes = context.getTheme().obtainStyledAttributes(attrs, R.styleable.SliderLayout, + defStyle, 0); mTransformerSpan = attributes.getInteger(R.styleable.SliderLayout_pager_animation_span, 1100); mTransformerId = attributes.getInt(R.styleable.SliderLayout_pager_animation, Transformer.Default.ordinal()); - mAutoCycle = attributes.getBoolean(R.styleable.SliderLayout_auto_cycle,true); - int visibility = attributes.getInt(R.styleable.SliderLayout_indicator_visibility,0); - for(PagerIndicator.IndicatorVisibility v: PagerIndicator.IndicatorVisibility.values()){ - if(v.ordinal() == visibility){ + mAutoCycle = attributes.getBoolean(R.styleable.SliderLayout_auto_cycle, true); + int visibility = attributes.getInt(R.styleable.SliderLayout_indicator_visibility, 0); + for (PagerIndicator.IndicatorVisibility v : PagerIndicator.IndicatorVisibility.values()) { + if (v.ordinal() == visibility) { mIndicatorVisibility = v; break; } @@ -187,7 +185,7 @@ public SliderLayout(Context context, AttributeSet attrs, int defStyle) { mSliderAdapter = new SliderAdapter(mContext); PagerAdapter wrappedAdapter = new InfinitePagerAdapter(mSliderAdapter); - mViewPager = (InfiniteViewPager)findViewById(R.id.daimajia_slider_viewpager); + mViewPager = (InfiniteViewPager) findViewById(R.id.daimajia_slider_viewpager); mViewPager.setAdapter(wrappedAdapter); mViewPager.setOnTouchListener(new OnTouchListener() { @@ -195,7 +193,7 @@ public SliderLayout(Context context, AttributeSet attrs, int defStyle) { public boolean onTouch(View v, MotionEvent event) { int action = event.getAction(); switch (action) { - case MotionEvent.ACTION_UP: + case MotionEvent.ACTION_UP: recoverCycle(); break; } @@ -206,15 +204,15 @@ public boolean onTouch(View v, MotionEvent event) { attributes.recycle(); setPresetIndicator(PresetIndicators.Center_Bottom); setPresetTransformer(mTransformerId); - setSliderTransformDuration(mTransformerSpan,null); + setSliderTransformDuration(mTransformerSpan, null); setIndicatorVisibility(mIndicatorVisibility); - if(mAutoCycle){ + if (mAutoCycle) { startAutoCycle(); } } - public void addOnPageChangeListener(ViewPagerEx.OnPageChangeListener onPageChangeListener){ - if(onPageChangeListener != null){ + public void addOnPageChangeListener(ViewPagerEx.OnPageChangeListener onPageChangeListener) { + if (onPageChangeListener != null) { mViewPager.addOnPageChangeListener(onPageChangeListener); } } @@ -223,8 +221,8 @@ public void removeOnPageChangeListener(ViewPagerEx.OnPageChangeListener onPageCh mViewPager.removeOnPageChangeListener(onPageChangeListener); } - public void setCustomIndicator(PagerIndicator indicator){ - if(mIndicator != null){ + public void setCustomIndicator(PagerIndicator indicator) { + if (mIndicator != null) { mIndicator.destroySelf(); } mIndicator = indicator; @@ -233,11 +231,11 @@ public void setCustomIndicator(PagerIndicator indicator){ mIndicator.redraw(); } - public void addSlider(T imageContent){ + public void addSlider(T imageContent) { mSliderAdapter.addSlider(imageContent); } - private android.os.Handler mh = new android.os.Handler(){ + private android.os.Handler mh = new android.os.Handler() { @Override public void handleMessage(Message msg) { super.handleMessage(msg); @@ -245,21 +243,22 @@ public void handleMessage(Message msg) { } }; - public void startAutoCycle(){ + public void startAutoCycle() { startAutoCycle(mSliderDuration, mSliderDuration, mAutoRecover); } /** * start auto cycle. - * @param delay delay time - * @param duration animation duration time. + * + * @param delay delay time + * @param duration animation duration time. * @param autoRecover if recover after user touches the slider. */ - public void startAutoCycle(long delay,long duration,boolean autoRecover){ - if(mCycleTimer != null) mCycleTimer.cancel(); - if(mCycleTask != null) mCycleTask.cancel(); - if(mResumingTask != null) mResumingTask.cancel(); - if(mResumingTimer != null) mResumingTimer.cancel(); + public void startAutoCycle(long delay, long duration, boolean autoRecover) { + if (mCycleTimer != null) mCycleTimer.cancel(); + if (mCycleTask != null) mCycleTask.cancel(); + if (mResumingTask != null) mResumingTask.cancel(); + if (mResumingTimer != null) mResumingTimer.cancel(); mSliderDuration = duration; mCycleTimer = new Timer(); mAutoRecover = autoRecover; @@ -269,7 +268,7 @@ public void run() { mh.sendEmptyMessage(0); } }; - mCycleTimer.schedule(mCycleTask,delay,mSliderDuration); + mCycleTimer.schedule(mCycleTask, delay, mSliderDuration); mCycling = true; mAutoCycle = true; } @@ -277,13 +276,13 @@ public void run() { /** * pause auto cycle. */ - private void pauseAutoCycle(){ - if(mCycling){ + private void pauseAutoCycle() { + if (mCycling) { mCycleTimer.cancel(); mCycleTask.cancel(); mCycling = false; - }else{ - if(mResumingTimer != null && mResumingTask != null){ + } else { + if (mResumingTimer != null && mResumingTask != null) { recoverCycle(); } } @@ -291,12 +290,13 @@ private void pauseAutoCycle(){ /** * set the duration between two slider changes. the duration value must >= 500 + * * @param duration */ - public void setDuration(long duration){ - if(duration >= 500){ + public void setDuration(long duration) { + if (duration >= 500) { mSliderDuration = duration; - if(mAutoCycle && mCycling){ + if (mAutoCycle && mCycling) { startAutoCycle(); } } @@ -305,17 +305,17 @@ public void setDuration(long duration){ /** * stop the auto circle */ - public void stopAutoCycle(){ - if(mCycleTask!=null){ + public void stopAutoCycle() { + if (mCycleTask != null) { mCycleTask.cancel(); } - if(mCycleTimer!= null){ + if (mCycleTimer != null) { mCycleTimer.cancel(); } - if(mResumingTimer!= null){ + if (mResumingTimer != null) { mResumingTimer.cancel(); } - if(mResumingTask!=null){ + if (mResumingTask != null) { mResumingTask.cancel(); } mAutoCycle = false; @@ -325,13 +325,13 @@ public void stopAutoCycle(){ /** * when paused cycle, this method can weak it up. */ - private void recoverCycle(){ - if(!mAutoRecover || !mAutoCycle){ + private void recoverCycle() { + if (!mAutoRecover || !mAutoCycle) { return; } - if(!mCycling){ - if(mResumingTask != null && mResumingTimer!= null){ + if (!mCycling) { + if (mResumingTask != null && mResumingTimer != null) { mResumingTimer.cancel(); mResumingTask.cancel(); } @@ -347,7 +347,6 @@ public void run() { } - @Override public boolean onInterceptTouchEvent(MotionEvent ev) { int action = ev.getAction(); @@ -361,29 +360,30 @@ public boolean onInterceptTouchEvent(MotionEvent ev) { /** * set ViewPager transformer. + * * @param reverseDrawingOrder * @param transformer */ - public void setPagerTransformer(boolean reverseDrawingOrder,BaseTransformer transformer){ + public void setPagerTransformer(boolean reverseDrawingOrder, BaseTransformer transformer) { mViewPagerTransformer = transformer; mViewPagerTransformer.setCustomAnimationInterface(mCustomAnimation); - mViewPager.setPageTransformer(reverseDrawingOrder,mViewPagerTransformer); + mViewPager.setPageTransformer(reverseDrawingOrder, mViewPagerTransformer); } - /** * set the duration between two slider changes. + * * @param period * @param interpolator */ - public void setSliderTransformDuration(int period,Interpolator interpolator){ - try{ + public void setSliderTransformDuration(int period, Interpolator interpolator) { + try { Field mScroller = ViewPagerEx.class.getDeclaredField("mScroller"); mScroller.setAccessible(true); - FixedSpeedScroller scroller = new FixedSpeedScroller(mViewPager.getContext(),interpolator, period); - mScroller.set(mViewPager,scroller); - }catch (Exception e){ + FixedSpeedScroller scroller = new FixedSpeedScroller(mViewPager.getContext(), interpolator, period); + mScroller.set(mViewPager, scroller); + } catch (Exception e) { } } @@ -391,7 +391,7 @@ public void setSliderTransformDuration(int period,Interpolator interpolator){ /** * preset transformers and their names */ - public enum Transformer{ + public enum Transformer { Default("Default"), Accordion("Accordion"), Background2Foreground("Background2Foreground"), @@ -411,25 +411,29 @@ public enum Transformer{ private final String name; - private Transformer(String s){ + private Transformer(String s) { name = s; } - public String toString(){ + + public String toString() { return name; } - public boolean equals(String other){ - return (other == null)? false:name.equals(other); + public boolean equals(String other) { + return (other == null) ? false : name.equals(other); } - }; + } + + ; /** * set a preset viewpager transformer by id. + * * @param transformerId */ - public void setPresetTransformer(int transformerId){ - for(Transformer t : Transformer.values()){ - if(t.ordinal() == transformerId){ + public void setPresetTransformer(int transformerId) { + for (Transformer t : Transformer.values()) { + if (t.ordinal() == transformerId) { setPresetTransformer(t); break; } @@ -438,11 +442,12 @@ public void setPresetTransformer(int transformerId){ /** * set preset PagerTransformer via the name of transforemer. + * * @param transformerName */ - public void setPresetTransformer(String transformerName){ - for(Transformer t : Transformer.values()){ - if(t.equals(transformerName)){ + public void setPresetTransformer(String transformerName) { + for (Transformer t : Transformer.values()) { + if (t.equals(transformerName)) { setPresetTransformer(t); return; } @@ -453,11 +458,12 @@ public void setPresetTransformer(String transformerName){ * Inject your custom animation into PageTransformer, you can know more details in * {@link com.daimajia.slider.library.Animations.BaseAnimationInterface}, * and you can see a example in {@link com.daimajia.slider.library.Animations.DescriptionAnimation} + * * @param animation */ - public void setCustomAnimation(BaseAnimationInterface animation){ + public void setCustomAnimation(BaseAnimationInterface animation) { mCustomAnimation = animation; - if(mViewPagerTransformer != null){ + if (mViewPagerTransformer != null) { mViewPagerTransformer.setCustomAnimationInterface(mCustomAnimation); } } @@ -467,12 +473,12 @@ public void setCustomAnimation(BaseAnimationInterface animation){ * * @param ts */ - public void setPresetTransformer(Transformer ts){ + public void setPresetTransformer(Transformer ts) { // // special thanks to https://github.com/ToxicBakery/ViewPagerTransforms // BaseTransformer t = null; - switch (ts){ + switch (ts) { case Default: t = new DefaultTransformer(); break; @@ -522,25 +528,25 @@ public void setPresetTransformer(Transformer ts){ t = new ZoomOutTransformer(); break; } - setPagerTransformer(true,t); + setPagerTransformer(true, t); } - /** * Set the visibility of the indicators. + * * @param visibility */ - public void setIndicatorVisibility(PagerIndicator.IndicatorVisibility visibility){ - if(mIndicator == null){ + public void setIndicatorVisibility(PagerIndicator.IndicatorVisibility visibility) { + if (mIndicator == null) { return; } mIndicator.setIndicatorVisibility(visibility); } - public PagerIndicator.IndicatorVisibility getIndicatorVisibility(){ - if(mIndicator == null){ + public PagerIndicator.IndicatorVisibility getIndicatorVisibility() { + if (mIndicator == null) { return mIndicator.getIndicatorVisibility(); } return PagerIndicator.IndicatorVisibility.Invisible; @@ -550,64 +556,68 @@ public PagerIndicator.IndicatorVisibility getIndicatorVisibility(){ /** * get the {@link com.daimajia.slider.library.Indicators.PagerIndicator} instance. * You can manipulate the properties of the indicator. + * * @return */ - public PagerIndicator getPagerIndicator(){ + public PagerIndicator getPagerIndicator() { return mIndicator; } - public enum PresetIndicators{ - Center_Bottom("Center_Bottom",R.id.default_center_bottom_indicator), - Right_Bottom("Right_Bottom",R.id.default_bottom_right_indicator), - Left_Bottom("Left_Bottom",R.id.default_bottom_left_indicator), - Center_Top("Center_Top",R.id.default_center_top_indicator), - Right_Top("Right_Top",R.id.default_center_top_right_indicator), - Left_Top("Left_Top",R.id.default_center_top_left_indicator); + public enum PresetIndicators { + Center_Bottom("Center_Bottom", R.id.default_center_bottom_indicator), + Right_Bottom("Right_Bottom", R.id.default_bottom_right_indicator), + Left_Bottom("Left_Bottom", R.id.default_bottom_left_indicator), + Center_Top("Center_Top", R.id.default_center_top_indicator), + Right_Top("Right_Top", R.id.default_center_top_right_indicator), + Left_Top("Left_Top", R.id.default_center_top_left_indicator); private final String name; private final int id; - private PresetIndicators(String name,int id){ + + private PresetIndicators(String name, int id) { this.name = name; this.id = id; } - public String toString(){ + public String toString() { return name; } - public int getResourceId(){ + public int getResourceId() { return id; } } - public void setPresetIndicator(PresetIndicators presetIndicator){ - PagerIndicator pagerIndicator = (PagerIndicator)findViewById(presetIndicator.getResourceId()); + + public void setPresetIndicator(PresetIndicators presetIndicator) { + PagerIndicator pagerIndicator = (PagerIndicator) findViewById(presetIndicator.getResourceId()); setCustomIndicator(pagerIndicator); } - private InfinitePagerAdapter getWrapperAdapter(){ + private InfinitePagerAdapter getWrapperAdapter() { PagerAdapter adapter = mViewPager.getAdapter(); - if(adapter!=null){ - return (InfinitePagerAdapter)adapter; - }else{ + if (adapter != null) { + return (InfinitePagerAdapter) adapter; + } else { return null; } } - private SliderAdapter getRealAdapter(){ + private SliderAdapter getRealAdapter() { PagerAdapter adapter = mViewPager.getAdapter(); - if(adapter!=null){ - return ((InfinitePagerAdapter)adapter).getRealAdapter(); + if (adapter != null) { + return ((InfinitePagerAdapter) adapter).getRealAdapter(); } return null; } /** * get the current item position + * * @return */ - public int getCurrentPosition(){ + public int getCurrentPosition() { - if(getRealAdapter() == null) + if (getRealAdapter() == null) throw new IllegalStateException("You did not set a slider adapter"); return mViewPager.getCurrentItem() % getRealAdapter().getCount(); @@ -616,49 +626,51 @@ public int getCurrentPosition(){ /** * get current slider. + * * @return */ - public BaseSliderView getCurrentSlider(){ + public BaseSliderView getCurrentSlider() { - if(getRealAdapter() == null) + if (getRealAdapter() == null) throw new IllegalStateException("You did not set a slider adapter"); int count = getRealAdapter().getCount(); int realCount = mViewPager.getCurrentItem() % count; - return getRealAdapter().getSliderView(realCount); + return getRealAdapter().getSliderView(realCount); } /** * remove the slider at the position. Notice: It's a not perfect method, a very small bug still exists. */ - public void removeSliderAt(int position){ - if(getRealAdapter()!=null){ + public void removeSliderAt(int position) { + if (getRealAdapter() != null) { getRealAdapter().removeSliderAt(position); - mViewPager.setCurrentItem(mViewPager.getCurrentItem(),false); + mViewPager.setCurrentItem(mViewPager.getCurrentItem(), false); } } /** * remove all the sliders. Notice: It's a not perfect method, a very small bug still exists. */ - public void removeAllSliders(){ - if(getRealAdapter()!=null){ + public void removeAllSliders() { + if (getRealAdapter() != null) { int count = getRealAdapter().getCount(); getRealAdapter().removeAllSliders(); //a small bug, but fixed by this trick. //bug: when remove adapter's all the sliders.some caching slider still alive. - mViewPager.setCurrentItem(mViewPager.getCurrentItem() + count,false); + mViewPager.setCurrentItem(mViewPager.getCurrentItem() + count, false); } } /** - *set current slider + * set current slider + * * @param position */ public void setCurrentPosition(int position, boolean smooth) { if (getRealAdapter() == null) throw new IllegalStateException("You did not set a slider adapter"); - if(position >= getRealAdapter().getCount()){ + if (position >= getRealAdapter().getCount()) { throw new IllegalStateException("Item position is not exist"); } int p = mViewPager.getCurrentItem() % getRealAdapter().getCount(); @@ -681,7 +693,7 @@ public void movePrevPosition(boolean smooth) { mViewPager.setCurrentItem(mViewPager.getCurrentItem() - 1, smooth); } - public void movePrevPosition(){ + public void movePrevPosition() { movePrevPosition(true); } diff --git a/library/src/main/java/com/daimajia/slider/library/Transformers/AccordionTransformer.java b/library/src/main/java/com/daimajia/slider/library/Transformers/AccordionTransformer.java index e159b9b..180e624 100644 --- a/library/src/main/java/com/daimajia/slider/library/Transformers/AccordionTransformer.java +++ b/library/src/main/java/com/daimajia/slider/library/Transformers/AccordionTransformer.java @@ -3,16 +3,17 @@ /** * Created by daimajia on 14-5-29. */ + +import android.support.v4.view.ViewCompat; import android.view.View; -import com.nineoldandroids.view.ViewHelper; public class AccordionTransformer extends BaseTransformer { @Override protected void onTransform(View view, float position) { - ViewHelper.setPivotX(view,position < 0 ? 0 : view.getWidth()); - ViewHelper.setScaleX(view,position < 0 ? 1f + position : 1f - position); + ViewCompat.setPivotX(view, position < 0 ? 0 : view.getWidth()); + ViewCompat.setScaleX(view, position < 0 ? 1f + position : 1f - position); } } \ No newline at end of file diff --git a/library/src/main/java/com/daimajia/slider/library/Transformers/BackgroundToForegroundTransformer.java b/library/src/main/java/com/daimajia/slider/library/Transformers/BackgroundToForegroundTransformer.java index d5e1572..e28f920 100644 --- a/library/src/main/java/com/daimajia/slider/library/Transformers/BackgroundToForegroundTransformer.java +++ b/library/src/main/java/com/daimajia/slider/library/Transformers/BackgroundToForegroundTransformer.java @@ -1,26 +1,26 @@ package com.daimajia.slider.library.Transformers; +import android.support.v4.view.ViewCompat; import android.view.View; -import com.nineoldandroids.view.ViewHelper; public class BackgroundToForegroundTransformer extends BaseTransformer { - @Override - protected void onTransform(View view, float position) { - final float height = view.getHeight(); - final float width = view.getWidth(); - final float scale = min(position < 0 ? 1f : Math.abs(1f - position), 0.5f); + @Override + protected void onTransform(View view, float position) { + final float height = view.getHeight(); + final float width = view.getWidth(); + final float scale = min(position < 0 ? 1f : Math.abs(1f - position), 0.5f); - ViewHelper.setScaleX(view,scale); - ViewHelper.setScaleY(view,scale); - ViewHelper.setPivotX(view,width*0.5f); - ViewHelper.setPivotY(view,height*0.5f); - ViewHelper.setTranslationX(view,position < 0 ? width * position : -width * position * 0.25f); - } + ViewCompat.setScaleX(view, scale); + ViewCompat.setScaleY(view, scale); + ViewCompat.setPivotX(view, width * 0.5f); + ViewCompat.setPivotY(view, height * 0.5f); + ViewCompat.setTranslationX(view, position < 0 ? width * position : -width * position * 0.25f); + } - private static final float min(float val, float min) { - return val < min ? min : val; - } + private static final float min(float val, float min) { + return val < min ? min : val; + } } diff --git a/library/src/main/java/com/daimajia/slider/library/Transformers/BaseTransformer.java b/library/src/main/java/com/daimajia/slider/library/Transformers/BaseTransformer.java index c1a78b9..204139a 100644 --- a/library/src/main/java/com/daimajia/slider/library/Transformers/BaseTransformer.java +++ b/library/src/main/java/com/daimajia/slider/library/Transformers/BaseTransformer.java @@ -1,26 +1,26 @@ package com.daimajia.slider.library.Transformers; +import android.support.v4.view.ViewCompat; import android.view.View; import com.daimajia.slider.library.Animations.BaseAnimationInterface; import com.daimajia.slider.library.Tricks.ViewPagerEx; -import com.nineoldandroids.view.ViewHelper; import java.util.ArrayList; import java.util.HashMap; /** * This is all transformers father. - * + *

* BaseTransformer implement {@link com.daimajia.slider.library.Tricks.ViewPagerEx.PageTransformer} * which is just same as {@link android.support.v4.view.ViewPager.PageTransformer}. - * + *

* After you call setPageTransformer(), transformPage() will be called by {@link com.daimajia.slider.library.Tricks.ViewPagerEx} * when your slider are animating. - * + *

* In onPreTransform() function, that will make {@link com.daimajia.slider.library.Animations.BaseAnimationInterface} * work. - * + *

* if you want to make an acceptable transformer, please do not forget to extend from this class. */ public abstract class BaseTransformer implements ViewPagerEx.PageTransformer { @@ -35,7 +35,7 @@ public abstract class BaseTransformer implements ViewPagerEx.PageTransformer { */ protected abstract void onTransform(View view, float position); - private HashMap> h = new HashMap>(); + private HashMap> h = new HashMap>(); @Override public void transformPage(View view, float position) { @@ -72,44 +72,44 @@ protected boolean isPagingEnabled() { protected void onPreTransform(View view, float position) { final float width = view.getWidth(); - ViewHelper.setRotationX(view,0); - ViewHelper.setRotationY(view,0); - ViewHelper.setRotation(view,0); - ViewHelper.setScaleX(view,1); - ViewHelper.setScaleY(view,1); - ViewHelper.setPivotX(view,0); - ViewHelper.setPivotY(view,0); - ViewHelper.setTranslationY(view,0); - ViewHelper.setTranslationX(view,isPagingEnabled() ? 0f : -width * position); + ViewCompat.setRotationX(view, 0); + ViewCompat.setRotationY(view, 0); + ViewCompat.setRotation(view, 0); + ViewCompat.setScaleX(view, 1); + ViewCompat.setScaleY(view, 1); + ViewCompat.setPivotX(view, 0); + ViewCompat.setPivotY(view, 0); + ViewCompat.setTranslationY(view, 0); + ViewCompat.setTranslationX(view, isPagingEnabled() ? 0f : -width * position); if (hideOffscreenPages()) { - ViewHelper.setAlpha(view,position <= -1f || position >= 1f ? 0f : 1f); + ViewCompat.setAlpha(view, position <= -1f || position >= 1f ? 0f : 1f); } else { - ViewHelper.setAlpha(view,1f); + ViewCompat.setAlpha(view, 1f); } - if(mCustomAnimationInterface != null){ - if(h.containsKey(view) == false || h.get(view).size() == 1){ - if(position > -1 && position < 1){ - if(h.get(view) == null){ - h.put(view,new ArrayList()); + if (mCustomAnimationInterface != null) { + if (!h.containsKey(view) || h.get(view).size() == 1) { + if (position > -1 && position < 1) { + if (h.get(view) == null) { + h.put(view, new ArrayList()); } h.get(view).add(position); - if(h.get(view).size() == 2){ + if (h.get(view).size() == 2) { float zero = h.get(view).get(0); float cha = h.get(view).get(1) - h.get(view).get(0); - if(zero > 0){ - if(cha > -1 && cha < 0){ + if (zero > 0) { + if (cha > -1 && cha < 0) { //in mCustomAnimationInterface.onPrepareNextItemShowInScreen(view); - }else{ + } else { //out mCustomAnimationInterface.onPrepareCurrentItemLeaveScreen(view); } - }else{ - if(cha > -1 && cha < 0){ + } else { + if (cha > -1 && cha < 0) { //out mCustomAnimationInterface.onPrepareCurrentItemLeaveScreen(view); - }else{ + } else { //in mCustomAnimationInterface.onPrepareNextItemShowInScreen(view); } @@ -119,7 +119,9 @@ protected void onPreTransform(View view, float position) { } } } - boolean isApp,isDis; + + boolean isApp, isDis; + /** * Called each {@link #transformPage(View, float)} call after {@link #onTransform(View, float)} is finished. * @@ -127,15 +129,15 @@ protected void onPreTransform(View view, float position) { * @param position */ protected void onPostTransform(View view, float position) { - if(mCustomAnimationInterface != null){ - if(position == -1 || position == 1){ + if (mCustomAnimationInterface != null) { + if (position == -1 || position == 1) { mCustomAnimationInterface.onCurrentItemDisappear(view); isApp = true; - }else if(position == 0){ + } else if (position == 0) { mCustomAnimationInterface.onNextItemAppear(view); isDis = true; } - if(isApp && isDis){ + if (isApp && isDis) { h.clear(); isApp = false; isDis = false; @@ -144,7 +146,7 @@ protected void onPostTransform(View view, float position) { } - public void setCustomAnimationInterface(BaseAnimationInterface animationInterface){ + public void setCustomAnimationInterface(BaseAnimationInterface animationInterface) { mCustomAnimationInterface = animationInterface; } diff --git a/library/src/main/java/com/daimajia/slider/library/Transformers/CubeInTransformer.java b/library/src/main/java/com/daimajia/slider/library/Transformers/CubeInTransformer.java index 8a8c382..831350b 100644 --- a/library/src/main/java/com/daimajia/slider/library/Transformers/CubeInTransformer.java +++ b/library/src/main/java/com/daimajia/slider/library/Transformers/CubeInTransformer.java @@ -1,22 +1,22 @@ package com.daimajia.slider.library.Transformers; +import android.support.v4.view.ViewCompat; import android.view.View; -import com.nineoldandroids.view.ViewHelper; public class CubeInTransformer extends BaseTransformer { - @Override - protected void onTransform(View view, float position) { - // Rotate the fragment on the left or right edge - ViewHelper.setPivotX(view,position > 0 ? 0 : view.getWidth()); - ViewHelper.setPivotY(view,0); - ViewHelper.setRotation(view,-90f * position); - } + @Override + protected void onTransform(View view, float position) { + // Rotate the fragment on the left or right edge + ViewCompat.setPivotX(view, position > 0 ? 0 : view.getWidth()); + ViewCompat.setPivotY(view, 0); + ViewCompat.setRotation(view, -90f * position); + } - @Override - public boolean isPagingEnabled() { - return true; - } + @Override + public boolean isPagingEnabled() { + return true; + } } diff --git a/library/src/main/java/com/daimajia/slider/library/Transformers/DepthPageTransformer.java b/library/src/main/java/com/daimajia/slider/library/Transformers/DepthPageTransformer.java index c72e0da..a05f1e1 100644 --- a/library/src/main/java/com/daimajia/slider/library/Transformers/DepthPageTransformer.java +++ b/library/src/main/java/com/daimajia/slider/library/Transformers/DepthPageTransformer.java @@ -1,32 +1,32 @@ package com.daimajia.slider.library.Transformers; +import android.support.v4.view.ViewCompat; import android.view.View; -import com.nineoldandroids.view.ViewHelper; public class DepthPageTransformer extends BaseTransformer { - private static final float MIN_SCALE = 0.75f; + private static final float MIN_SCALE = 0.75f; - @Override - protected void onTransform(View view, float position) { - if (position <= 0f) { - ViewHelper.setTranslationX(view,0f); - ViewHelper.setScaleX(view,1f); - ViewHelper.setScaleY(view,1f); - } else if (position <= 1f) { - final float scaleFactor = MIN_SCALE + (1 - MIN_SCALE) * (1 - Math.abs(position)); - ViewHelper.setAlpha(view,1-position); - ViewHelper.setPivotY(view,0.5f * view.getHeight()); - ViewHelper.setTranslationX(view,view.getWidth() * - position); - ViewHelper.setScaleX(view,scaleFactor); - ViewHelper.setScaleY(view,scaleFactor); - } - } + @Override + protected void onTransform(View view, float position) { + if (position <= 0f) { + ViewCompat.setTranslationX(view, 0f); + ViewCompat.setScaleX(view, 1f); + ViewCompat.setScaleY(view, 1f); + } else if (position <= 1f) { + final float scaleFactor = MIN_SCALE + (1 - MIN_SCALE) * (1 - Math.abs(position)); + ViewCompat.setAlpha(view, 1 - position); + ViewCompat.setPivotY(view, 0.5f * view.getHeight()); + ViewCompat.setTranslationX(view, view.getWidth() * -position); + ViewCompat.setScaleX(view, scaleFactor); + ViewCompat.setScaleY(view, scaleFactor); + } + } - @Override - protected boolean isPagingEnabled() { - return true; - } + @Override + protected boolean isPagingEnabled() { + return true; + } } diff --git a/library/src/main/java/com/daimajia/slider/library/Transformers/FadeTransformer.java b/library/src/main/java/com/daimajia/slider/library/Transformers/FadeTransformer.java index c202ab3..89af2de 100644 --- a/library/src/main/java/com/daimajia/slider/library/Transformers/FadeTransformer.java +++ b/library/src/main/java/com/daimajia/slider/library/Transformers/FadeTransformer.java @@ -1,8 +1,8 @@ package com.daimajia.slider.library.Transformers; +import android.support.v4.view.ViewCompat; import android.view.View; -import com.nineoldandroids.view.ViewHelper; /** * Created by realandylawton on 11/22/13. @@ -13,20 +13,20 @@ public class FadeTransformer extends BaseTransformer { protected void onTransform(View view, float position) { // Page is not an immediate sibling, just make transparent - if(position < -1 || position > 1) { - ViewHelper.setAlpha(view,0.6f); + if (position < -1 || position > 1) { + ViewCompat.setAlpha(view, 0.6f); } // Page is sibling to left or right else if (position <= 0 || position <= 1) { // Calculate alpha. Position is decimal in [-1,0] or [0,1] float alpha = (position <= 0) ? position + 1 : 1 - position; - ViewHelper.setAlpha(view,alpha); + ViewCompat.setAlpha(view, alpha); } // Page is active, make fully visible else if (position == 0) { - ViewHelper.setAlpha(view,1); + ViewCompat.setAlpha(view, 1); } } diff --git a/library/src/main/java/com/daimajia/slider/library/Transformers/FlipHorizontalTransformer.java b/library/src/main/java/com/daimajia/slider/library/Transformers/FlipHorizontalTransformer.java index ada24aa..6ce2e32 100644 --- a/library/src/main/java/com/daimajia/slider/library/Transformers/FlipHorizontalTransformer.java +++ b/library/src/main/java/com/daimajia/slider/library/Transformers/FlipHorizontalTransformer.java @@ -1,18 +1,18 @@ package com.daimajia.slider.library.Transformers; +import android.support.v4.view.ViewCompat; import android.view.View; -import com.nineoldandroids.view.ViewHelper; public class FlipHorizontalTransformer extends BaseTransformer { - @Override - protected void onTransform(View view, float position) { - final float rotation = 180f * position; - ViewHelper.setAlpha(view,rotation > 90f || rotation < -90f ? 0 : 1); - ViewHelper.setPivotY(view,view.getHeight()*0.5f); - ViewHelper.setPivotX(view,view.getWidth() * 0.5f); - ViewHelper.setRotationY(view,rotation); - } + @Override + protected void onTransform(View view, float position) { + final float rotation = 180f * position; + ViewCompat.setAlpha(view, rotation > 90f || rotation < -90f ? 0 : 1); + ViewCompat.setPivotY(view, view.getHeight() * 0.5f); + ViewCompat.setPivotX(view, view.getWidth() * 0.5f); + ViewCompat.setRotationY(view, rotation); + } } diff --git a/library/src/main/java/com/daimajia/slider/library/Transformers/FlipPageViewTransformer.java b/library/src/main/java/com/daimajia/slider/library/Transformers/FlipPageViewTransformer.java index 31b0cf1..72bc756 100644 --- a/library/src/main/java/com/daimajia/slider/library/Transformers/FlipPageViewTransformer.java +++ b/library/src/main/java/com/daimajia/slider/library/Transformers/FlipPageViewTransformer.java @@ -1,17 +1,17 @@ package com.daimajia.slider.library.Transformers; import android.os.Build; +import android.support.v4.view.ViewCompat; import android.view.View; import com.daimajia.slider.library.Tricks.ViewPagerEx; -import com.nineoldandroids.view.ViewHelper; public class FlipPageViewTransformer extends BaseTransformer { @Override protected void onTransform(View view, float position) { float percentage = 1 - Math.abs(position); - if(Build.VERSION.SDK_INT >= 13){ + if (Build.VERSION.SDK_INT >= 13) { view.setCameraDistance(12000); } setVisibility(view, position); @@ -31,19 +31,19 @@ private void setVisibility(View page, float position) { private void setTranslation(View view) { ViewPagerEx viewPager = (ViewPagerEx) view.getParent(); int scroll = viewPager.getScrollX() - view.getLeft(); - ViewHelper.setTranslationX(view,scroll); + ViewCompat.setTranslationX(view, scroll); } private void setSize(View view, float position, float percentage) { - ViewHelper.setScaleX(view,(position != 0 && position != 1) ? percentage : 1); - ViewHelper.setScaleY(view,(position != 0 && position != 1) ? percentage : 1); + ViewCompat.setScaleX(view, (position != 0 && position != 1) ? percentage : 1); + ViewCompat.setScaleY(view, (position != 0 && position != 1) ? percentage : 1); } private void setRotation(View view, float position, float percentage) { if (position > 0) { - ViewHelper.setRotationY(view,-180 * (percentage + 1)); + ViewCompat.setRotationY(view, -180 * (percentage + 1)); } else { - ViewHelper.setRotationY(view,180 * (percentage + 1)); + ViewCompat.setRotationY(view, 180 * (percentage + 1)); } } } \ No newline at end of file diff --git a/library/src/main/java/com/daimajia/slider/library/Transformers/ForegroundToBackgroundTransformer.java b/library/src/main/java/com/daimajia/slider/library/Transformers/ForegroundToBackgroundTransformer.java index 7f53c98..3809069 100644 --- a/library/src/main/java/com/daimajia/slider/library/Transformers/ForegroundToBackgroundTransformer.java +++ b/library/src/main/java/com/daimajia/slider/library/Transformers/ForegroundToBackgroundTransformer.java @@ -1,26 +1,26 @@ package com.daimajia.slider.library.Transformers; +import android.support.v4.view.ViewCompat; import android.view.View; -import com.nineoldandroids.view.ViewHelper; public class ForegroundToBackgroundTransformer extends BaseTransformer { - @Override - protected void onTransform(View view, float position) { - final float height = view.getHeight(); - final float width = view.getWidth(); - final float scale = min(position > 0 ? 1f : Math.abs(1f + position), 0.5f); + @Override + protected void onTransform(View view, float position) { + final float height = view.getHeight(); + final float width = view.getWidth(); + final float scale = min(position > 0 ? 1f : Math.abs(1f + position), 0.5f); - ViewHelper.setScaleX(view,scale); - ViewHelper.setScaleY(view,scale); - ViewHelper.setPivotX(view,width * 0.5f); - ViewHelper.setPivotY(view,height * 0.5f); - ViewHelper.setTranslationX(view,position > 0 ? width * position : -width * position * 0.25f); - } + ViewCompat.setScaleX(view, scale); + ViewCompat.setScaleY(view, scale); + ViewCompat.setPivotX(view, width * 0.5f); + ViewCompat.setPivotY(view, height * 0.5f); + ViewCompat.setTranslationX(view, position > 0 ? width * position : -width * position * 0.25f); + } - private static final float min(float val, float min) { - return val < min ? min : val; - } + private static final float min(float val, float min) { + return val < min ? min : val; + } } diff --git a/library/src/main/java/com/daimajia/slider/library/Transformers/RotateDownTransformer.java b/library/src/main/java/com/daimajia/slider/library/Transformers/RotateDownTransformer.java index a88bc22..a3054e7 100644 --- a/library/src/main/java/com/daimajia/slider/library/Transformers/RotateDownTransformer.java +++ b/library/src/main/java/com/daimajia/slider/library/Transformers/RotateDownTransformer.java @@ -1,27 +1,27 @@ package com.daimajia.slider.library.Transformers; +import android.support.v4.view.ViewCompat; import android.view.View; -import com.nineoldandroids.view.ViewHelper; public class RotateDownTransformer extends BaseTransformer { - private static final float ROT_MOD = -15f; - - @Override - protected void onTransform(View view, float position) { - final float width = view.getWidth(); - final float height = view.getHeight(); - final float rotation = ROT_MOD * position * -1.25f; - - ViewHelper.setPivotX(view,width * 0.5f); - ViewHelper.setPivotY(view,height); - ViewHelper.setRotation(view,rotation); - } - - @Override - protected boolean isPagingEnabled() { - return true; - } + private static final float ROT_MOD = -15f; + + @Override + protected void onTransform(View view, float position) { + final float width = view.getWidth(); + final float height = view.getHeight(); + final float rotation = ROT_MOD * position * -1.25f; + + ViewCompat.setPivotX(view, width * 0.5f); + ViewCompat.setPivotY(view, height); + ViewCompat.setRotation(view, rotation); + } + + @Override + protected boolean isPagingEnabled() { + return true; + } } diff --git a/library/src/main/java/com/daimajia/slider/library/Transformers/RotateUpTransformer.java b/library/src/main/java/com/daimajia/slider/library/Transformers/RotateUpTransformer.java index 2619f3a..f38689b 100644 --- a/library/src/main/java/com/daimajia/slider/library/Transformers/RotateUpTransformer.java +++ b/library/src/main/java/com/daimajia/slider/library/Transformers/RotateUpTransformer.java @@ -1,27 +1,27 @@ package com.daimajia.slider.library.Transformers; +import android.support.v4.view.ViewCompat; import android.view.View; -import com.nineoldandroids.view.ViewHelper; public class RotateUpTransformer extends BaseTransformer { - private static final float ROT_MOD = -15f; - - @Override - protected void onTransform(View view, float position) { - final float width = view.getWidth(); - final float rotation = ROT_MOD * position; - - ViewHelper.setPivotX(view,width * 0.5f); - ViewHelper.setPivotY(view,0f); - ViewHelper.setTranslationX(view,0f); - ViewHelper.setRotation(view,rotation); - } - - @Override - protected boolean isPagingEnabled() { - return true; - } + private static final float ROT_MOD = -15f; + + @Override + protected void onTransform(View view, float position) { + final float width = view.getWidth(); + final float rotation = ROT_MOD * position; + + ViewCompat.setPivotX(view, width * 0.5f); + ViewCompat.setPivotY(view, 0f); + ViewCompat.setTranslationX(view, 0f); + ViewCompat.setRotation(view, rotation); + } + + @Override + protected boolean isPagingEnabled() { + return true; + } } diff --git a/library/src/main/java/com/daimajia/slider/library/Transformers/StackTransformer.java b/library/src/main/java/com/daimajia/slider/library/Transformers/StackTransformer.java index 495d7a2..d8f6fee 100644 --- a/library/src/main/java/com/daimajia/slider/library/Transformers/StackTransformer.java +++ b/library/src/main/java/com/daimajia/slider/library/Transformers/StackTransformer.java @@ -1,14 +1,14 @@ package com.daimajia.slider.library.Transformers; +import android.support.v4.view.ViewCompat; import android.view.View; -import com.nineoldandroids.view.ViewHelper; public class StackTransformer extends BaseTransformer { - @Override - protected void onTransform(View view, float position) { - ViewHelper.setTranslationX(view,position < 0 ? 0f : -view.getWidth() * position); - } + @Override + protected void onTransform(View view, float position) { + ViewCompat.setTranslationX(view, position < 0 ? 0f : -view.getWidth() * position); + } } diff --git a/library/src/main/java/com/daimajia/slider/library/Transformers/TabletTransformer.java b/library/src/main/java/com/daimajia/slider/library/Transformers/TabletTransformer.java index e2fb6ce..fff75d7 100644 --- a/library/src/main/java/com/daimajia/slider/library/Transformers/TabletTransformer.java +++ b/library/src/main/java/com/daimajia/slider/library/Transformers/TabletTransformer.java @@ -2,39 +2,39 @@ import android.graphics.Camera; import android.graphics.Matrix; +import android.support.v4.view.ViewCompat; import android.view.View; -import com.nineoldandroids.view.ViewHelper; public class TabletTransformer extends BaseTransformer { - private static final Matrix OFFSET_MATRIX = new Matrix(); - private static final Camera OFFSET_CAMERA = new Camera(); - private static final float[] OFFSET_TEMP_FLOAT = new float[2]; - - @Override - protected void onTransform(View view, float position) { - final float rotation = (position < 0 ? 30f : -30f) * Math.abs(position); - - ViewHelper.setTranslationX(view,getOffsetXForRotation(rotation, view.getWidth(), view.getHeight())); - ViewHelper.setPivotX(view,view.getWidth() * 0.5f); - ViewHelper.setPivotY(view,0); - ViewHelper.setRotationY(view,rotation); - } - - protected static final float getOffsetXForRotation(float degrees, int width, int height) { - OFFSET_MATRIX.reset(); - OFFSET_CAMERA.save(); - OFFSET_CAMERA.rotateY(Math.abs(degrees)); - OFFSET_CAMERA.getMatrix(OFFSET_MATRIX); - OFFSET_CAMERA.restore(); - - OFFSET_MATRIX.preTranslate(-width * 0.5f, -height * 0.5f); - OFFSET_MATRIX.postTranslate(width * 0.5f, height * 0.5f); - OFFSET_TEMP_FLOAT[0] = width; - OFFSET_TEMP_FLOAT[1] = height; - OFFSET_MATRIX.mapPoints(OFFSET_TEMP_FLOAT); - return (width - OFFSET_TEMP_FLOAT[0]) * (degrees > 0.0f ? 1.0f : -1.0f); - } + private static final Matrix OFFSET_MATRIX = new Matrix(); + private static final Camera OFFSET_CAMERA = new Camera(); + private static final float[] OFFSET_TEMP_FLOAT = new float[2]; + + @Override + protected void onTransform(View view, float position) { + final float rotation = (position < 0 ? 30f : -30f) * Math.abs(position); + + ViewCompat.setTranslationX(view, getOffsetXForRotation(rotation, view.getWidth(), view.getHeight())); + ViewCompat.setPivotX(view, view.getWidth() * 0.5f); + ViewCompat.setPivotY(view, 0); + ViewCompat.setRotationY(view, rotation); + } + + protected static final float getOffsetXForRotation(float degrees, int width, int height) { + OFFSET_MATRIX.reset(); + OFFSET_CAMERA.save(); + OFFSET_CAMERA.rotateY(Math.abs(degrees)); + OFFSET_CAMERA.getMatrix(OFFSET_MATRIX); + OFFSET_CAMERA.restore(); + + OFFSET_MATRIX.preTranslate(-width * 0.5f, -height * 0.5f); + OFFSET_MATRIX.postTranslate(width * 0.5f, height * 0.5f); + OFFSET_TEMP_FLOAT[0] = width; + OFFSET_TEMP_FLOAT[1] = height; + OFFSET_MATRIX.mapPoints(OFFSET_TEMP_FLOAT); + return (width - OFFSET_TEMP_FLOAT[0]) * (degrees > 0.0f ? 1.0f : -1.0f); + } } diff --git a/library/src/main/java/com/daimajia/slider/library/Transformers/ZoomInTransformer.java b/library/src/main/java/com/daimajia/slider/library/Transformers/ZoomInTransformer.java index 4bacbc0..14d8437 100644 --- a/library/src/main/java/com/daimajia/slider/library/Transformers/ZoomInTransformer.java +++ b/library/src/main/java/com/daimajia/slider/library/Transformers/ZoomInTransformer.java @@ -1,19 +1,19 @@ package com.daimajia.slider.library.Transformers; +import android.support.v4.view.ViewCompat; import android.view.View; -import com.nineoldandroids.view.ViewHelper; public class ZoomInTransformer extends BaseTransformer { - @Override - protected void onTransform(View view, float position) { - final float scale = position < 0 ? position + 1f : Math.abs(1f - position); - ViewHelper.setScaleX(view,scale); - ViewHelper.setScaleY(view,scale); - ViewHelper.setPivotX(view,view.getWidth() * 0.5f); - ViewHelper.setPivotY(view,view.getHeight() * 0.5f); - ViewHelper.setAlpha(view,position < -1f || position > 1f ? 0f : 1f - (scale - 1f)); - } + @Override + protected void onTransform(View view, float position) { + final float scale = position < 0 ? position + 1f : Math.abs(1f - position); + ViewCompat.setScaleX(view, scale); + ViewCompat.setScaleY(view, scale); + ViewCompat.setPivotX(view, view.getWidth() * 0.5f); + ViewCompat.setPivotY(view, view.getHeight() * 0.5f); + ViewCompat.setAlpha(view, position < -1f || position > 1f ? 0f : 1f - (scale - 1f)); + } } diff --git a/library/src/main/java/com/daimajia/slider/library/Transformers/ZoomOutSlideTransformer.java b/library/src/main/java/com/daimajia/slider/library/Transformers/ZoomOutSlideTransformer.java index 3a2ba81..1618c40 100644 --- a/library/src/main/java/com/daimajia/slider/library/Transformers/ZoomOutSlideTransformer.java +++ b/library/src/main/java/com/daimajia/slider/library/Transformers/ZoomOutSlideTransformer.java @@ -1,40 +1,40 @@ package com.daimajia.slider.library.Transformers; +import android.support.v4.view.ViewCompat; import android.view.View; -import com.nineoldandroids.view.ViewHelper; public class ZoomOutSlideTransformer extends BaseTransformer { - private static final float MIN_SCALE = 0.85f; - private static final float MIN_ALPHA = 0.5f; + private static final float MIN_SCALE = 0.85f; + private static final float MIN_ALPHA = 0.5f; - @Override - protected void onTransform(View view, float position) { - if (position >= -1 || position <= 1) { - // Modify the default slide transition to shrink the page as well - final float height = view.getHeight(); - final float scaleFactor = Math.max(MIN_SCALE, 1 - Math.abs(position)); - final float vertMargin = height * (1 - scaleFactor) / 2; - final float horzMargin = view.getWidth() * (1 - scaleFactor) / 2; + @Override + protected void onTransform(View view, float position) { + if (position >= -1 || position <= 1) { + // Modify the default slide transition to shrink the page as well + final float height = view.getHeight(); + final float scaleFactor = Math.max(MIN_SCALE, 1 - Math.abs(position)); + final float vertMargin = height * (1 - scaleFactor) / 2; + final float horzMargin = view.getWidth() * (1 - scaleFactor) / 2; // Center vertically - ViewHelper.setPivotY(view,0.5f * height); + ViewCompat.setPivotY(view, 0.5f * height); - if (position < 0) { - ViewHelper.setTranslationX(view,horzMargin - vertMargin / 2); - } else { - ViewHelper.setTranslationX(view,-horzMargin + vertMargin / 2); - } + if (position < 0) { + ViewCompat.setTranslationX(view, horzMargin - vertMargin / 2); + } else { + ViewCompat.setTranslationX(view, -horzMargin + vertMargin / 2); + } - // Scale the page down (between MIN_SCALE and 1) - ViewHelper.setScaleX(view,scaleFactor); - ViewHelper.setScaleY(view,scaleFactor); + // Scale the page down (between MIN_SCALE and 1) + ViewCompat.setScaleX(view, scaleFactor); + ViewCompat.setScaleY(view, scaleFactor); - // Fade the page relative to its size. - ViewHelper.setAlpha(view,MIN_ALPHA + (scaleFactor - MIN_SCALE) / (1 - MIN_SCALE) * (1 - MIN_ALPHA)); - } - } + // Fade the page relative to its size. + ViewCompat.setAlpha(view, MIN_ALPHA + (scaleFactor - MIN_SCALE) / (1 - MIN_SCALE) * (1 - MIN_ALPHA)); + } + } } diff --git a/library/src/main/java/com/daimajia/slider/library/Transformers/ZoomOutTransformer.java b/library/src/main/java/com/daimajia/slider/library/Transformers/ZoomOutTransformer.java index d5c33ec..d703617 100644 --- a/library/src/main/java/com/daimajia/slider/library/Transformers/ZoomOutTransformer.java +++ b/library/src/main/java/com/daimajia/slider/library/Transformers/ZoomOutTransformer.java @@ -1,22 +1,22 @@ package com.daimajia.slider.library.Transformers; +import android.support.v4.view.ViewCompat; import android.view.View; -import com.nineoldandroids.view.ViewHelper; public class ZoomOutTransformer extends BaseTransformer { @Override protected void onTransform(View view, float position) { final float scale = 1f + Math.abs(position); - ViewHelper.setScaleX(view,scale); - ViewHelper.setScaleY(view,scale); - ViewHelper.setPivotX(view,view.getWidth() * 0.5f); - ViewHelper.setPivotY(view,view.getWidth() * 0.5f); - ViewHelper.setAlpha(view,position < -1f || position > 1f ? 0f : 1f - (scale - 1f)); - if(position < -0.9){ + ViewCompat.setScaleX(view, scale); + ViewCompat.setScaleY(view, scale); + ViewCompat.setPivotX(view, view.getWidth() * 0.5f); + ViewCompat.setPivotY(view, view.getWidth() * 0.5f); + ViewCompat.setAlpha(view, position < -1f || position > 1f ? 0f : 1f - (scale - 1f)); + if (position < -0.9) { //-0.9 to prevent a small bug - ViewHelper.setTranslationX(view,view.getWidth() * position); + ViewCompat.setTranslationX(view, view.getWidth() * position); } }