【Android 应用】广告倒计时该怎么做,来看看。。

2024-04-28 21:48

本文主要是介绍【Android 应用】广告倒计时该怎么做,来看看。。,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

今天讲讲广告倒计时怎么做。这边讲的很明白。


先看下最终效果图:

看下这是不是你最终想要的,如果是请往下看。

一、参考

https://www.jianshu.com/p/8cd55b695676

二、实现步骤

上一篇中(https://blog.csdn.net/twk121109281/article/details/107236690)我们实现了smartimageview和Androidvideocache去加载和显示视频和图片。在其基础上我们看下倒计时显示是如何实现。

原理很简单,在整体布局中添加一个textview,并使用CountDownTimer去更新textview的文字显示。

1、整体布局修改

2、CountDownTimer更新

三、整体布局修改

1、将整体布局框架修改成帧布局(FrameLayout)

2、添加textview布局

3、textview背景布局

在res/anim目录(anim目录没有也创建一个)创建文件animation_text.xml文件

补充知识点:Android shape属性大全

在Android开发中,我们可以使用shape定义各种各样的形状,也可以定义一些图片资源。相对于传统图片来说,使用shape可以减少资源占用,减少安装包大小,还能够很好地适配不同尺寸的手机。

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"android:shape="rectangle"><solid android:color="#80000000"/><paddingandroid:bottom="3dp"android:left="8dp"android:right="8dp"android:top="3dp"/><cornersandroid:bottomLeftRadius="45dp"android:bottomRightRadius="45dp"android:topLeftRadius="45dp"android:topRightRadius="45dp"/></shape>

4、布局整体代码

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout  xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:gravity="center"><com.loopj.android.image.SmartImageViewandroid:id="@+id/imageView"android:layout_width="1280dp"android:layout_height="720dp"android:scaleType="fitXY"/><TextViewandroid:id="@+id/picTextView"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="right"android:layout_margin="50dp"android:text="@string/ad_timeout"android:gravity="center"android:background="@anim/animation_text"android:textColor="@android:color/white"android:textSize="50sp"/>
</FrameLayout >

四、CountDownTimer更新

1、初始化textview

private TextView mPicTextView;mPicTextView = (TextView) mImageLayout.findViewById(R.id.picTextView);

2、实现CountDownTimer

    class AdCountDownTimer extends CountDownTimer {/*** @param millisInFuture*      表示以「 毫秒 」为单位倒计时的总数*      例如 millisInFuture = 1000 表示1秒** @param countDownInterval*      表示 间隔 多少微秒 调用一次 onTick()*      例如: countDownInterval = 1000 ; 表示每 1000 毫秒调用一次 onTick()**/public AdCountDownTimer(long millisInFuture, long countDownInterval) {super(millisInFuture, countDownInterval);}public void onFinish() {mPicTextView.setText("0s");}public void onTick(long millisUntilFinished) {mPicTextView.setText( millisUntilFinished / 1000 + "s");}}

3、调用更新

private Handler handler = new Handler() {public void handleMessage(android.os.Message msg) {if (msg.what == 0) {mPicTextView.setText(mAdTime+"s");downTimerCancel();mCountDownTimer = new AdCountDownTimer(mAdTime*1000+300, 1000);mCountDownTimer.start();//tmpHandler.postDelayed(runnable, 1000);}};
};handler.sendEmptyMessage(0);

4、销毁

一定要注意销毁,防止内存泄漏。

private synchronized void downTimerCancel(){if (mCountDownTimer != null) {mCountDownTimer.cancel();mCountDownTimer = null;}
}

五、碰到的问题

1、时间开始时间不对

我们看CountDownTimer的源码可以看到,在执行onTick的方法时,google源码里面减去了程序执行到这里的时候所消耗的时间,这里可以看出google代码的严谨。

解决方案:设置时间的时间多加300ms即可

mCountDownTimer = new AdCountDownTimer(mAdTime*1000+300, 1000);

结束语

到这里一个简单的广告功能就开发完了。

这篇关于【Android 应用】广告倒计时该怎么做,来看看。。的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/944342

相关文章

嗨动PDF编辑器怎么操作pdf删除空白页?教程来了!

随着PDF文件的广泛使用,一些问题也随之而来,其中最常见的就是PDF文件中的空白页。这些空白页不仅占用了宝贵的存储空间,还影响了文件的阅读体验。那么,如何快速有效地删除这些空白页呢?今天,就让我们一起走进嗨动PDF编辑器的世界,学习如何一键删除空白页,轻松优化PDF文档。 一、工具介绍 这是一款功能强大,操作简单的PDF编辑器。可以进行PDF阅读、编辑等等操作,在阅读的过程中还可以轻松

打造微信小程序简易视频编辑应用:从入门到实践

打造微信小程序简易视频编辑应用:从入门到实践 引言 随着社交媒体的兴起,视频已成为人们表达自我、分享生活的重要形式。微信小程序作为一个轻量级的应用平台,为用户提供了随时随地创作和分享视频的便捷途径。本文将带你一起探索如何使用微信小程序开发一个简易的视频编辑应用,从基本概念到实践应用,帮助你快速入门并掌握微信小程序视频编辑的精髓。 一、基本概念与作用 在开发微信小程序视频编辑应用之前,我们需

LNG船气体监测系统中甲烷传感器的应用

随着全球能源结构的转型和环保意识的增强,液化天然气(LNG)作为清洁、高效的能源,其运输需求日益增长。LNG船作为专门用于运输液化天然气的特种船舶,其安全性和可靠性直接关系到能源供应的稳定性和环境保护的有效性。在这个过程中,甲烷传感器在LNG船气体监测系统中发挥着至关重要的作用。 LNG船的工作环境极为特殊,需要面对超低温、高压以及潜在的可燃气体泄漏等风险。甲烷作为LNG的主要成分,其泄

企业如何通过行列视生产数据应用系统实现生产革命

在当今竞争激烈的商业环境中,革新生产流程已成为企业提升效率、降低成本并维持市场竞争力的关键策略。多家行业领先的企业已经通过引入行列视系统来彻底改变他们的生产方式。行列视系统的实施不仅提高了这些企业的操作效率,同时也大幅度降低了运营成本,进一步促进了业务的整体增长和扩展。 行列视系统通过其高级的数据分析和报告功能,使企业能够实时监控生产活动,从而实现了生产过程的优化。以下是该系统实施后在各个方

【chisel】chisel怎么给io wire定义初值

在 Chisel 中,为 IO 节点的 Wire 定义初始值通常与特定的信号类型和使用场景有关。以下是一些定义初始值的常见方法: 使用 RegInit 创建寄存器并定义初始值: 当您想要为一个寄存器类型的 Wire 定义初始值时,可以使用 RegInit。以下是一个例子: class MyModule extends Module {val io = IO(new Bundle

电脑怎么分盘?简单3步轻松搞定!

在使用电脑时,将硬盘进行分盘是一种常见的操作,可以帮助用户更好地管理数据和文件。通过分盘,用户可以将不同类型的数据存储在不同的区域,提高数据的管理效率和安全性。本文将介绍电脑怎么分盘的3种方法,帮助您了解如何在电脑上进行硬盘分区操作。 电脑分盘方法1:磁盘管理工具 很多人不知道,电脑怎么分盘?其实在Windows系统中,可以使用自带的磁盘管理工具进行分区操作。以下是操作步骤: 第一步

开源模型应用落地-CodeQwen模型小试-集成langchain(四)

一、前言     通过学习代码专家模型,开发人员可以获得高效、准确和个性化的代码支持。这不仅可以提高工作效率,还可以在不同的技术环境中简化软件开发工作流程。代码专家模型的引入将为开发人员带来更多的机会去关注创造性的编程任务,从而推动软件开发的创新和进步。     通过使用langchain,用户可以直接提出问题或发送指令,而无需担心具体的步骤或流程。langchain会自动将任务分解为多个子任

揭秘APP广告:变现逻辑全解析!

在当今的移动互联网时代,APP广告变现已经成为了各大应用开发者的主要营收来源之一。然而,随着科技的发展、用户行为的变化以及广告市场趋势的演进,APP广告变现逻辑也正在不断地进行优化和调整。本文将基于当前市场和技术趋势,为大家详细解析APP广告变现的最新逻辑和策略。 我们需要了解的是,广告变现的核心在于如何更有效地将广告展示给最可能感兴趣的用户,从而最大化广告收益。这就需要我们对用户行为进行深入的

hiho一下 第六十二周 题目1 : Browser Caching stl 应用

题目1 : Browser Caching 时间限制: 10000ms 单点时限: 1000ms 内存限制: 256MB 描述 When you browse the Internet, browser usually caches some documents to reduce the time cost of fetching them from remo

GO语言核心30讲 实战与应用 (WaitGroup和Once,context,Pool,Map,字符编码,string包,bytes包)

原站地址:Go语言核心36讲_Golang_Go语言-极客时间 一、sync.WaitGroup和sync.Once 1. sync.WaitGroup 比通道更加适合实现一对多的 goroutine 协作流程。 2. WaitGroup类型有三个指针方法:Wait、Add和Done,以及内部有一个计数器。 (1) Wait方法:阻塞当前的 goroutine,直到计数器归零。 (2)