精华内容
下载资源
问答
  • Android app启动页广告

    热门讨论 2016-12-15 10:26:22
    Android app启动也得广告,时间倒计时,支持跳过。详情见博客:http://blog.csdn.net/u010918416/article/details/52924930
  • 预缓存加载的图片, 以图片的 Url 为Key 值存储// 预加载 提前缓存好的欢迎图Picasso.with(HomeActivity.this).load(cacheUrl).fetch(new Callback() {@Overridepublic void onSuccess() {ConfigManage.INSTANCE....

    本文为仅学习记录

    1. 预缓存加载页的图片, 以图片的 Url 为Key 值存储

    // 预加载 提前缓存好的欢迎图

    Picasso.with(HomeActivity.this).load(cacheUrl).fetch(new Callback() {

    @Override

    public void onSuccess() {

    ConfigManage.INSTANCE.setBannerURL(cacheUrl);

    }

    @Override

    public void onError() {

    }

    });

    2. 进入启动页时 , 以Key值获取缓存图片实现加载

    Picasso.with(this)

    .load(url)

    .into(binding.imgLauncherWelcome, new Callback() {

    @Override

    public void onSuccess() {

    Handler handler = new Handler();

    handler.postDelayed(new Runnable() {

    @Override

    public void run() {

    if (!isResume) {

    finish();

    return;

    }

    goHomeActivity();

    }

    }, 1200);

    }

    @Override

    public void onError() {

    goHomeActivity();

    }

    });

    3. 通过标志位,记录该 Activity 是否在前台显示,控制当 Activity 再次 onResume, 不再显示广告页

    /**

    * 记录该 Activity 是否在前台显示

    */

    private boolean isResume;

    @Override

    protected void onResume() {

    super.onResume();

    isResume = true;

    }

    @Override

    protected void onPause() {

    super.onPause();

    isResume = false;

    }

    展开全文
  • 最近由于运营的需求,我们需要在APP启动页展示广告广告图更新频繁、样式复杂,不可能交给开发适配,也不可能让设计师每次手动做多个尺寸(光想想就要抓狂),所以我开始思考用一个尺寸适配所有屏幕的方法。...

    之前我们产品里的启动页比较简单,就是背景色加上我们的logo、slogan等,这种形式适配起来比较容易,把元素切出来交给开发写出来就行。最近由于运营的需求,我们需要在APP启动页展示广告,广告图更新频繁、样式复杂,不可能交给开发适配,也不可能让设计师每次手动做多个尺寸(光想想就要抓狂),所以我开始思考用一个尺寸适配所有屏幕的方法。

    确定基础尺寸

    我们主要适配的是Android和iPhone这两个主流平台,常见分辨率如下。

    8b0605674e2d?from=groupmessage&isappinstalled=0

    Android和iOS平台常见分辨率

    从上表可以看出,iPhone 5/5s、iPhone 6/7/8、iPhone 6/7/8 Plus都是等比例的,屏幕的长宽比大约是1.77;而Android目前最主流的1080P、720P也都是这个比例。所以,为了兼顾两个平台,我采用这个比例下的最大尺寸,即iPhone 6/7/8 Plus的1242*2204为基础尺寸做图,其他尺寸用这张图去适配,这样可以最大限度地让尽可能多的屏幕完美显示,同时在较高分辨率下又不至于模糊。

    如何裁剪

    想用一张图适配不同尺寸的屏幕,图片肯定会被裁剪,那么图片是怎样被裁剪的呢?

    为了填满屏幕的空间,图片需要按照一定的比例去等比放大或缩小,缩放的中心点为图片的中心点。当遇到 长宽比 比自己大(即高瘦)的屏幕时,为了填满屏幕高度,图片需要放大到与屏幕等高的大小,此时就会裁剪掉图片的左右两侧;而反过来,当遇到 长宽比 比自己小(即矮胖)的屏幕时,就会裁剪掉图片上下超出的部分。如下图示例。

    简而言之,由矮胖往高瘦适配,裁剪掉左右;反过来则裁剪掉上下。

    8b0605674e2d?from=groupmessage&isappinstalled=0

    图片的裁剪方式

    确定安全区域

    确定了基础尺寸,弄清楚了裁剪的规则,那我们可以在图片上确定一块「安全区域」。所谓「安全区域」,就是适配时确保不会被裁掉的区域,设计师在设计时可以把文字、logo、slogan等重要内容安排在该区域内,从而保证核心内容不会被裁掉。

    从上面的裁剪规则我们知道了,长宽比越小(越矮胖)的屏幕,上下部分会被裁剪得更多;长宽比越大(越高瘦)的屏幕,左右两侧则被裁剪得更多。因此,按照长宽比最小的屏幕尺寸和长宽比最大的屏幕尺寸,可以分别确定上下左右的裁剪边界,边界里的即为安全区域。

    而在我们适配的范围内,长宽比最小的尺寸是320x480(mdpi,iPhone4),最大的是375x812(iPhoneX),因此最终确定的安全区域是1020x1863,如下图所示。

    8b0605674e2d?from=groupmessage&isappinstalled=0

    确定安全区域

    适配效果

    最终同一张图在各个分辨率下的适配效果如图,为了方便查看,图中对安全区域的四个角做了标记。

    8b0605674e2d?from=groupmessage&isappinstalled=0

    同一张图在各个分辨率下的适配效果

    最后

    如果你的启动页除了展示广告外,还需要固定展示品牌信息(如网易云音乐的启动页,下面会固定有一块区域展示logo、版权信息等),可以在下面留出固定比例的空间,如留出15%的高度,剩下的空间按照上面的方法确定尺寸和安全区域就好啦。

    展开全文
  • 前些时候就是别人问我他的android APP怎么做一个广告的欢迎界面,就是过几秒后自动跳转到主界面的实现。 也就是下面这种类似的效果。要插什么广告的话你就换张图吧。 那么我就思考了下,就用了android 的一个动画类...
  • Android启动页广告(腾讯广告联盟) 启动页几乎成为了每个app的标配,有些商家在启动页中增加了开屏广告以此带来更多的收入。目前启动页的广告都有倒计时的功能,那么我们在倒计时的过程中能做些什么呢? 这篇文章...
  • 启动页几乎成为了每个app的标配,有些商家在启动页中增加了开屏广告以此带来更多的收入。目前启动页广告都有倒计时的功能,那么我们在倒计时的过程中能做些什么呢? 这篇文章主要包括以下两方面内容 集成腾讯广告...
  • 在开发中,突然要求要做启动页广告页,在网上找了类似demo,但是没有找到想要的,最终找到一些类似的改编成自己想要的: 动态更改,支持gif图片广告图。
  • 浅谈APP启动界面广告

    2021-05-26 15:31:29
    App启动页,也称闪屏页,最初是为缓解用户等待Web/iOS/Android App数据加载的焦虑情绪而出现,后被设计师巧妙用于品牌文化展示,服务特色介绍以及功能界面熟悉等平台进行设计,被赋予了更加丰富而实际的作用。...

    App启动页,也称闪屏页,最初是为缓解用户等待Web/iOS/Android App数据加载的焦虑情绪而出现,后被设计师巧妙用于品牌文化展示,服务特色介绍以及功能界面熟悉等平台进行设计,被赋予了更加丰富而实际的作用。

    然而,即使是简单的使用图片,文字,以及色彩的不同直接展示软件或产品功能文化的启动页,也会给用户带来完全不同的感受和体验。可惜的是国内知名APP的启动界面大多被广告占据,但是不同的APP也有不同的广告展现方式,今天我就来给大家介绍一下。

    微信

    微信的启动界面是大家熟悉的地球图。说到这张图,其实后边的地球不是自己制作的图片,而是一张真实的照片,照片名字叫做“蓝色弹珠”。

    为什么选用这张照片呢?因为这张照片有非凡的意义:这是人类第一次在太空中眺望地球,拍摄于1972年12月7日,由阿波罗17号飞船上的三名宇航员中用一台80毫米镜头的哈苏照相机拍摄而成。从此之后,阿波罗登月计划停止,人类就很少在这个距离拍摄地球的照片。当然这里还有第二个原因:这张照片上的地球,刚好处于非洲上空,微信团队这样解释:

    非洲大陆是人类文明的起源地,我们将非洲上空的云图作为启动页的背景图,也希望将‘起源’之意赋予启动页面。

    2017年9月26日,微信悄悄更换过一次启动画面。更换图片的原因很简单: 新的启动画面是由中国的风云四号卫星拍摄。

    不过,这张图仅仅存在了四天就变回了原来的启动页,是为了纪念中国航天技术取得重大突破。

    微信的界面一直是人们熟悉的,这样的做法能够让人们对APP产生熟悉感和亲切感。

    314eedeb90a9?from=timeline

    微信

    小红书

    小红书作为一个分享社区加电商平台,它的启动界面广告多是商品,以大牌护肤品和化妆品为主。而且多采用动图模式,画面唯美吸引人。商品通常放在屏幕正中最显眼的位置,传播效果好。

    314eedeb90a9?from=timeline

    小红书

    微博

    微博的启动界面广告采取的是分割模式,将整个屏幕分割成了两个部分,大部分展示广告,下边一小部分仍是微博的图标。

    314eedeb90a9?from=timeline

    微博

    结语

    这三款APP都是国内比较热门和大家常用的APP,在国内的APP中开启界面带有广告已是不可阻止的现象了。但是令人赏心悦目的界面广告也能为用户提供好的体验,所以在开启界面方面,设计师也应该用心钻研,追求给用户带来更好的体验。

    展开全文
  • app启动页广告思路

    千次阅读 2018-09-11 09:46:44
    最近又有做了个app启动页广告功能 虽然市面上n多的demo和方案 但我还是决定把我的也拿出来分享给大家, 因为我看了几个demo都或多或少在我的项目中有些问题。1、广告页是设置在window的rootViewController上2、广告...

    最近又有做了个app启动页广告功能 虽然市面上n多的demo和方案 但我还是决定把我的也拿出来分享给大家, 因为我看了几个demo都或多或少在我的项目中有些问题。

    1、广告页是设置在window的rootViewController上

    2、广告页加在了系统的keywindow上

    3、没有考虑特殊场景打开app时不需要显示广告页的情况

    基于以上问题 我先来说说我自己的实现思路:

    同样是通过后台接口配置来获取是否显示广告页已经具体的广告页图片Image,在app启动的时候调用接口请求

    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    // Override point for customization after application launch.
    
    //检测数据是否有更新
    [[DDAdHepler sharedManager] requestAdData];
    
    [self checkLogin];
    
    return YES;
    
    }复制代码

    我为什么要在注释的地方写的是 //检测数据是否有更新 因为这里确实还做了检查是否有更新的判断,因为总不能每次启动都重新下载广告图吧 具体如下:

    - (void)requestAdData{
    //[xxx requestAdData:[self phoneModel] callBack:^(BOOL success, id responseObject, NSError *error) {
            //读取服务器返回的JSON数据
            NSDictionary *new_json = nil;//responseObject[@"data"][@"loadPage"];
            NSString *ts = new_json[@"lastUpdateTime"];
            //读取之前保存过的JSON数据
            NSDictionary *dictionary = [self readAdJson];
            NSString *last_ts = dictionary[@"lastUpdateTime"];
    
            //如果最后的更新时间不同 就以服务端新返回的为准 覆盖本地的
            if(![last_ts isEqualToString:ts]){
                [self saveAdJson:new_json];
            }
     // }];
    }复制代码

    仔细看,实现的逻辑就是有一个lastUpdateTime标志。在请求完以后判断本地的json跟新请求的数据里关于lastUpdateTime这个标志是否被更新。只有新数据里的lastUpdateTime标志被更新才更新本地json已经重新下载广告图。

    保存json到本地沙盒的方法

    - (void)saveAdJson:(NSDictionary *)AdJson{
        //本地应用更新成功,字典转json, 将最新的字典信息写入沙盒
        NSData *jsonData = [NSJSONSerialization dataWithJSONObject:AdJson options:NSJSONWritingPrettyPrinted error:nil];
        BOOL saveOk = [jsonData writeToFile:[self AdJsonPath] atomically:YES];
        if(saveOk){
            [self saveAdImage:AdJson[@"picture"][@"url"]];
        }
    }复制代码

    下载广告图并保存到本地沙盒的方法

    // 保存图片
    - (void)saveAdImage:(NSString *)image_url{
        __block NSInteger retryCount = 0;
        __weak typeof(self) weak_self = self;
        self.downLoadFinishBlock = ^(BOOL success) {
            if(!success){
                retryCount ++;
                if(retryCount <= 3){
                    [weak_self downLoadAdImage:image_url finishHandler:weak_self.downLoadFinishBlock];
                }
         }
        };
    
        [self downLoadAdImage:image_url finishHandler:self.downLoadFinishBlock];
    }
    
    
    #pragma mark - 下载图片
    // 下载图片
    - (void)downLoadAdImage:(NSString *)url finishHandler:(void(^)(BOOL success))finish{
    
        dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
            NSString *AdImageDirPath = [self AdImageDirPath];
            NSFileManager *fileManager = [NSFileManager defaultManager];
        
            if(![fileManager fileExistsAtPath:AdImageDirPath]){
                [fileManager createDirectoryAtPath:AdImageDirPath withIntermediateDirectories:YES attributes:nil error:nil];
            }
        
            NSData *data = [NSData dataWithContentsOfURL:[NSURL URLWithString:url]];
            if(data){
                [data writeToFile:AdImageDirPath atomically:YES];
            }else{
                if(finish) finish(NO);
            }
        });
    }复制代码

    这里有个小小的逻辑是做了个3此重试的机制,万一不小心没down下来呢。

    以上是保存广告页的逻辑代码,接下来就看看如何读取这个图片 他有什么逻辑?

    细心的同学应该发现了 在app启动哪里我写了个 [self checkLogin]的方法调用。没错 这里就是要检测显示的逻辑开始。

    @implementation AppDelegate (Login)
    
    - (void)checkLogin{
        BOOL showGuidePage = [[NSUserDefaults standardUserDefaults] boolForKey:kShowGuidePage];
        ViewController *viewController = [ViewController instanceFromXib];
        if(!showGuidePage){
            GuidePageViewController *ctrl = [GuidePageViewController instanceFromXib];
            ctrl.StartAppBlock = ^(NSDictionary *dictionary) {
                [[NSUserDefaults standardUserDefaults] setBool:YES forKey:kShowGuidePage];
                self.window.rootViewController = viewController;
            };
            self.window.rootViewController = ctrl;
        }else{
        
        //if(判断用户已登录){
            self.window.rootViewController = viewController;
            [self showAdvertisingPage];
        /* }else{
            //这里执行登录的操作 那么就会出现登录的回调
        }
        */
        }
    }复制代码

    看见没?你看清楚没? 我是写在了一个AppDelegate的分类里面 [self showAdvertisingPage] 这个方法调用才是真正的显示广告页。

    - (void)showAdvertisingPage{
    
        if(!self.hiddleAd && DDAdHepler.sharedManager.showAdImage) {
    
            UIWindow *testWindow = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
            DDStartAdPageCtrl *VC= [[DDStartAdPageCtrl alloc] init];
            __weak typeof(VC) weakSelf = VC;
            VC.adPageSkipBlock = ^{
                [weakSelf.view removeFromSuperview];
                self.AdWindow.hidden = YES;
                self.AdWindow = nil;
            };
            UIWindow *window = [UIApplication sharedApplication].keyWindow;
            self.AdWindow = testWindow;
            testWindow.windowLevel = UIWindowLevelAlert;
            testWindow.rootViewController = VC;
            [testWindow makeKeyAndVisible];
            [window makeKeyWindow];
        }
    }复制代码

    看了的人会疑惑 self.hiddleAd?? DDAdHepler.sharedManager.showAdImage??什么鬼? 不要着急,慢慢给你道来。

    这两个条件是用来判断是否显示广告页的: self.hiddleAd是用于外部条件下不显示广告页的设置,比如说你是通过推送打开app的,这个时候就可以通过此参数来控制是否要显示广告页。 DDAdHepler.sharedManager.showAdImage是广告页内部本身是否显示的条件 比如说要在某个活动时间内才显示这个广告页。

    看着看着 诶 self.AdWindow?又是个什么鬼。 这是我在AppDelegate设置的一个属性,为了能够全局持有自己new的testWindow。这里就说下为什么要自己新new一个window,而不是加载keywindow的原因: 在我们的项目中,打开app的时候 还有一些其他的业务需要强弹窗,这个弹窗也是加在keywindow上的。并且业务弹窗是在广告页之后,这样就会出现一个尴尬的情况,广告页之上扶着一个业务的弹窗。 所以在此自己新new一个window并且他的windowLevel设置成UIWindowLevelAlert就解决这个问题。 你试了了嘛?

    还有第一个问题,为什么不直接设置window的rootViewController 你这样设置了 在切换到工程的主界面 又得重新请求主页面需要展示的所以数据,这在时间上多少有点浪费。 如果能加载window上,既展示了广告,与此同时又请求了数据,两全其美。

    以上就是我的实现思路。如有不当之处,还请不吝赐教! 拜谢!!

    以下是代码地址:github.com/doudoudie/D…


    展开全文
  • Android 启动页面与广告页面的实现

    万次阅读 多人点赞 2017-03-26 16:46:27
    在我们APP的开发过程中,启动页面是绕不开的,广告页面说不定,但是不得不说,这两个界面都是经常要用到的。接下来我记录一下我的实现过程。项目架构为MVP。  那么先看看我们的需求和流程:(当然这也是可以根据...
  • Android】如何实现启动APP时引导、欢迎功能设置只在第一次启动APP时加载引导。开发工具:AndroidStudio 2.3.1 .资源讲解博客地址:http://blog.csdn.net/yuxunye85/article/details/74292237
  • 使用Flutter开发的常见的App启动页
  • 惊鸿一瞥微信的启动页,相信大家都不陌生。 不知道大家有没有发现一个现象,微信每次启动的时候,是直接进入这个启动页面。 我的意思是,很多应用,往往会先白屏停顿一下后再进入启动页面(Splash)。为了印证这...
  • 本文参考了目前大部分 Android 应用启动优化的方案,将大家的方案做一个汇总,如果你有这方面的需求,只需要对照这篇文章,看看其他人的方案,查漏补缺。很多方案是要根据具体的业务去做优化的,所以这里也没有对每...
  • 如今的App可谓是异彩纷呈。但是它们基本都有一个共同的特性,就是启动应用时会有启动页(可插入广告),第一次安装启动时还有引导页(展现APP的风采、特性等)。
  • Android 应用启动欢迎界面广告0.写在前面在这篇教程中来实现一个类似于微信的的延迟3秒再进入主界面的效果。1.项目准备先新建一个空的android项目。里面只自带一个MainActivity,首先我们再新建一个Activity叫做...
  • 参加Android 项目开发,该项目和大多数App一样是需要先登录,登录帐号成功后再去获取用户的其他业务信息。App 没有真正的在线状态,后端服务器和终端是通过登录后返回的一个token 来维护用户的登录状态信息(类似http...
  • 最近在修改一个启动页,和启动页广告的需求 问题出现的场景 原来没有设置启动页内容,所以每次打开应用第一眼是白屏,白屏的停留时间并不固定,取决于应用的相应速度,这样感觉挺突兀的,我想了一个办法可以固定时间...
  • 凑字数:之前做的几个app由于没考虑加启动页(毕竟是打比赛用的,没做细节),都是一点开出现一个空白页,然后过几秒才加载出视图,体验是真的不行。直到现在真的要做一个属于自己的项目了,才去关注了下这个问题。好...
  • App启动页倒计时功能

    2021-06-02 14:09:50
    App启动页设计实例与技巧 App启动页,也称闪屏页,最初是为缓解用户等待Web/iOS/Android App数据加载的焦虑情绪而出现,后被设计师巧妙用于品牌文化展示,服务特色介绍以及功能界面熟悉等平台进行设计,被赋予了更加丰 ....
  • android启动页停留时间

    2021-05-26 18:51:45
    现在绝大数应用都有启动页,多数形式是放一张图。最好是网络请求过来的,下面只说本地默认图关键是停留时间的控制特别说明:几种时间控制有误差(系统时间的受内存的影响)1、Timer 有时间误差2、new Handler() 有时间...
  • 引言通常来讲,咱们都会将本身的产品与同类的产品进行个比对,不可避免的会去作些性能优化,以达到赛过其余产品... 电量优化javaAPP启动速度优化(1)初识启动方式APP启动的方式分为3种:;冷启动、热启动、温启动。-...
  • Android app开发 如何添加启动界面

    千次阅读 2019-06-19 11:33:42
    打开任意的一个app时,其中大部分都会显示一个启动界面,于我而言印象最深的就是微信的大地球了,启动界面通常情况下展示出的都是自家的logo,但也有甚者则直接把广告放到了上面。 在这里为大家提供两种不同的设置...
  • 示例代码采用 RxJava +RxLifecycle + Data-Binding 模式编写示例图:话不多说,实现方式如下:1.导入依赖库①RxJava: Reactive Extensions for the JVMcompile ‘io.reactivex:rxjava:1.2.9‘compile ‘io.reactivex...
  • APP启动页的正确配置方式

    千次阅读 2016-03-01 16:54:15
    当然像一些大厂的APP,像网易新闻等启动页面都是广告,人家要收广告费的。但是,对于一些普通的APP,有的也出现等待三秒的启动画面,出现一个大大的logo,好像告诉用户他打开的是什么应用,加深用户的映像,这完全是...
  • android启动页广告欢迎界面

    千次阅读 2016-12-13 15:19:24
    之前做的app启动页与主界面做在一个activity中了,通过visibility属性加上动画效果做的启动页,添加的广告页如果也写在一起,想想头就大了,果断单独又提出了一个acitivity,将启动页与广告页放在了一起。...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 6,726
精华内容 2,690
热门标签
关键字:

androidapp启动页广告