Skip to content

Commit 4747af2

Browse files
committed
更新广告弹窗控件的滑动动画效果
1 parent b0077aa commit 4747af2

File tree

7 files changed

+206
-0
lines changed

7 files changed

+206
-0
lines changed

adlibrary/src/main/java/com/uuch/adlibrary/AdConstant.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,4 +94,6 @@ public static boolean isCircleAnim(int animType) {
9494
* 弹性动画速度参数
9595
*/
9696
public static final double SPEED = 2;
97+
98+
9799
}

adlibrary/src/main/java/com/uuch/adlibrary/AdManager.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,8 @@ public class AdManager {
5454
private double bounciness = AdConstant.BOUNCINESS;
5555
// 弹性动画速度参数
5656
private double speed = AdConstant.SPEED;
57+
// viewPager滑动动画效果
58+
private ViewPager.PageTransformer pageTransformer = null;
5759

5860
private OnImageClickListener onImageClickListener = null;
5961

@@ -89,6 +91,10 @@ public void showAdDialog(final int animType) {
8991
adAdapter = new AdAdapter();
9092
viewPager.setAdapter(adAdapter);
9193

94+
if (pageTransformer != null) {
95+
viewPager.setPageTransformer(true, pageTransformer);
96+
}
97+
9298
mIndicator.setViewPager(viewPager);
9399
isShowIndicator();
94100

@@ -290,4 +296,14 @@ public AdManager setSpeed(double speed) {
290296

291297
return this;
292298
}
299+
300+
/**
301+
* 设置ViewPager滑动动画效果
302+
* @param pageTransformer
303+
*/
304+
public AdManager setPageTransformer(ViewPager.PageTransformer pageTransformer) {
305+
this.pageTransformer = pageTransformer;
306+
307+
return this;
308+
}
293309
}
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
package com.uuch.adlibrary.transformer;
2+
3+
import com.nineoldandroids.view.ViewHelper;
4+
5+
import android.annotation.SuppressLint;
6+
import android.support.v4.view.ViewPager;
7+
import android.view.View;
8+
9+
public class DepthPageTransformer implements ViewPager.PageTransformer {
10+
private static final float MIN_SCALE = 0.75f;
11+
12+
public void transformPage(View view, float position) {
13+
int pageWidth = view.getWidth();
14+
15+
if (position < -1) { // [-Infinity,-1)
16+
// This page is way off-screen to the left.
17+
// view.setAlpha(0);
18+
ViewHelper.setAlpha(view, 0);
19+
} else if (position <= 0)// a页滑动至b页 ; a页从 0.0 -1 ;b页从1 ~ 0.0
20+
{ // [-1,0]
21+
// Use the default slide transition when moving to the left page
22+
// view.setAlpha(1);
23+
ViewHelper.setAlpha(view, 1);
24+
// view.setTranslationX(0);
25+
ViewHelper.setTranslationX(view, 0);
26+
// view.setScaleX(1);
27+
ViewHelper.setScaleX(view, 1);
28+
// view.setScaleY(1);
29+
ViewHelper.setScaleY(view, 1);
30+
31+
} else if (position <= 1) { // (0,1]
32+
// Fade the page out.
33+
// view.setAlpha(1 - position);
34+
ViewHelper.setAlpha(view, 1 - position);
35+
36+
// Counteract the default slide transition
37+
// view.setTranslationX(pageWidth * -position);
38+
ViewHelper.setTranslationX(view, pageWidth * -position);
39+
40+
// Scale the page down (between MIN_SCALE and 1)
41+
float scaleFactor = MIN_SCALE + (1 - MIN_SCALE) * (1 - position);
42+
// view.setScaleX(scaleFactor);
43+
ViewHelper.setScaleX(view, scaleFactor);
44+
// view.setScaleY(1);
45+
ViewHelper.setScaleY(view, scaleFactor);
46+
47+
} else { // (1,+Infinity]
48+
// This page is way off-screen to the right.
49+
// view.setAlpha(0);
50+
ViewHelper.setAlpha(view, 0);
51+
}
52+
}
53+
}
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
package com.uuch.adlibrary.transformer;
2+
3+
import com.nineoldandroids.view.ViewHelper;
4+
5+
import android.annotation.SuppressLint;
6+
import android.support.v4.view.ViewPager;
7+
import android.util.Log;
8+
import android.view.View;
9+
10+
/**
11+
* http://blog.csdn.net/lmj623565791/article/details/40411921
12+
*
13+
* @author zhy
14+
*/
15+
public class RotateDownPageTransformer implements ViewPager.PageTransformer {
16+
private static final float MIN_SCALE = 0.85f;
17+
private static final float MIN_ALPHA = 0.5f;
18+
private static final float ROT_MAX = 20.0f;
19+
private float mRot;
20+
private float mTrans;
21+
22+
@SuppressLint("NewApi")
23+
public void transformPage(View view, float position) {
24+
25+
Log.e("TAG", view + " , " + position + "");
26+
27+
if (position < -1) { // [-Infinity,-1)
28+
// This page is way off-screen to the left.
29+
ViewHelper.setRotation(view, 0);
30+
31+
} else if (position <= 1) // a页滑动至b页 ; a页从 0.0 ~ -1 ;b页从1 ~ 0.0
32+
{ // [-1,1]
33+
// Modify the default slide transition to shrink the page as well
34+
if (position < 0) {
35+
36+
mRot = (ROT_MAX * position);
37+
ViewHelper.setPivotX(view, view.getMeasuredWidth() * 0.5f);
38+
ViewHelper.setPivotY(view, view.getMeasuredHeight());
39+
ViewHelper.setRotation(view, mRot);
40+
} else {
41+
42+
mRot = (ROT_MAX * position);
43+
ViewHelper.setPivotX(view, view.getMeasuredWidth() * 0.5f);
44+
ViewHelper.setPivotY(view, view.getMeasuredHeight());
45+
ViewHelper.setRotation(view, mRot);
46+
}
47+
48+
// Scale the page down (between MIN_SCALE and 1)
49+
50+
// Fade the page relative to its size.
51+
52+
} else { // (1,+Infinity]
53+
// This page is way off-screen to the right.
54+
ViewHelper.setRotation(view, 0);
55+
}
56+
}
57+
}
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
package com.uuch.adlibrary.transformer;
2+
3+
import android.annotation.SuppressLint;
4+
import android.support.v4.view.ViewPager;
5+
import android.util.Log;
6+
import android.view.View;
7+
8+
public class ZoomOutPageTransformer implements ViewPager.PageTransformer {
9+
private static final float MIN_SCALE = 0.85f;
10+
private static final float MIN_ALPHA = 0.5f;
11+
12+
@SuppressLint("NewApi")
13+
public void transformPage(View view, float position) {
14+
int pageWidth = view.getWidth();
15+
int pageHeight = view.getHeight();
16+
17+
Log.e("TAG", view + " , " + position + "");
18+
19+
if (position < -1) { // [-Infinity,-1)
20+
// This page is way off-screen to the left.
21+
view.setAlpha(0);
22+
23+
} else if (position <= 1) //a页滑动至b页 ; a页从 0.0 -1 ;b页从1 ~ 0.0
24+
{ // [-1,1]
25+
// Modify the default slide transition to shrink the page as well
26+
float scaleFactor = Math.max(MIN_SCALE, 1 - Math.abs(position));
27+
float vertMargin = pageHeight * (1 - scaleFactor) / 2;
28+
float horzMargin = pageWidth * (1 - scaleFactor) / 2;
29+
if (position < 0) {
30+
view.setTranslationX(horzMargin - vertMargin / 2);
31+
} else {
32+
view.setTranslationX(-horzMargin + vertMargin / 2);
33+
}
34+
35+
// Scale the page down (between MIN_SCALE and 1)
36+
view.setScaleX(scaleFactor);
37+
view.setScaleY(scaleFactor);
38+
39+
// Fade the page relative to its size.
40+
view.setAlpha(MIN_ALPHA + (scaleFactor - MIN_SCALE)
41+
/ (1 - MIN_SCALE) * (1 - MIN_ALPHA));
42+
43+
} else { // (1,+Infinity]
44+
// This page is way off-screen to the right.
45+
view.setAlpha(0);
46+
}
47+
}
48+
}

app/src/main/java/com/uuch/android_addialog/MainActivity.java

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
import com.uuch.adlibrary.AdConstant;
1515
import com.uuch.adlibrary.bean.AdInfo;
1616
import com.uuch.adlibrary.AdManager;
17+
import com.uuch.adlibrary.transformer.DepthPageTransformer;
1718

1819
import java.util.ArrayList;
1920
import java.util.List;
@@ -27,6 +28,7 @@ public class MainActivity extends AppCompatActivity {
2728
private Button button2 = null;
2829
private Button button3 = null;
2930
private Button button4 = null;
31+
private Button button5 = null;
3032

3133
@Override
3234
protected void onCreate(Bundle savedInstanceState) {
@@ -213,6 +215,23 @@ public void onImageClick(View view, AdInfo advInfo) {
213215
.showAdDialog(AdConstant.ANIM_UP_TO_DOWN);
214216
}
215217
});
218+
219+
button5 = (Button) findViewById(R.id.button5);
220+
button5.setOnClickListener(new View.OnClickListener() {
221+
@Override
222+
public void onClick(View v) {
223+
AdManager adManager = new AdManager(MainActivity.this, advList);
224+
225+
adManager.setOnImageClickListener(new AdManager.OnImageClickListener() {
226+
@Override
227+
public void onImageClick(View view, AdInfo advInfo) {
228+
Toast.makeText(MainActivity.this, "您点击了ViewPagerItem...", Toast.LENGTH_SHORT).show();
229+
}
230+
})
231+
.setPageTransformer(new DepthPageTransformer())
232+
.showAdDialog(AdConstant.ANIM_UP_TO_DOWN);
233+
}
234+
});
216235
}
217236

218237
}

app/src/main/res/layout/activity_main.xml

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,5 +97,16 @@
9797
android:text="自定义设置弹性动画参数"
9898
/>
9999

100+
<Button
101+
android:id="@+id/button5"
102+
android:layout_width="match_parent"
103+
android:layout_height="wrap_content"
104+
android:layout_marginTop="20dp"
105+
android:layout_marginLeft="20dp"
106+
android:layout_marginRight="20dp"
107+
android:layout_below="@+id/button4"
108+
android:text="自定义设置ViewPager的滑动动画"
109+
/>
110+
100111
</RelativeLayout>
101112
</ScrollView>

0 commit comments

Comments
 (0)