Skip to content

Commit b0077aa

Browse files
committed
更新广告弹窗demo各种设置效果
1 parent 71db9ab commit b0077aa

File tree

8 files changed

+234
-177
lines changed

8 files changed

+234
-177
lines changed

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

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,4 +84,14 @@ public static boolean isCircleAnim(int animType) {
8484

8585
// ########################## 退出动画效果 #################################
8686

87+
88+
// ########################## 弹性动画参数 ##################################
89+
/**
90+
* 弹性动画弹性参数
91+
*/
92+
public static final double BOUNCINESS = 8;
93+
/**
94+
* 弹性动画速度参数
95+
*/
96+
public static final double SPEED = 2;
8797
}

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

Lines changed: 111 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,19 @@ public class AdManager {
4242
*/
4343
private float widthPerHeight = 0.75f;
4444

45+
// 弹窗背景是否透明
46+
private boolean isAnimBackViewTransparent = false;
47+
// 弹窗是否可关闭
48+
private boolean isDialogCloseable = true;
49+
// 弹窗关闭点击事件
50+
private View.OnClickListener onCloseClickListener = null;
51+
// 设置弹窗背景颜色
52+
private int backViewColor = Color.parseColor("#bf000000");
53+
// 弹性动画弹性参数
54+
private double bounciness = AdConstant.BOUNCINESS;
55+
// 弹性动画速度参数
56+
private double speed = AdConstant.SPEED;
57+
4558
private OnImageClickListener onImageClickListener = null;
4659

4760

@@ -80,17 +93,18 @@ public void showAdDialog(final int animType) {
8093
isShowIndicator();
8194

8295
animDialogUtils = AnimDialogUtils.getInstance(context)
83-
.setAnimBackViewTransparent(false)
84-
.setDialogCloseable(true)
85-
.setDialogBackViewColor(Color.parseColor("#AA333333"))
96+
.setAnimBackViewTransparent(isAnimBackViewTransparent)
97+
.setDialogCloseable(isDialogCloseable)
98+
.setDialogBackViewColor(backViewColor)
99+
.setOnCloseClickListener(onCloseClickListener)
86100
.initView(contentView);
87101
setRootContainerHeight();
88102

89103
// 延迟1s展示,为了避免ImageLoader还为加载完缓存图片时就展示了弹窗的情况
90104
new Handler().postDelayed(new Runnable() {
91105
@Override
92106
public void run() {
93-
animDialogUtils.show(animType);
107+
animDialogUtils.show(animType, bounciness, speed);
94108
}
95109
}, 1000);
96110
}
@@ -167,6 +181,9 @@ public Object instantiateItem(ViewGroup container, int position) {
167181

168182
// ######################## 点击事件处理操作类 ########################
169183

184+
/**
185+
* ViewPager每一项的单击事件
186+
*/
170187
public interface OnImageClickListener {
171188

172189
public void onImageClick(View view, AdInfo advInfo);
@@ -175,19 +192,102 @@ public interface OnImageClickListener {
175192

176193
// ######################## get set方法 #########################
177194

178-
public AnimDialogUtils getAnimDialogUtils() {
179-
return animDialogUtils;
180-
}
181-
182-
public void setPadding(int padding) {
195+
/**
196+
* 设置弹窗距离屏幕左右两侧的距离
197+
* @param padding
198+
* @return
199+
*/
200+
public AdManager setPadding(int padding) {
183201
this.padding = padding;
202+
203+
return this;
184204
}
185205

186-
public void setWidthPerHeight(float widthPerHeight) {
206+
/**
207+
* 设置弹窗宽高比
208+
* @param widthPerHeight
209+
* @return
210+
*/
211+
public AdManager setWidthPerHeight(float widthPerHeight) {
187212
this.widthPerHeight = widthPerHeight;
213+
214+
return this;
188215
}
189216

190-
public void setOnImageClickListener(OnImageClickListener onImageClickListener) {
217+
/**
218+
* 设置ViewPager Item点击事件
219+
* @param onImageClickListener
220+
* @return
221+
*/
222+
public AdManager setOnImageClickListener(OnImageClickListener onImageClickListener) {
191223
this.onImageClickListener = onImageClickListener;
224+
225+
return this;
226+
}
227+
228+
/**
229+
* 设置背景是否透明
230+
* @param animBackViewTransparent
231+
* @return
232+
*/
233+
public AdManager setAnimBackViewTransparent(boolean animBackViewTransparent) {
234+
isAnimBackViewTransparent = animBackViewTransparent;
235+
236+
return this;
237+
}
238+
239+
/**
240+
* 设置弹窗关闭按钮是否可见
241+
* @param dialogCloseable
242+
* @return
243+
*/
244+
public AdManager setDialogCloseable(boolean dialogCloseable) {
245+
isDialogCloseable = dialogCloseable;
246+
247+
return this;
248+
}
249+
250+
/**
251+
* 设置弹窗关闭按钮点击事件
252+
* @param onCloseClickListener
253+
* @return
254+
*/
255+
public AdManager setOnCloseClickListener(View.OnClickListener onCloseClickListener) {
256+
this.onCloseClickListener = onCloseClickListener;
257+
258+
return this;
259+
}
260+
261+
/**
262+
* 设置弹窗背景颜色
263+
* @param backViewColor
264+
* @return
265+
*/
266+
public AdManager setBackViewColor(int backViewColor) {
267+
this.backViewColor = backViewColor;
268+
269+
return this;
270+
}
271+
272+
/**
273+
* 设置弹窗弹性动画弹性参数
274+
* @param bounciness
275+
* @return
276+
*/
277+
public AdManager setBounciness(double bounciness) {
278+
this.bounciness = bounciness;
279+
280+
return this;
281+
}
282+
283+
/**
284+
* 设置弹窗弹性动画速度参数
285+
* @param speed
286+
* @return
287+
*/
288+
public AdManager setSpeed(double speed) {
289+
this.speed = speed;
290+
291+
return this;
192292
}
193293
}

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

Lines changed: 9 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@
1010
import android.widget.ImageView;
1111
import android.widget.RelativeLayout;
1212

13+
import com.uuch.adlibrary.anim.AnimSpring;
14+
1315
/**
1416
* 使用弹性动画
1517
*/
@@ -30,7 +32,7 @@ public class AnimDialogUtils {
3032
// 弹窗是否可关闭
3133
private boolean isDialogCloseable = true;
3234
// 弹窗关闭点击事件
33-
private View.OnClickListener onClickListener = null;
35+
private View.OnClickListener onCloseClickListener = null;
3436
// 设置弹窗背景颜色
3537
private int backViewColor = Color.parseColor("#bf000000");
3638

@@ -69,7 +71,7 @@ public AnimDialogUtils initView(final View customView) {
6971
* 开始执行弹窗的展示动画
7072
* @param animType
7173
*/
72-
public void show(int animType) {
74+
public void show(int animType, double bounciness, double speed) {
7375
// 判断是否设置背景透明
7476
if (isAnimBackViewTransparent) {
7577
backViewColor = Color.TRANSPARENT;
@@ -83,8 +85,8 @@ public void show(int animType) {
8385
ivClose.setOnClickListener(new View.OnClickListener() {
8486
@Override
8587
public void onClick(View view) {
86-
if (onClickListener != null) {
87-
onClickListener.onClick(view);
88+
if (onCloseClickListener != null) {
89+
onCloseClickListener.onClick(view);
8890
}
8991
dismiss(AdConstant.ANIM_STOP_TRANSPARENT);
9092
}
@@ -94,7 +96,7 @@ public void onClick(View view) {
9496
}
9597
ViewGroup.LayoutParams params = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
9698
androidContentView.addView(rootView, params);
97-
AnimSpring.getInstance().startAnim(animType, animContainer);
99+
AnimSpring.getInstance().startAnim(animType, animContainer, bounciness, speed);
98100
isShowing = true;
99101
}
100102

@@ -106,13 +108,6 @@ public void dismiss(int animType) {
106108
}
107109

108110

109-
110-
public interface OnAnimEndListener {
111-
public void onAnimEndListener();
112-
}
113-
114-
115-
116111
/**
117112
* 设置背景组件颜色
118113
* @param color
@@ -136,14 +131,8 @@ public AnimDialogUtils setDialogCloseable(boolean dialogCloseable) {
136131
return this;
137132
}
138133

139-
/**
140-
* 设置弹窗关闭按钮是否可见
141-
* @param dialogCloseable
142-
* @return
143-
*/
144-
public AnimDialogUtils setDialogCloseable(boolean dialogCloseable, View.OnClickListener onClickListener) {
145-
isDialogCloseable = dialogCloseable;
146-
this.onClickListener = onClickListener;
134+
public AnimDialogUtils setOnCloseClickListener(View.OnClickListener onCloseClickListener) {
135+
this.onCloseClickListener = onCloseClickListener;
147136

148137
return this;
149138
}
@@ -159,9 +148,6 @@ public AnimDialogUtils setAnimBackViewTransparent(boolean animBackViewTransparen
159148
return this;
160149
}
161150

162-
163-
164-
165151
// ################### get方法 ####################
166152

167153
public RelativeLayout getAnimContainer() {

adlibrary/src/main/java/com/uuch/adlibrary/AnimSpring.java renamed to adlibrary/src/main/java/com/uuch/adlibrary/anim/AnimSpring.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.uuch.adlibrary;
1+
package com.uuch.adlibrary.anim;
22

33
import android.animation.Animator;
44
import android.animation.AnimatorListenerAdapter;
@@ -10,6 +10,8 @@
1010
import com.facebook.rebound.Spring;
1111
import com.facebook.rebound.SpringConfig;
1212
import com.facebook.rebound.SpringSystem;
13+
import com.uuch.adlibrary.AdConstant;
14+
import com.uuch.adlibrary.AnimDialogUtils;
1315
import com.uuch.adlibrary.utils.DisplayUtil;
1416

1517
/**
@@ -40,7 +42,8 @@ public static AnimSpring getInstance() {
4042
* @param animType
4143
* @param animContainer
4244
*/
43-
public void startAnim(final int animType, final RelativeLayout animContainer) {
45+
public void startAnim(final int animType, final RelativeLayout animContainer, double bounciness, double speed) {
46+
springConfig = SpringConfig.fromBouncinessAndSpeed(bounciness, speed);
4447
// 常量类型动画效果
4548
if (AdConstant.isConstantAnim(animType)) {
4649
startConstantAnim(animType, animContainer);

0 commit comments

Comments
 (0)