{"id":13642203,"url":"https://github.com/yipianfengye/android-adDialog","last_synced_at":"2025-04-20T16:30:50.197Z","repository":{"id":43038563,"uuid":"64736951","full_name":"yipianfengye/android-adDialog","owner":"yipianfengye","description":"一个简单，强大的广告活动弹窗控件","archived":false,"fork":false,"pushed_at":"2016-09-21T01:17:26.000Z","size":9064,"stargazers_count":3116,"open_issues_count":20,"forks_count":579,"subscribers_count":90,"default_branch":"master","last_synced_at":"2024-10-29T17:49:50.256Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/yipianfengye.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2016-08-02T08:00:57.000Z","updated_at":"2024-10-15T03:52:39.000Z","dependencies_parsed_at":"2022-09-09T17:00:29.720Z","dependency_job_id":null,"html_url":"https://github.com/yipianfengye/android-adDialog","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yipianfengye%2Fandroid-adDialog","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yipianfengye%2Fandroid-adDialog/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yipianfengye%2Fandroid-adDialog/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yipianfengye%2Fandroid-adDialog/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/yipianfengye","download_url":"https://codeload.github.com/yipianfengye/android-adDialog/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":223832869,"owners_count":17210734,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-02T01:01:28.511Z","updated_at":"2025-04-20T16:30:50.191Z","avatar_url":"https://github.com/yipianfengye.png","language":"Java","readme":"# android-adDialog\n\n**更新日志**\n\n- compile 1.0 2016/08/08 完成广告活动弹窗1.0版本\n\n- compile 1.0 2016/08/08 删除demo中约束引用（否则AS2.2以下编译有问题）\n\n\n\n在介绍具体的使用说明之前，我们先看一下简单的实现效果：\n\u003cbr\u003e\u003cbr\u003e![image](https://github.com/yipianfengye/android-adDialog/blob/master/images/ezgif.com-video-to-gif1.gif)\n\n**使用说明**\n\n- 显示一个默认广告弹窗，支持单广告活动、多广告活动，当弹窗显示多广告是默认显示底部小圆圈，当显示单活动时默认不显示底部小圆圈；\n\n- 默认支持弹窗从上，下，左，右，左上，右上，左下，右下等八个方向弹出，更可以设置从任意指定的角度（0-360）弹出；\n\n- 默认继承了弹性动画效果，可以设定弹性动画弹性参数，动画速度等；\n\n- 支持对弹窗背景透明色的更改，支持对弹窗透明，支持设置弹窗背景全屏显示或者是只在内容区域显示；\n\n- 支持设定弹窗宽高比，支持设置弹窗距离屏幕两侧距离，支持设置关闭按钮是否显示；\n\n- 支持对关闭按钮点击事件的回调，对每一项广告活动点击事件的回调等；\n\n- 支持对ViewPager滑动动画效果的设定，支持自定义ViewPager滑动动画效果；\n\n**API说明：**\n\n所有的设置参数均返回AdManager对象，所以可以直接链式调用。\n```\nAdManager adManager = new AdManager(MainActivity.this, advList);\naDMamager.\n/**\n * 设置弹窗背景全屏显示还是在内容区域显示\n */\n.setOverScreen(true)\n/**\n * 设置ViewPager的滑动动画\n */\n.setPageTransformer(new DepthPageTransformer())\n/**\n * 设置弹窗距离屏幕两侧的距离（单位dp）\n */\n.setPadding(100)\n/**\n * 设置弹窗的宽高比\n */\n.setWidthPerHeight(0.75f)\n/**\n * 设置弹窗的背景色（当弹窗背景设置透明时，此设置失效）\n */\n.setBackViewColor(Color.parseColor(\"#AA333333\"))\n/**\n * 设置弹窗背景是否透明\n */\n.setAnimBackViewTransparent(true)\n/**\n * 设置弹窗关闭图标是否可见\n */\n.setDialogCloseable(false)\n/**\n * 设置弹窗弹性滑动弹性值\n */\n.setBounciness(15)\n/**\n * 设置弹窗弹性滑动速度值\n */\n.setSpeed(5)\n/**\n * 设定弹窗点击事件回调\n */\n.setOnImageClickListener(new AdManager.OnImageClickListener() {})\n/**\n * 设定关闭按钮点击事件回调\n */\n.setOnCliseClickListener(new OnClickListener() {})\n/**\n * 开始执行弹窗的显示操作，可传值为0-360，0表示从右开始弹出，逆时针方向，也可以传入自定义的方向值\n */\n.showAdDialog(AdConstant.ANIM_UP_TO_DOWN)\n```\n\n**使用方式：**\n\n- 在module的build.gradle中执行compile操作\n\n```\ncompile 'cn.yipianfengye.android:ad-library:1.0'\n```\n\n- 在代码中初始化数据\n\n```\n/**\n     * 初始化数据\n     */\n    private void initData() {\n        advList = new ArrayList\u003c\u003e();\n        AdInfo adInfo = new AdInfo();\n        adInfo.setActivityImg(\"https://raw.githubusercontent.com/yipianfengye/android-adDialog/master/images/testImage1.png\");\n        advList.add(adInfo);\n\n        adInfo = new AdInfo();\n        adInfo.setActivityImg(\"https://raw.githubusercontent.com/yipianfengye/android-adDialog/master/images/testImage2.png\");\n        advList.add(adInfo);\n    }\n```\n这里只要是初始化图片的UI地址信息，方便我们的后续下载操作。\n\n- 执行弹窗的初始化与现实操作\n\n```\n/**\n * 创建广告活动管理对象\n */\nAdManager adManager = new AdManager(MainActivity.this, advList);\nadManager.setOverScreen(true)\n         .setPageTransformer(new DepthPageTransformer());\n/**\n * 执行弹窗的显示操作\n */\nadManager.showAdDialog(AdConstant.ANIM_DOWN_TO_UP);\n```\n\n怎么样是不是很简单？下面我们可以来看一下具体API。\n\n**具体的API说明：**\n\n- （1）自定义的弹窗弹出方向API\n\n在执行AdManager的showAdDialog方法时，需要传递一个int型的animType参数，我们默认定义了八个该类型的参数，默认如下：\n\n```\n// ####################### 弹出动画效果 ###########################\n    /**\n     * 广告活动弹窗动画-从上至下\n     */\n    public static final int ANIM_UP_TO_DOWN = -11;\n    /**\n     * 广告活动弹窗动画-从下至上\n     */\n    public static final int ANIM_DOWN_TO_UP = -12;\n    /**\n     * 广告活动弹窗动画-从左至右\n     */\n    public static final int ANIM_LEFT_TO_RIGHT = -13;\n    /**\n     * 广告活动弹窗动画-从右至左\n     */\n    public static final int ANIM_RIGHT_TO_LEFT = -14;\n    /**\n     * 广告活动弹窗动画-从左上弹出\n     */\n    public static final int ANIM_UPLEFT_TO_CENTER = -15;\n    /**\n     * 广告活动弹窗动画-从右上弹出\n     */\n    public static final int ANIM_UPRIGHT_TO_CENTER = -16;\n    /**\n     * 广告活动弹窗动画-从左下弹出\n     */\n    public static final int ANIM_DOWNLEFT_TO_CENTER = -17;\n    /**\n     * 广告活动弹窗动画-从右下弹出\n     */\n    public static final int ANIM_DOWNRIGHT_TO_CENTER = -18;\n```\n\n好吧，如果你觉得还不够好，我想让弹窗从右上侧30度角的弹出可以么？这也是支持的，只需要你传递的int型的animType的时候传递30就好了，如下：\n\n```\n/**\n * 执行弹窗的显示操作（参数的范围：0-360，0表示从右侧弹出，逆时针旋转）\n */\nadManager.showAdDialog(30);\n```\n\n那么我们看一下执行效果呢：\n\n![image](https://github.com/yipianfengye/android-adDialog/blob/master/images/ezgif.com-video-to-gif2.gif)\n\n- （2）自定义弹窗距离屏幕两侧的距离以及弹窗的宽高比：\n\n```\n/**\n         * 自定义设置广告活动弹窗距离屏幕两侧距离以及宽高比\n         */\n        button2.setOnClickListener(new View.OnClickListener() {\n            @Override\n            public void onClick(View v) {\n                AdManager adManager = new AdManager(MainActivity.this, advList);\n\n                adManager.setOnImageClickListener(new AdManager.OnImageClickListener() {\n                    @Override\n                    public void onImageClick(View view, AdInfo advInfo) {\n                        Toast.makeText(MainActivity.this, \"您点击了ViewPagerItem...\", Toast.LENGTH_SHORT).show();\n                    }\n                })\n                .setPadding(100)\n                .setWidthPerHeight(0.5f)\n                .showAdDialog(AdConstant.ANIM_UP_TO_DOWN);\n            }\n        });\n```\n\n然后我们看一下执行效果：\n\n![image](https://github.com/yipianfengye/android-adDialog/blob/master/images/ezgif.com-video-to-gif3.gif)\n\n怎么样？是不是发现弹窗的宽高比和距离屏幕两侧的距离发生了变化？\n\n- （3）自定义背景颜色，自定义弹窗是否覆盖全屏，关闭按钮是否显示\n\n```\n/**\n         * 自定义弹窗背景颜色,弹窗是否覆盖全屏,关闭按钮是否显示等\n         */\n        button3.setOnClickListener(new View.OnClickListener() {\n            @Override\n            public void onClick(View v) {\n                AdManager adManager = new AdManager(MainActivity.this, advList);\n\n                adManager.setOnImageClickListener(new AdManager.OnImageClickListener() {\n                    @Override\n                    public void onImageClick(View view, AdInfo advInfo) {\n                        Toast.makeText(MainActivity.this, \"您点击了ViewPagerItem...\", Toast.LENGTH_SHORT).show();\n                    }\n                })\n                .setBackViewColor(Color.parseColor(\"#AA333333\"))\n                .setDialogCloseable(false)\n                .showAdDialog(AdConstant.ANIM_UP_TO_DOWN);\n            }\n        });\n```\n\n然后我们来看一下具体的实现效果：\n\n![image](https://github.com/yipianfengye/android-adDialog/blob/master/images/ezgif.com-video-to-gif4.gif)\n\n可以看到我们更改了弹窗的背景颜色以及未显示关闭按钮\n\n- （4）自定义设置弹性动画弹性参数和速度参数\n\n```\n/**\n         * 自定义设定弹窗弹性参数和速度参数\n         */\n        button4.setOnClickListener(new View.OnClickListener() {\n            @Override\n            public void onClick(View v) {\n                AdManager adManager = new AdManager(MainActivity.this, advList);\n\n                adManager.setOnImageClickListener(new AdManager.OnImageClickListener() {\n                    @Override\n                    public void onImageClick(View view, AdInfo advInfo) {\n                        Toast.makeText(MainActivity.this, \"您点击了ViewPagerItem...\", Toast.LENGTH_SHORT).show();\n                    }\n                })\n                .setBounciness(20)\n                .setSpeed(4)\n                .showAdDialog(AdConstant.ANIM_UP_TO_DOWN);\n            }\n        });\n```\n\n然后我们看一下动画效果：\n\u003cbr\u003e![image](https://github.com/yipianfengye/android-adDialog/blob/master/images/ezgif.com-video-to-gif5.gif)\n\n为了明显的展示出动画效果，我们设置的弹性参数和速度参数比较大，是不是比较出来了这两个参数的作用？\n\n- （5）自定义设置弹窗ViewPager滑动动画：\n\n```\n/**\n         * 自定义设置弹窗ViewPager滑动动画\n         */\n        button5.setOnClickListener(new View.OnClickListener() {\n            @Override\n            public void onClick(View v) {\n                AdManager adManager = new AdManager(MainActivity.this, advList);\n\n                adManager.setOnImageClickListener(new AdManager.OnImageClickListener() {\n                    @Override\n                    public void onImageClick(View view, AdInfo advInfo) {\n                        Toast.makeText(MainActivity.this, \"您点击了ViewPagerItem...\", Toast.LENGTH_SHORT).show();\n                    }\n                })\n                .setPageTransformer(new RotateDownPageTransformer())\n                .showAdDialog(AdConstant.ANIM_UP_TO_DOWN);\n            }\n        });\n```\n\n然后我们看一下弹窗的滑动动画：\n\n![image](https://github.com/yipianfengye/android-adDialog/blob/master/images/ezgif.com-video-to-gif6.gif)\n\n这里我内置了三种ViewPager的滑动动画效果：\n\n```\nDepthPageTransformer；\nRotateDownPageTransformer；\nZoomOutPageTransformer；\n```\n我们还可以自定义实现：PageTransformer自定义出自己的滑动动画效果，更多关于PageTransformer的知识，可参考鸿洋大神的：\u003ca href=\"http://blog.csdn.net/lmj623565791/article/details/40411921\"\u003e Android 实现个性的ViewPager切换动画 实战PageTransformer（兼容Android3.0以下）\u003c/a\u003e\n\n- （6）自定义关闭按钮点击事件回调，ViewPagerItem点击事件回调\n\n```\n/**\n         * 自定义设置弹窗ViewPagerItem点击事件，关闭按钮点击事件回调\n         */\n        button6.setOnClickListener(new View.OnClickListener() {\n            @Override\n            public void onClick(View v) {\n                AdManager adManager = new AdManager(MainActivity.this, advList);\n\n                adManager.setOnImageClickListener(new AdManager.OnImageClickListener() {\n                    @Override\n                    public void onImageClick(View view, AdInfo advInfo) {\n                        Toast.makeText(MainActivity.this, \"您点击了ViewPagerItem...\", Toast.LENGTH_SHORT).show();\n                    }\n                })\n                .setOnCloseClickListener(new View.OnClickListener() {\n                            @Override\n                            public void onClick(View v) {\n                                Toast.makeText(MainActivity.this, \"您点击了关闭按钮...\", Toast.LENGTH_SHORT).show();\n                            }\n                        })\n                .showAdDialog(AdConstant.ANIM_UP_TO_DOWN);\n            }\n        });\n```\n\n好吧，以上就是广告活动弹窗的API，除了以上还可以添加其他的一些API，欢迎提出。\n\n以上就是这个控件的相关内容，欢迎star和follow，也可参考我的blog：\u003ca href=\"http://blog.csdn.net/qq_23547831/article/details/52121633\"\u003eGithub项目解析（十一）--\u003e一个简单强大的自定义广告活动弹窗\u003c/a\u003e\n","funding_links":[],"categories":["对话框"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyipianfengye%2Fandroid-adDialog","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fyipianfengye%2Fandroid-adDialog","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyipianfengye%2Fandroid-adDialog/lists"}