热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

安卓图像自动循环播放:广告展示优化方案

在电商平台的首页,自动轮播的广告是常见的营销手段。本文将详细介绍如何开发一个高效的广告轮播功能,实现广告内容的自动切换,提升用户体验和广告效果。我们将探讨关键技术点和优化策略,确保广告展示流畅且吸引用户注意力。
在各大电商网站的首页,都能看到自动轮播的广告,每隔数秒,就会自动切换其中的广告;今天我们就来制作一个广告轮播功能;需完成效果:

1,广告内容自动轮播

2,左右切换展示广告

3,手动选择指定广告

主要功能点:动态面板

一 准备工作

1,新建4个页面,作为点击广告后的跳转链接页面;(只作为一个跳转的地址)2,准备4张图片,用作首页的广告轮播素材

ae5e77843326dc9c8335f7917b451314.png

二 自动轮播

需实现效果:在网页的固定位置,每隔固定时间,自动切换当前位置显示的图片;操作步骤:1,在index页面中拉入一个“动态面板”原件,命名为“ad”;对“ad”新增3个面板状态,并将4个面板状态依次命名为“ad1”“ad2”“ad3”“ad4”;

f4f236f73059b46d4fd5498850cb3535.png

da5416e7af3d6da01a45a9a2ab2384d8.png

2,剪切一张我们事先准备好的图片,双击动态面板“ad”的状态1“ad1”,打开“ad1”的页面;复制图片;我们会发现,复制的图片与我们的动态面板大小不匹配,导致在动态面板中,只能显示一部分的图片;我们只需要选中动态面板“ad”,在属性中勾选“自动调整为内容尺寸”就可以解决这个问题;

0c85d576cbadeba97665ec3e87c9ccba.png

79a9062ba0120fdf243be0cedcf2cfbd.png 

3,重复第二步动作,我们将其他三个面板状态(ad2,ad3,ad4)依次放入事先准备好的图片;4,设置自动轮换,点击页面空白处(或按Esc键),以显示页面属性;双击属性中的“页面载入时”,打开页面载入时的交互设置界面;

ef4ce5e5a441192f4ac8969038023360.png

5,选择“设置面板状态”,在右侧选中动态面板“ad”;选择状态中选择“next”,以实现自动切换下一个面板状态;勾选“向后循环”,可以实现循环动作;勾选“循环间隔”,并将轮播时间修改为“3000ms”。即每隔2秒,会自动切换为后一个广告;

3f1e17fd8c016cbc17646ee0a8864d00.png

d4a5c10830b776cf7bbd56915d715b45.png

eb3500f8e515aad4adcb224d1f9e498f.png

三 手动切换左右状态

需实现效果:鼠标移入广告图片区域时,停止自动轮播,停在当前的广告图片上;同时在左右两侧显示按钮,点击左侧按钮,可以手动切换上一个广告图片,点击右侧按钮,可以手动切换下一个广告图片;鼠标移出广告区域,恢复自动轮播效果;操作步骤:1,在动态面板“ad”上,放置两个图片,分别命名为“left”“right”,用以控制广告切换的操作;

20d9f8e89aeae24fbcbff22268fa63c5.png

2,设置图片“left”“right”默认为“隐藏状态;

d075a593671d09aa1bf5ded6a32319cb.png

3,需要实现,点击“left”图片时,广告切换为上一个广告:选中“left”,双击添加事件“鼠标单击时”;

ba57da3ab122d4526caf2bca5c1a12bd.png 

4,添加“设置面板状态”,选择“ad”,设置状态为“previous”,勾选“向前循环”;点击确认,完成;

6509adb2b049ba3cfe73207912dfe561.png

5,类似的操作在“right”上再作一遍,状态设置为“next”,并勾选“向后循环”;

cb2abf65a1f56052059f9794f716dde3.png 

6,要实现鼠标移入广告区域时,暂停自动轮播,同时将隐藏的两个控制按钮“left”“right”显示出来;选中动态面板“ad”,选择事件“鼠标移入时”(默认的交互事件中没有,需要点击“更多事件”

c5d480edcd3c97ea9fa32bc31fd97104.png

f441260b27a92f029dd109a77512c578.png

7,添加“设置面板状态”,选择“ad”,将状态设置为“停止循环”

ea4335624371b64063b0d32dd3007a04.png

8,添加“显示”,选择“left”“right”,设置为“显示”

fb479e7da7455eeab038b25dac3287df.png

9,要实现鼠标移出广告区域时,恢复自动轮播,同时隐藏的两个控制按钮“left”“right”;高能预警,此处有坑,按常规做法,我们会按下面步骤操作:选中动态面板“ad”,选择事件“鼠标移出时”(默认的交互事件中没有,需要点击“更多事件”添加“设置面板状态”,选中“ad”,重新设置自动轮播的效果,即将状态设为“next”,勾选“向后循环”,勾选循环间隔,时间设为“3000ms”;添加“隐藏”,选中“left”“right”,勾选“隐藏”;

24aa4433663ccacead669856f6e65753.png

1d0f8d702f8e02dda6864e4b8ee82240.png

看似效果已经实现,而实际预览的时候,却发现鼠标移入的时候,两个小图片正常显示了,广告也不自动切换了,可是当我们点击“left”或“right”的时候,广告页却没按设想的一样切换为新的广告图片;10,细心的朋友可能发现了,当我们点上“left”或“right”的时候,小图标居然是看不见的;没错,其实根本原因正是出在了这边;当我们移入鼠标时,“left”显示,可是当你想要去点击“left”的时候,势必会将鼠标移入“left”,由于“left”在动态面板“ad”的上方,覆盖了“ad”,移上“left”的时候,就是移出“ad”的时候,即触发了之前的“移出鼠标时”的交互,将“left”变为了隐藏;然后程序进入了死循环;要解决这个问题,我们只需要在“鼠标移出时”的交互中增加一个小小的条件即可;如上所说,既然移上“left”或者“right”或陷入死循环,那么我们在执行“鼠标移出时”的操作时,排除掉这个情况就可以了;对“鼠标移出时”的交互添加条件,对指针位置进行判断,当指针同时满足“未接触”“left”和“未接触”“right”时,执行移出交互,即可实现我们的目的;

5ca987d255ba6a9a34252400fd4b0f86.png

c86ec169e5206ee9f45b1a3b57add3d3.png

2b306a7c08770d93f47e1e6896080852.png

ca36ff1f371cdafdc4bf89a175854511.png

四 手动切换任意状态

需实现效果:鼠标移入广告图片区域时,停止自动轮播,停在当前的广告图片上;在下方显示控制按钮,点击对应图标,可以直接切换显示对应的广告图片;鼠标移出广告区域,恢复自动轮播效果操作步骤:1,放置一个图标,作为广告1的控制按钮,命名为ad1;

bb9be7dc7294928ff5cfaf08f780703e.png 

2,设置“ad1”的“选中”状态,单击“选中”,然后选择“填充颜色”,这里我们就选择蓝色;这样我们的“ad1”就有了2个状态,灰色的非选中状态,蓝色的选中状态;后面我们会将其与广告页的显示图片进行对应,当广告显示广告1的时候,我们的图片“ad1”显示蓝色,如果不是广告1,则显示灰色;点击确认;

74082cfa187243ec5f896b27e34c21e7.png

11ae6bf7afdd75b5fb57eca4e06ceb1f.png  

3,给图片ad1设置交互,当我们点击“ad1”的时候,需要广告也对应显示第一个图片;双击“ad1”属性的“鼠标单击时”,添加“设置面板状态”,将“ad”的状态选择为“ad1”,点击确认;

e50d87b2ddbeba6106e51a4f40ef73ec.png 

4,复制3个图片“ad1”,分别命名为“ad2”“ad3”“ad4”,重复上述的2/3两步,分别对应各自的动态面板的状态;

167c2979cb51e51cb77746512ceeb30e.png

5,需要将动态面板的4个状态和4个图片空间的选中的状态分别对应;当显示第一个广告的时候,图片“ad1”为选中状态,其他为未选中;当显示第二个广告的时候,图片“ad2”为选中状态,其他为未选中;选中动态面板“ad”,添加交换“改变状态时”

bda28b60ab5aa926178662cde34b36f7.png

6,“添加条件”当动态面板状态为“ad1”时,点确认

d235b45f48d9106eda66f513263f829a.png

7,选择“选中”,设置“ad1”状态为“true”

ecb6cfb39416699f76bba5d9ba51ad0b.png

8,选择“取消选中”,设置“ad2”“ad3”“ad4”状态为“false”;点击确认,我们就完成了第一个广告的对应交互;

ba43fa88212e8a72f35902ce14592e4d.png

9,重复步骤5-8,分别设置第二/第三/第四个广告的页面交互;

0c0e4658d2876373313f3e47b0ddfca2.png

10,此时我们点击预览,广告页下方的图片状态已各自对应,不过还有一个小瑕疵,这个效果都是在动态面板状态改变的时候才起作用;我们刚进页面的时候,没有触发动态面板改变状态的交互,4个小图片都是非选中状态;这边我们只需要将图片“ad1”的默认状态设为“选中”即可;最后将4个小图片放置在广告页下方,完整版的广告轮播功能就大功告成了。

5cb640375fc53919d3a182649be3e7e9.png

原型下载链接:https://pan.baidu.com/s/1JtejTgScRbXTWY_36nVfOQ

提取码:xz0v




推荐阅读
  • 宏基因组学经典文献重现(一):利用ggplot2进行散点图可视化分析
    宏基因组学经典文献重现(一):利用ggplot2进行散点图可视化分析 ... [详细]
  • 利用PaddleSharp模块在C#中实现图像文字识别功能测试
    PaddleSharp 是 PaddleInferenceCAPI 的 C# 封装库,适用于 Windows (x64)、NVIDIA GPU 和 Linux (Ubuntu 20.04) 等平台。本文详细介绍了如何使用 PaddleSharp 在 C# 环境中实现图像文字识别功能,并进行了全面的功能测试,验证了其在多种硬件配置下的稳定性和准确性。 ... [详细]
  • 在将 MySQL 查询转换为 LINQ 时遇到了挑战,特别是在使用 Any 方法时。尽管已成功建立了连接并执行了查询,但返回的结果集中 lambda 表达式部分为空,导致无法正确映射数据。本文探讨了这一问题的根源,并提供了几种可能的解决方案,包括调整查询逻辑和优化 LINQ 表达式的建议。 ... [详细]
  • Java 9 中 SafeVarargs 注释的使用与示例解析 ... [详细]
  • Linux磁盘管理入门指南:MBR分区格式详解与安装步骤
    在 CentOS 7.x 环境下,本文详细介绍了 MBR 分区格式的基本概念及其安装步骤。实验中使用了 SAS 和 SATA 硬盘,其中 SAS 硬盘主要用于企业级应用和服务器,而 SATA 硬盘则广泛应用于个人计算机和低端服务器。文章通过具体操作示例,帮助读者更好地理解和掌握 Linux 磁盘管理的基本技能。 ... [详细]
  • 在高清节目的高比特率传输过程中,使用外接USB硬盘进行时间平移(timeshift)时,出现了性能不足和流数据丢失的问题。通过深入研究,我们发现通过对图像组(GOP)和图像头(I-frame)的精确定位技术进行优化,可以显著提升系统的性能和稳定性。本研究提出了改进的图像组与图像头定位算法,有效减少了数据丢失,提高了流媒体传输的效率和质量。 ... [详细]
  • 在处理大规模并发请求时,传统的多线程或多进程模型往往无法有效解决性能瓶颈问题。尽管它们在处理小规模任务时能提升效率,但在高并发场景下,系统资源的过度消耗和上下文切换的开销会显著降低整体性能。相比之下,Python 的 `asyncio` 模块通过协程提供了一种轻量级且高效的并发解决方案。本文将深入解析 `asyncio` 模块的原理及其在实际应用中的优化技巧,帮助开发者更好地利用协程技术提升程序性能。 ... [详细]
  • 获取贵州省毕节市高分辨率谷歌卫星影像图
    毕节市,作为贵州省西北部的重要地级市,地处乌蒙山脉核心区域,是连接四川、云南和贵州三省的关键节点。本研究旨在获取该地区的高分辨率谷歌卫星影像图,以全面展示其独特的地理特征和城市布局。通过这些高清影像,研究人员能够更深入地分析毕节市的自然环境、城市规划及发展状况。 ... [详细]
  • 在处理分享功能时,以往通常会首先考虑使用第三方SDK,如友盟等。然而,通过实际项目经验发现,利用iOS原生的UIActivityViewController不仅可以实现高效、稳定的分享功能,还能更好地控制用户体验。本文将详细介绍如何利用iOS原生技术缓存HTML内容,并结合URL分享的最佳实践,帮助开发者在实际开发中提升应用性能和用户满意度。 ... [详细]
  • 在当前各种算法实现和开源软件包层出不穷的背景下,算法对程序员的重要性是否有所减弱?回顾历史,早期程序员必须熟练掌握算法并频繁自行编写。然而,随着技术的发展,算法逐渐成为一种“商品”,现代开发者更多依赖现成的库和商业算法解决方案。有观点认为,机器学习领域中,许多算法已经被高度封装,不再需要深入理解其背后的数学原理。然而,这种趋势也引发了关于技术深度与广度平衡的讨论,强调了基础理论知识在应对复杂问题时的不可替代性。 ... [详细]
  • 本章节从商业数据分析与挖掘的角度,深入探讨了特征工程的关键技术和应用方法,包括数据预处理、特征构建、特征提取及特征选择。详细阐述了如何系统地构建用于分析的结构化数据,为全栈开发提供了坚实的基础。 ... [详细]
  • 2019年后蚂蚁集团与拼多多面试经验详述与深度剖析
    2019年后蚂蚁集团与拼多多面试经验详述与深度剖析 ... [详细]
  • HTTP协议作为互联网通信的基础,其重要性不言而喻。相比JDK自带的URLConnection,HttpClient不仅提升了易用性和灵活性,还在性能、稳定性和安全性方面进行了显著优化。本文将深入解析HttpClient的使用方法与技巧,帮助开发者更好地掌握这一强大的工具。 ... [详细]
  • Jedis接口分类详解与应用指南
    本文详细解析了Jedis接口的分类及其应用指南,重点介绍了字符串数据类型(String)的接口功能。作为Redis中最基本的数据存储形式,字符串类型支持多种操作,如设置、获取和更新键值对等,适用于广泛的应用场景。 ... [详细]
  • 本文详细解析了 LeetCode 第 94 题——二叉树的中序遍历,并提供了基础实现方法。通过具体的示例,如输入根节点 `[1, null, 2, 3]` 返回 `[1, 3, 2]`,以及空树输入返回空列表 `[]`,帮助读者理解中序遍历的原理和实现步骤。文章还介绍了递归和迭代两种常见的遍历方法,为初学者提供了清晰的学习路径。 ... [详细]
author-avatar
王聪明2011
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有