Androidstudio实现引导页文字动画

文章目录

    • 1. 功能需求
    • 2. 代码实现过程
        • 1. 编写布局文件
        • 2. 实现引导页GuideActivity
    • 3. 总结
    • 4. 效果演示
    • 5. 关于作者其它项目视频教程介绍

1. 功能需求

在这里插入图片描述

1、引导页具有两行文字(“疫情在前”和“共克时艰”),和向上的 图标。

2、进入【引导页】后,“疫情在前”文字从屏幕最左边水平滚动到中 间;“共克时艰”文字从屏幕最右边水平滚动到中间;需要两排文字 同时到达中间。

3、向上滑动页面时,跳转到【疫情大数据报告】界面。

2. 代码实现过程

1. 编写布局文件

创建一个布局文件 activity_guide.xml,用于显示引导页的内容:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:background="@android:color/white"><TextViewandroid:id="@+id/text1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_centerHorizontal="true"android:layout_marginTop="100dp"android:text="疫情在前"android:textColor="#000099"android:textSize="34sp"android:textStyle="bold"android:visibility="invisible" /><TextViewandroid:id="@+id/text2"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_below="@id/text1"android:layout_centerHorizontal="true"android:layout_marginTop="30dp"android:text="共克时艰"android:textColor="#ff0000"android:textSize="34sp"android:textStyle="bold"android:visibility="invisible" /><ImageViewandroid:id="@+id/arrow_up"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignParentBottom="true"android:layout_centerHorizontal="true"android:layout_marginBottom="50dp"android:src="@drawable/ic_baseline_keyboard_double_arrow_up_24" />
</RelativeLayout>
2. 实现引导页GuideActivity

GuideActivity中,实现文字动画效果,并处理手势向上滑时,触发跳转到目标页面事件:

public class GuideActivity extends AppCompatActivity {private TextView text1, text2;private ImageView arrowUp;private GestureDetector gestureDetector;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_guide);//初始化控件text1 = findViewById(R.id.text1);text2 = findViewById(R.id.text2);arrowUp = findViewById(R.id.arrow_up);// 设置手势检测gestureDetector = new GestureDetector(this, new GestureListener());// 启动文字滚动动画startTextAnimation();// 启动箭头上下移动的循环动画startArrowAnimation();}private void startArrowAnimation() {// 创建上下移动的动画TranslateAnimation animateArrow = new TranslateAnimation(0, 0, 0, 50); // 从当前位置向下移动50像素animateArrow.setDuration(800); // 动画持续时间animateArrow.setRepeatCount(Animation.INFINITE); // 无限循环animateArrow.setRepeatMode(Animation.REVERSE); // 反向重复arrowUp.startAnimation(animateArrow);}private void startTextAnimation() {// 获取屏幕宽度int screenWidth = getResources().getDisplayMetrics().widthPixels;// 设置文字1的动画TranslateAnimation animateText1 = new TranslateAnimation(-screenWidth, 0, 0, 0);animateText1.setDuration(1000);animateText1.setFillAfter(true);text1.startAnimation(animateText1);text1.setVisibility(View.VISIBLE);// 设置文字2的动画TranslateAnimation animateText2 = new TranslateAnimation(screenWidth, 0, 0, 0);animateText2.setDuration(1000);animateText2.setFillAfter(true);text2.startAnimation(animateText2);text2.setVisibility(View.VISIBLE);}@Overridepublic boolean onTouchEvent(MotionEvent event) {return gestureDetector.onTouchEvent(event);}private class GestureListener extends GestureDetector.SimpleOnGestureListener {@Overridepublic boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {if (e1.getY() - e2.getY() > 50) {// 向上滑动Toast.makeText(GuideActivity.this, "这里实现跳转", Toast.LENGTH_SHORT).show();//跳转到目标页面
//                Intent intent = new Intent(GuideActivity.this, MainActivity.class);
//                startActivity(intent);
//                finish();return true;}return false;}}
}

3. 总结

  1. 动画使用TranslateAnimation来实现
  2. 手势使用GestureDetector来实现
  3. 获取屏幕宽度使用getDisplayMetrics().widthPixels

4. 效果演示

在这里插入图片描述

5. 关于作者其它项目视频教程介绍

  1. Android新闻资讯app实战:https://www.bilibili.com/video/BV1CA1vYoEad/?vd_source=984bb03f768809c7d33f20179343d8c8
  2. Androidstudio开发购物商城实战:https://www.bilibili.com/video/BV1PjHfeXE8U/?vd_source=984bb03f768809c7d33f20179343d8c8
  3. Android开发备忘录记事本实战:https://www.bilibili.com/video/BV1FJ4m1u76G?vd_source=984bb03f768809c7d33f20179343d8c8&spm_id_from=333.788.videopod.sections
  4. Androidstudio底部导航栏实现:https://www.bilibili.com/video/BV1XB4y1d7et/?spm_id_from=333.337.search-card.all.click&vd_source=984bb03f768809c7d33f20179343d8c8
  5. Android使用TabLayout+ViewPager2实现左右滑动切换:https://www.bilibili.com/video/BV1Mz4y1c7eX/?spm_id_from=333.337.search-card.all.click&vd_source=984bb03f768809c7d33f20179343d8c8

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/73103.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

在线生成自定义二维码

在线生成自定义二维码 1. 引言 二维码已成为现代互联网的重要工具&#xff0c;广泛应用于链接分享、支付、身份认证等场景。然而&#xff0c;很多在线二维码生成工具功能有限&#xff0c;难以满足个性化需求。如果你需要 自定义颜色、Logo、不同形状的二维码&#xff0c;那么…

蓝桥杯 之 第27场月赛总结

文章目录 习题1.抓猪拿国一2.蓝桥字符3.蓝桥大使4.拳头对决 习题 比赛地址 1.抓猪拿国一 十分简单的签到题 print(sum(list(range(17))))2.蓝桥字符 常见的字符匹配的问题&#xff0c;是一个二维dp的问题&#xff0c;转化为对应的动态规划求解 力扣的相似题目 可以关注灵神…

计算机的基本组合和工作原理

计算机的基本组成和工作原理可以概括为以下几个核心部分&#xff1a; 一、计算机的基本组成&#xff08;冯诺依曼体系结构&#xff09; 现代计算机基于冯诺依曼体系结构&#xff0c;主要由以下五大部件组成&#xff1a; 控制器&#xff08;Control Unit, CU&#xff09; 功能&…

[思考记录]两则:宏观视角、理想化

#宏观视角# 昨天听金老师讲解了他初步整理的大模型宏观概念关系图&#xff0c;受益不少。图上不仅是涵盖了诸多概念&#xff0c;更厉害的应该在于把概念之间的关系进行了描述&#xff0c;更直观展现了概念是如何与其他概念相互作用的。帮助从整体的角度去理解&#xff0c;以及透…

正则表达式:文本处理的瑞士军刀

正则表达式&#xff1a;文本处理的瑞士军刀 正则表达式&#xff08;Regular Expression&#xff0c;简称 Regex&#xff09;是一种用于匹配、查找和操作文本的强大工具。它通过定义一种特殊的字符串模式&#xff0c;可以快速地在文本中搜索、替换或提取符合特定规则的内容。正…

SQL 中UPDATE 和 DELETE 语句的深入理解与应用

在 SQL 中&#xff0c;UPDATE和DELETE语句是用于操作表数据的重要工具&#xff0c;它们允许我们对已存在的数据进行修改和删除。 一、UPDATE 语句 &#xff08;一&#xff09;基本语法 UPDATE语句的基本语法如下&#xff1a; UPDATE table_name SET column1 value1, colum…

C 语 言 --- 扫 雷 游 戏(初 阶 版)

C 语 言 --- 扫 雷 游 戏 初 阶 版 代 码 全 貌 与 功 能 介 绍扫雷游戏的功能说明游 戏 效 果 展 示游 戏 代 码 详 解game.htest.cgame.c 总结 &#x1f4bb;作 者 简 介&#xff1a;曾 与 你 一 样 迷 茫&#xff0c;现 以 经 验 助 你 入 门 C 语 言 &#x1f4a1;个 人 主…

车载以太网网络测试-21【传输层-DOIP协议-4】

目录 1 摘要2 DoIP entity status request/response&#xff08;0x4001、0x4002&#xff09;2.1 使用场景2.2 报文结构2.2.1 0x4001&#xff1a;DoIP entity status request2.2.2 0x4002&#xff1a;DoIP entity status response 3 Diagnostic power mode information request/…

CH347使用笔记:CH347结合STM32CubeIDE实现单片机下载与调试

目录 基于 STM32CubeIDE的 CH347 JTAG/SWD调试器使用说明1. CH347驱动安装与配置2. STM32CubeIDE调试器配置2.1 打开相关工程后&#xff0c;进行以下操作2.2 openocd.exe替换2.3 脚本添加2.4 更改调试器选择 3. 下载程序4. 使用过程中可能遇到的问题4.1 CH347未插入4.2 Openocd…

LVGL常用功能备忘

概述 本文选用LVGL 8.3版本 8.3版本实测帧率比起9版本高,多个GUI工具支持 相关链接 LVGL官网 https://lvgl.io/ LVGL 文档 https://docs.lvgl.io/8.3/ LVGL仓库 https://github.com/lvgl LVGL移植 获取源码 https://github.com/lvgl/lvgl/tree/release/v8.3 下载文件即可 文件…

k8s搭建kube-prometheus

后续再补一个k8s集群搭建的博客&#xff0c;从0开始搭建k8s集群。使用kube-prometheus非常方便&#xff0c;主要问题只在于拉取镜像。除了拉取镜像外其他时间5分钟即可。耐心等待拉取镜像。 一.kube-prometheus简介 kube-prometheus 是一个专为 Kubernetes 设计的开源监控解决…

uni-app——数据缓存API

数据缓存API 在 uni-app 开发中&#xff0c;数据缓存 API 起着重要作用&#xff0c;它能够将需要的数据保存到本地&#xff0c;同时也提供了获取本地缓存数据、移除缓存数据以及清理缓存数据的功能。在实际项目里&#xff0c;数据缓存 API 常被用于存储会员登录状态信息、购物…

突破时空边界:Java实时流处理中窗口操作与时间语义的深度重构

一、流处理范式的革命性演进 在数字化浪潮的推动下&#xff0c;数据处理范式正经历着从批量到实时的根本性转变。这种转变不仅改变了数据处理的时效性特征&#xff0c;更重新定义了时间维度在计算模型中的战略地位。Apache Flink的统计数据显示&#xff0c;现代流处理系统每秒…

【2025 深圳大学-腾讯云程序设计竞赛(热身赛)】题解

比赛链接 A. Cloud Studio的共享连接 题目大意 && Solution 给定 T T T 组长度均为 12 12 12 的字符串 s s s。 对每个 s s s&#xff0c;将其按从左到右的顺序两两分组形成 6 6 6 个 A S C I I \rm{ASCII} ASCII 码&#xff0c;对这 6 6 6 个 A S C I I \…

APScheduler - 用户指南

本文翻译整理自&#xff1a;https://apscheduler.readthedocs.io/en/3.x/userguide.html 文章目录 一、安装 APScheduler二、代码示例三、基本概念四、选择合适的 scheduler, job store(s), executor(s) and trigger(s)五、配置调度器方法 1:方法 2:方法 3: 六、启动调度器七、…

vue3:十一、主页面布局(优化页面跳转方式)

:router"true" 一、参考文章 vue3:十一、主页面布局(实现基本左侧菜单右侧内容效果)-CSDN博客 参考上述文章可知&#xff0c;页面跳转是通过在js中定义的菜单中携带的path&#xff0c;然后通过菜单的点击事件完成的跳转&#xff0c;现在可以进行优化&#xff0c;直…

每日一题--C与C++的差别

C与C的差别 1. 编程范式 C 纯 过程式编程语言&#xff0c;强调函数和结构化编程。 代码通过函数和顺序步骤组织&#xff0c;适合底层系统开发。 C 支持 多范式编程&#xff1a; 过程式编程 面向对象编程&#xff08;OOP&#xff09;&#xff08;类、继承、多态&#xff09; …

Etcd 服务搭建

&#x1f4a2;欢迎来到张胤尘的开源技术站 &#x1f4a5;开源如江河&#xff0c;汇聚众志成。代码似星辰&#xff0c;照亮行征程。开源精神长&#xff0c;传承永不忘。携手共前行&#xff0c;未来更辉煌&#x1f4a5; 文章目录 Etcd 服务搭建预编译的二进制文件安装下载 etcd 的…

玩转C#函数:参数、返回值与游戏中的攻击逻辑封装

Langchain系列文章目录 01-玩转LangChain&#xff1a;从模型调用到Prompt模板与输出解析的完整指南 02-玩转 LangChain Memory 模块&#xff1a;四种记忆类型详解及应用场景全覆盖 03-全面掌握 LangChain&#xff1a;从核心链条构建到动态任务分配的实战指南 04-玩转 LangChai…

WebRTC建立Description的通信的实际的原理

一、正确流程的核心逻辑 // 发送端正确代码示例 const senderPC new RTCPeerConnection();// 生成Offer时立即开始收集候选 ✅ senderPC.createOffer().then(offer > {await senderPC.setLocalDescription(offer); // 触发icecandidate事件sendToReceiver(offer); });// …