SplashView:一行代码解决闪屏页(广告页) Android/Java篇

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
查看查看214 回复回复2 收藏收藏 分享淘帖 转播转播 分享分享 微信
查看: 214|回复: 2
收起左侧

SplashView:一行代码解决闪屏页(广告页) Android/Java篇

[复制链接]
攻城狮 发表于 2016-7-12 04:56:25 | 显示全部楼层 |阅读模式
快来登录
获取优质的苹果资讯内容
收藏热门的iOS等技术干货
拷贝下载Swift Demo源代码
订阅梳理好了的知识点专辑
闪屏页或者广告页 (SplashView) 在众多 App 里是比较常见的。一般来说 SplashView 有以下职责:

  • 在合适的时机显示 SplashView - 可控性
  • 下载、缓存、更新图片
  • 回调响应图片点击事件
  • 倒计时 Dismiss View,主动跳过 Dissmiss View
  • 本地没有缓存时,显示默认图片或者不显示 SplashView


好了,先看看效果:

SplashView:一行代码解决闪屏页(广告页) Android/Java篇 1

SplashView:一行代码解决闪屏页(广告页) Android/Java篇 - 敏捷大拇指 - SplashView:一行代码解决闪屏页(广告页) Android/Java篇 1


SplashView:一行代码解决闪屏页(广告页) Android/Java篇 2

SplashView:一行代码解决闪屏页(广告页) Android/Java篇 - 敏捷大拇指 - SplashView:一行代码解决闪屏页(广告页) Android/Java篇 2


在 Activity 上显示 SplashView, 需要注意的是要在 Activity setContentView(int viewId) 之后调用:

[Java] 纯文本查看 复制代码
protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_sample);
        // call after setContentView(R.layout.activity_sample);
        SplashView.simpleShowSplashView(this);
}


也可以自定义超时时间、默认图片、回调方法等:

[Java] 纯文本查看 复制代码
/**
     * static method, show splashView on above of the activity
     * you should called after setContentView()
     * @param activity  activity instance
     * @param durationTime  time to countDown
     * @param defaultBitmapRes  if there's no cached bitmap, show this default bitmap;
     *                          if null == defaultBitmapRes, then will not show the splashView
     * @param listener  splash view listener contains onImageClick and onDismiss
     */
SplashView.showSplashView(this, 3, R.drawable.default_img, new SplashView.OnSplashViewActionListener() {
            @Override
            public void onSplashImageClick(String actionUrl) {
                Log.d("SplashView", "img clicked. actionUrl: " + actionUrl);
                Toast.makeText(SampleActivity.this, "img clicked.", Toast.LENGTH_SHORT).show();
            }
            @Override
            public void onSplashViewDismiss(boolean initiativeDismiss) {
                Log.d("SplashView", "dismissed, initiativeDismiss: " + initiativeDismiss);
            }
        });


更新 SplashView 数据方法 updateSplashData 可以在任何时候任何地方调用:

[Java] 纯文本查看 复制代码
// call this method anywhere to update splash view data
SplashView.updateSplashData(this, "http://ww2.sinaimg.cn/large/72f96cbagw1f5mxjtl6htj20g00sg0vn.jpg", "http://jkyeo.com");


说说原理,其实很简单。如图选中 FrameLayout 下唯一的 ChildView 是我们自定义的通过 setContentView 设置的 View。那么我们只需要讲 SplashView 作为这个 FrameLayout 的 ChildView 覆盖在最上层即可。合适的时候 remove 实现 Dismiss。

SplashView:一行代码解决闪屏页(广告页) Android/Java篇 3

SplashView:一行代码解决闪屏页(广告页) Android/Java篇 - 敏捷大拇指 - SplashView:一行代码解决闪屏页(广告页) Android/Java篇 3

View Hierarchy

核心代码:

[Java] 纯文本查看 复制代码
ViewGroup contentView = (ViewGroup) activity.getWindow().getDecorView().findViewById(android.R.id.content);
...
contentView.addView(splashView, param);


剩下的就是处理缓存、定时器、Dismiss 动画、显示隐藏状态栏,ActionBar 的问题了。

对应 iOS(Swift) 版本在这里:《SplashView:一行代码解决闪屏页(广告页) iOS/Swift篇

完整示例代码参见:

游客,如果您要查看本帖隐藏内容请回复





相关内容:

SplashView:一行代码解决闪屏页(广告页) Android/Java篇

SplashView:一行代码解决闪屏页(广告页) iOS/Swift篇




作者:jkyeo

都看到这里了,就把这篇资料推荐给您的好朋友吧,让他们也感受一下。

回帖是一种美德,也是对楼主发帖的尊重和支持。

*声明:敏捷大拇指是全球最大的Swift开发者社区、苹果粉丝家园、智能移动门户,所载内容仅限于传递更多最新信息,并不意味赞同其观点或证实其描述;内容仅供参考,并非绝对正确的建议。本站不对上述信息的真实性、合法性、完整性做出保证;转载请注明来源并加上本站链接,敏捷大拇指将保留所有法律权益。如有疑问或建议,邮件至marketing@swifthumb.com

*联系:微信公众平台:“swifthumb” / 腾讯微博:@swifthumb / 新浪微博:@swifthumb / 官方QQ一群:343549891(满) / 官方QQ二群:245285613 ,需要报上用户名才会被同意进群,请先注册敏捷大拇指

嗯,不错!期待更多好内容,支持一把:
支持敏捷大拇指,用支付宝支付10.24元 支持敏捷大拇指,用微信支付10.24元

评分

参与人数 1金钱 +10 贡献 +10 专家分 +10 收起 理由
Anewczs + 10 + 10 + 10 32个赞!专家给力!

查看全部评分

本帖被以下淘专辑推荐:

cocoaswift 发表于 2016-7-14 16:35:25 | 显示全部楼层
Swift不是可以支持Android么,还用Java写干嘛~~~
安卓大师 发表于 2016-8-21 05:58:52 | 显示全部楼层
赞!!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

做任务,领红包。
我要发帖

分享扩散

都看到这里了,就把这资料推荐给您的好朋友吧,让他们也感受一下。
您的每一位朋友访问此永久链接后,您都将获得相应的金钱积分奖励
热门推荐

合作伙伴

Swift小苹果

  • 北京治世天下科技有限公司
  • ©2014-2016 敏捷大拇指
  • 京ICP备14029482号
  • Powered by Discuz! X3.1 Licensed
  • swifthumb Wechat Code
  •   
快速回复 返回顶部 返回列表