|
1 |
| -# android-adDialog |
| 1 | +# android-adDialog |
| 2 | + |
| 3 | +在介绍具体的使用说明之前,我们先看一下简单的实现效果: |
| 4 | +<br> |
| 5 | + |
| 6 | +**使用说明** |
| 7 | + |
| 8 | +- 显示一个默认广告弹窗,支持单广告活动、多广告活动,当弹窗显示多广告是默认显示底部小圆圈,当显示单活动时默认不显示底部小圆圈; |
| 9 | + |
| 10 | +- 默认支持弹窗从上,下,左,右,左上,右上,左下,右下等八个方向弹出,更可以设置从任意指定的角度(0-360)弹出; |
| 11 | + |
| 12 | +- 默认继承了弹性动画效果,可以设定弹性动画弹性参数,动画速度等; |
| 13 | + |
| 14 | +- 支持对弹窗背景透明色的更改,支持对弹窗透明,支持设置弹窗背景全屏显示或者是只在内容区域显示; |
| 15 | + |
| 16 | +- 支持设定弹窗宽高比,支持设置弹窗距离屏幕两侧距离,支持设置关闭按钮是否显示; |
| 17 | + |
| 18 | +- 支持对关闭按钮点击事件的回调,对每一项广告活动点击事件的回调等; |
| 19 | + |
| 20 | +- 支持对ViewPager滑动动画效果的设定,支持自定义ViewPager滑动动画效果; |
| 21 | + |
| 22 | +**API说明:** |
| 23 | + |
| 24 | +所有的设置参数均返回AdManager对象,所以可以直接链式调用。 |
| 25 | +``` |
| 26 | +AdManager adManager = new AdManager(MainActivity.this, advList); |
| 27 | +aDMamager. |
| 28 | +/** |
| 29 | + * 设置弹窗背景全屏显示还是在内容区域显示 |
| 30 | + */ |
| 31 | +.setOverScreen(true) |
| 32 | +/** |
| 33 | + * 设置ViewPager的滑动动画 |
| 34 | + */ |
| 35 | +.setPageTransformer(new DepthPageTransformer()) |
| 36 | +/** |
| 37 | + * 设置弹窗距离屏幕两侧的距离(单位dp) |
| 38 | + */ |
| 39 | +.setPadding(100) |
| 40 | +/** |
| 41 | + * 设置弹窗的宽高比 |
| 42 | + */ |
| 43 | +.setWidthPerHeight(0.75f) |
| 44 | +/** |
| 45 | + * 设置弹窗的背景色(当弹窗背景设置透明时,此设置失效) |
| 46 | + */ |
| 47 | +.setBackViewColor(Color.parseColor("#AA333333")) |
| 48 | +/** |
| 49 | + * 设置弹窗背景是否透明 |
| 50 | + */ |
| 51 | +.setAnimBackViewTransparent(true) |
| 52 | +/** |
| 53 | + * 设置弹窗关闭图标是否可见 |
| 54 | + */ |
| 55 | +.setDialogCloseable(false) |
| 56 | +/** |
| 57 | + * 设置弹窗弹性滑动弹性值 |
| 58 | + */ |
| 59 | +.setBounciness(15) |
| 60 | +/** |
| 61 | + * 设置弹窗弹性滑动速度值 |
| 62 | + */ |
| 63 | +.setSpeed(5) |
| 64 | +/** |
| 65 | + * 设定弹窗点击事件回调 |
| 66 | + */ |
| 67 | +.setOnImageClickListener(new AdManager.OnImageClickListener() {}) |
| 68 | +/** |
| 69 | + * 设定关闭按钮点击事件回调 |
| 70 | + */ |
| 71 | +.setOnCliseClickListener(new OnClickListener() {}) |
| 72 | +/** |
| 73 | + * 开始执行弹窗的显示操作,可传值为0-360,0表示从右开始弹出,逆时针方向,也可以传入自定义的方向值 |
| 74 | + */ |
| 75 | +.showAdDialog(AdConstant.ANIM_UP_TO_DOWN) |
| 76 | +``` |
| 77 | + |
| 78 | +**使用方式:** |
| 79 | + |
| 80 | +- 在module的build.gradle中执行compile操作 |
| 81 | + |
| 82 | +``` |
| 83 | +compile 'cn.yipianfengye.android:ad-library:1.0' |
| 84 | +``` |
| 85 | + |
| 86 | +- 在代码中初始化数据 |
| 87 | + |
| 88 | +``` |
| 89 | +/** |
| 90 | + * 初始化数据 |
| 91 | + */ |
| 92 | + private void initData() { |
| 93 | + advList = new ArrayList<>(); |
| 94 | + AdInfo adInfo = new AdInfo(); |
| 95 | + adInfo.setActivityImg("https://raw.githubusercontent.com/yipianfengye/android-adDialog/master/images/testImage1.png"); |
| 96 | + advList.add(adInfo); |
| 97 | +
|
| 98 | + adInfo = new AdInfo(); |
| 99 | + adInfo.setActivityImg("https://raw.githubusercontent.com/yipianfengye/android-adDialog/master/images/testImage2.png"); |
| 100 | + advList.add(adInfo); |
| 101 | + } |
| 102 | +``` |
| 103 | +这里只要是初始化图片的UI地址信息,方便我们的后续下载操作。 |
| 104 | + |
| 105 | +- 执行弹窗的初始化与现实操作 |
| 106 | + |
| 107 | +``` |
| 108 | +/** |
| 109 | + * 创建广告活动管理对象 |
| 110 | + */ |
| 111 | +AdManager adManager = new AdManager(MainActivity.this, advList); |
| 112 | +adManager.setOverScreen(true) |
| 113 | + .setPageTransformer(new DepthPageTransformer()); |
| 114 | +/** |
| 115 | + * 执行弹窗的显示操作 |
| 116 | + */ |
| 117 | +adManager.showAdDialog(AdConstant.ANIM_DOWN_TO_UP); |
| 118 | +``` |
| 119 | + |
| 120 | +怎么样是不是很简单?下面我们可以来看一下具体API。 |
| 121 | + |
| 122 | +**具体的API说明:** |
| 123 | + |
| 124 | +- (1)自定义的弹窗弹出方向API |
| 125 | + |
| 126 | +在执行AdManager的showAdDialog方法时,需要传递一个int型的animType参数,我们默认定义了八个该类型的参数,默认如下: |
| 127 | + |
| 128 | +``` |
| 129 | +// ####################### 弹出动画效果 ########################### |
| 130 | + /** |
| 131 | + * 广告活动弹窗动画-从上至下 |
| 132 | + */ |
| 133 | + public static final int ANIM_UP_TO_DOWN = -11; |
| 134 | + /** |
| 135 | + * 广告活动弹窗动画-从下至上 |
| 136 | + */ |
| 137 | + public static final int ANIM_DOWN_TO_UP = -12; |
| 138 | + /** |
| 139 | + * 广告活动弹窗动画-从左至右 |
| 140 | + */ |
| 141 | + public static final int ANIM_LEFT_TO_RIGHT = -13; |
| 142 | + /** |
| 143 | + * 广告活动弹窗动画-从右至左 |
| 144 | + */ |
| 145 | + public static final int ANIM_RIGHT_TO_LEFT = -14; |
| 146 | + /** |
| 147 | + * 广告活动弹窗动画-从左上弹出 |
| 148 | + */ |
| 149 | + public static final int ANIM_UPLEFT_TO_CENTER = -15; |
| 150 | + /** |
| 151 | + * 广告活动弹窗动画-从右上弹出 |
| 152 | + */ |
| 153 | + public static final int ANIM_UPRIGHT_TO_CENTER = -16; |
| 154 | + /** |
| 155 | + * 广告活动弹窗动画-从左下弹出 |
| 156 | + */ |
| 157 | + public static final int ANIM_DOWNLEFT_TO_CENTER = -17; |
| 158 | + /** |
| 159 | + * 广告活动弹窗动画-从右下弹出 |
| 160 | + */ |
| 161 | + public static final int ANIM_DOWNRIGHT_TO_CENTER = -18; |
| 162 | +``` |
| 163 | + |
| 164 | +好吧,如果你觉得还不够好,我想让弹窗从右上侧30度角的弹出可以么?这也是支持的,只需要你传递的int型的animType的时候传递30就好了,如下: |
| 165 | + |
| 166 | +``` |
| 167 | +/** |
| 168 | + * 执行弹窗的显示操作(参数的范围:0-360,0表示从右侧弹出,逆时针旋转) |
| 169 | + */ |
| 170 | +adManager.showAdDialog(30); |
| 171 | +``` |
| 172 | + |
| 173 | +那么我们看一下执行效果呢: |
| 174 | + |
| 175 | + |
| 176 | + |
| 177 | +- (2)自定义弹窗距离屏幕两侧的距离以及弹窗的宽高比: |
| 178 | + |
| 179 | +``` |
| 180 | +/** |
| 181 | + * 自定义设置广告活动弹窗距离屏幕两侧距离以及宽高比 |
| 182 | + */ |
| 183 | + button2.setOnClickListener(new View.OnClickListener() { |
| 184 | + @Override |
| 185 | + public void onClick(View v) { |
| 186 | + AdManager adManager = new AdManager(MainActivity.this, advList); |
| 187 | +
|
| 188 | + adManager.setOnImageClickListener(new AdManager.OnImageClickListener() { |
| 189 | + @Override |
| 190 | + public void onImageClick(View view, AdInfo advInfo) { |
| 191 | + Toast.makeText(MainActivity.this, "您点击了ViewPagerItem...", Toast.LENGTH_SHORT).show(); |
| 192 | + } |
| 193 | + }) |
| 194 | + .setPadding(100) |
| 195 | + .setWidthPerHeight(0.5f) |
| 196 | + .showAdDialog(AdConstant.ANIM_UP_TO_DOWN); |
| 197 | + } |
| 198 | + }); |
| 199 | +``` |
| 200 | + |
| 201 | +然后我们看一下执行效果: |
| 202 | + |
| 203 | + |
| 204 | + |
| 205 | +怎么样?是不是发现弹窗的宽高比和距离屏幕两侧的距离发生了变化? |
| 206 | + |
| 207 | +- (3)自定义背景颜色,自定义弹窗是否覆盖全屏,关闭按钮是否显示 |
| 208 | + |
| 209 | +``` |
| 210 | +/** |
| 211 | + * 自定义弹窗背景颜色,弹窗是否覆盖全屏,关闭按钮是否显示等 |
| 212 | + */ |
| 213 | + button3.setOnClickListener(new View.OnClickListener() { |
| 214 | + @Override |
| 215 | + public void onClick(View v) { |
| 216 | + AdManager adManager = new AdManager(MainActivity.this, advList); |
| 217 | +
|
| 218 | + adManager.setOnImageClickListener(new AdManager.OnImageClickListener() { |
| 219 | + @Override |
| 220 | + public void onImageClick(View view, AdInfo advInfo) { |
| 221 | + Toast.makeText(MainActivity.this, "您点击了ViewPagerItem...", Toast.LENGTH_SHORT).show(); |
| 222 | + } |
| 223 | + }) |
| 224 | + .setBackViewColor(Color.parseColor("#AA333333")) |
| 225 | + .setDialogCloseable(false) |
| 226 | + .showAdDialog(AdConstant.ANIM_UP_TO_DOWN); |
| 227 | + } |
| 228 | + }); |
| 229 | +``` |
| 230 | + |
| 231 | +然后我们来看一下具体的实现效果: |
| 232 | + |
| 233 | + |
| 234 | + |
| 235 | +可以看到我们更改了弹窗的背景颜色以及未显示关闭按钮 |
| 236 | + |
| 237 | +- (4)自定义设置弹性动画弹性参数和速度参数 |
| 238 | + |
| 239 | +``` |
| 240 | +/** |
| 241 | + * 自定义设定弹窗弹性参数和速度参数 |
| 242 | + */ |
| 243 | + button4.setOnClickListener(new View.OnClickListener() { |
| 244 | + @Override |
| 245 | + public void onClick(View v) { |
| 246 | + AdManager adManager = new AdManager(MainActivity.this, advList); |
| 247 | +
|
| 248 | + adManager.setOnImageClickListener(new AdManager.OnImageClickListener() { |
| 249 | + @Override |
| 250 | + public void onImageClick(View view, AdInfo advInfo) { |
| 251 | + Toast.makeText(MainActivity.this, "您点击了ViewPagerItem...", Toast.LENGTH_SHORT).show(); |
| 252 | + } |
| 253 | + }) |
| 254 | + .setBounciness(20) |
| 255 | + .setSpeed(4) |
| 256 | + .showAdDialog(AdConstant.ANIM_UP_TO_DOWN); |
| 257 | + } |
| 258 | + }); |
| 259 | +``` |
| 260 | + |
| 261 | +然后我们看一下动画效果: |
| 262 | +<br> |
| 263 | + |
| 264 | +为了明显的展示出动画效果,我们设置的弹性参数和速度参数比较大,是不是比较出来了这两个参数的作用? |
| 265 | + |
| 266 | +- (5)自定义设置弹窗ViewPager滑动动画: |
| 267 | + |
| 268 | +``` |
| 269 | +/** |
| 270 | + * 自定义设置弹窗ViewPager滑动动画 |
| 271 | + */ |
| 272 | + button5.setOnClickListener(new View.OnClickListener() { |
| 273 | + @Override |
| 274 | + public void onClick(View v) { |
| 275 | + AdManager adManager = new AdManager(MainActivity.this, advList); |
| 276 | +
|
| 277 | + adManager.setOnImageClickListener(new AdManager.OnImageClickListener() { |
| 278 | + @Override |
| 279 | + public void onImageClick(View view, AdInfo advInfo) { |
| 280 | + Toast.makeText(MainActivity.this, "您点击了ViewPagerItem...", Toast.LENGTH_SHORT).show(); |
| 281 | + } |
| 282 | + }) |
| 283 | + .setPageTransformer(new RotateDownPageTransformer()) |
| 284 | + .showAdDialog(AdConstant.ANIM_UP_TO_DOWN); |
| 285 | + } |
| 286 | + }); |
| 287 | +``` |
| 288 | + |
| 289 | +然后我们看一下弹窗的滑动动画: |
| 290 | + |
| 291 | + |
| 292 | + |
| 293 | +这里我内置了三种ViewPager的滑动动画效果: |
| 294 | + |
| 295 | +``` |
| 296 | +DepthPageTransformer; |
| 297 | +RotateDownPageTransformer; |
| 298 | +ZoomOutPageTransformer; |
| 299 | +``` |
| 300 | +我们还可以自定义实现:PageTransformer自定义出自己的滑动动画效果,更多关于PageTransformer的知识,可参考鸿洋大神的:<a href="http://blog.csdn.net/lmj623565791/article/details/40411921"> Android 实现个性的ViewPager切换动画 实战PageTransformer(兼容Android3.0以下)</a> |
| 301 | + |
| 302 | +- (6)自定义关闭按钮点击事件回调,ViewPagerItem点击事件回调 |
| 303 | + |
| 304 | +``` |
| 305 | +/** |
| 306 | + * 自定义设置弹窗ViewPagerItem点击事件,关闭按钮点击事件回调 |
| 307 | + */ |
| 308 | + button6.setOnClickListener(new View.OnClickListener() { |
| 309 | + @Override |
| 310 | + public void onClick(View v) { |
| 311 | + AdManager adManager = new AdManager(MainActivity.this, advList); |
| 312 | +
|
| 313 | + adManager.setOnImageClickListener(new AdManager.OnImageClickListener() { |
| 314 | + @Override |
| 315 | + public void onImageClick(View view, AdInfo advInfo) { |
| 316 | + Toast.makeText(MainActivity.this, "您点击了ViewPagerItem...", Toast.LENGTH_SHORT).show(); |
| 317 | + } |
| 318 | + }) |
| 319 | + .setOnCloseClickListener(new View.OnClickListener() { |
| 320 | + @Override |
| 321 | + public void onClick(View v) { |
| 322 | + Toast.makeText(MainActivity.this, "您点击了关闭按钮...", Toast.LENGTH_SHORT).show(); |
| 323 | + } |
| 324 | + }) |
| 325 | + .showAdDialog(AdConstant.ANIM_UP_TO_DOWN); |
| 326 | + } |
| 327 | + }); |
| 328 | +``` |
| 329 | + |
| 330 | +好吧,以上就是广告活动弹窗的API,除了以上还可以添加其他的一些API,欢迎提出。 |
| 331 | + |
| 332 | +以上就是这个控件的相关内容,欢迎star和follow,也可参考我的blog:<a href="http://blog.csdn.net/qq_23547831/article/details/52121633">Github项目解析(十一)-->一个简单强大的自定义广告活动弹窗</a> |
0 commit comments