Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >4-AI--Activity跳转动画

4-AI--Activity跳转动画

作者头像
张风捷特烈
发布于 2018-09-26 08:35:42
发布于 2018-09-26 08:35:42
71600
代码可运行
举报
运行总次数:0
代码可运行
零、前言

1.打开RedActivity点击屏幕进入BlueActivity,此时RedActivity左移出,BlueActivity左移入 2.点击返回按钮BlueActivity右移出,RedActivity右移入

默认跳转模式:

Activity默认跳转动画.gif

本案例效果:

Activity跳转动画.gif

一、测试类
1.红色Activity:
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class RedActivity extends AppCompatActivity {

    @BindView(R.id.root)
    ConstraintLayout mRoot;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_color);
        ButterKnife.bind(this);
        mRoot.setBackgroundColor(Color.RED);
    }

    @OnClick(R.id.root)
    public void onViewClicked() {
        startActivity(new Intent(this, BlueActivity.class));
        overridePendingTransition(R.anim.open_enter_t,R.anim.open_exit_t);
    }
}
2.蓝色Activity
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class BlueActivity extends AppCompatActivity {

    @BindView(R.id.root)
    ConstraintLayout mRoot;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_color);
        ButterKnife.bind(this);
        mRoot.setBackgroundColor(Color.BLUE);
    }

    @OnClick(R.id.root)
    public void onViewClicked() {
        startActivity(new Intent(this, RedActivity.class));
    }

    @Override
    public void onBackPressed() {
        super.onBackPressed();
        overridePendingTransition(R.anim.close_enter_t, R.anim.close_exit_t);
    }
}

Activity跳转动画.png


二、动画
1.左移出:anim/open_exit_t.xml
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
     android:interpolator="@android:anim/decelerate_interpolator">
    <!--左移出-->
    <translate
        android:duration="500"
        android:fromXDelta="0%p"
        android:toXDelta="-100%p"/>
</set>
2.左移入:anim/open_enter_t.xml
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
     android:interpolator="@android:anim/decelerate_interpolator">
    <!--左移入-->
    <translate
        android:duration="500"
        android:fromXDelta="100%p"
        android:toXDelta="0%p"/>
</set>
3.右移出:anim/close_exit_t.xml
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
     android:interpolator="@android:anim/decelerate_interpolator">
    <!--右移出-->
    <translate
        android:duration="500"
        android:fromXDelta="0%p"
        android:toXDelta="100%p"/>
</set>
4.右移入:anim/close_enter_t.xml
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
     android:interpolator="@android:anim/decelerate_interpolator">
    <!--右移入-->
    <translate
        android:duration="500"
        android:fromXDelta="-100%p"
        android:toXDelta="0%p"/>
</set>
附录、布局文件:layout/activity_color.xml
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
    android:id="@+id/root"
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".animation.RedActivity">
</android.support.constraint.ConstraintLayout>

三、利用样式来改变Activity跳转动画
1.定义样式:values/styles.xml
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    <style name="TranAnim_Activity"
           parent="@android:style/Animation.Activity">
        <item name="android:activityOpenEnterAnimation">@anim/open_enter_t</item>
        <item name="android:activityOpenExitAnimation">@anim/open_exit_t</item>
        <item name="android:activityCloseEnterAnimation">@anim/close_enter_t</item>
        <item name="android:activityCloseExitAnimation">@anim/close_exit_t</item>
    </style>

    <style name="AppThemeTranAnim" parent="Theme.AppCompat.Light.NoActionBar">
        <item name="android:windowNoTitle">true</item>
        <item name="android:windowAnimationStyle">@style/TranAnim_Activity
        </item>
    </style>
2.使用样式:app/src/main/AndroidManifest.xml
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<activity android:name=".animation.RedActivity"
          android:theme="@style/AppThemeTranAnim">
    <intent-filter>
        <action android:name="android.intent.action.MAIN"/>
        <category android:name="android.intent.category.LAUNCHER"/>
    </intent-filter>
</activity>
<activity android:name=".animation.BlueActivity"
    android:theme="@style/AppThemeTranAnim">
</activity>

本文由张风捷特烈原创,转载请注明 更多安卓技术欢迎访问:https://www.jianshu.com/c/004f3fe34c94 张风捷特烈个人网站,编程笔记请访问:http://www.toly1994.com

你的喜欢与支持将是我最大的动力

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018.08.24 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
SLAM | 激光SLAM中开源算法对比
好久没有更新SLAM系列的文章了,前面我们讲到了激光SLAM技术。基于激光雷达的同时定位与地图构建技术(simultaneous localization and mapping, SLAM)以其准确测量障碍点的角度与距离、 无须预先布置场景、可融合多传感器、 在光线较差环境工作、 能够生成便于导航的环境地图等优势,成为目前定位方案中不可或缺的新技术。
AI算法修炼营
2020/05/08
3.6K0
从零开始搭二维激光SLAM — 前言[通俗易懂]
从最开始接触SLAM已经3年了,从二维激光SLAM到三维激光SLAM,再到视觉SLAM,都有一些接触,现将简单梳理一下SLAM的各个模块的功能以及实现方式,为本系列文章起到个总领作用。
全栈程序员站长
2022/09/23
1.1K0
从零开始搭二维激光SLAM — 前言[通俗易懂]
​SLAM | 融合激光雷达与图像数据,通过3D高斯溅射实现室内精确定位!
光学传感器外方位估计以及同时重建三维(3D)环境的问题在计算机视觉领域中通常被称为SfM(Structure from Motion),在机器人学中被称为SLAM(Simultaneous Localisation and Mapping)[1]。
AIGC 先锋科技
2024/07/08
2.6K0
​SLAM  |   融合激光雷达与图像数据,通过3D高斯溅射实现室内精确定位!
激光slam理论与实践_SLAM算法
  基于图优化方法的激光SLAM有cartographer,基于滤波器的方法有GMapping。
全栈程序员站长
2022/09/23
1.5K0
激光slam理论与实践_SLAM算法
SLAM学习笔记(十九)开源3D激光SLAM总结大全——Cartographer3D,LOAM,Lego-LOAM,LIO-SAM,LVI-SAM,Livox-LOAM的原理解析及区别
本文为我在浙江省北大信研院-智能计算中心-情感智能机器人实验室-科技委员会所做的一个分享汇报,现在我把它搬运到博客中。
全栈程序员站长
2022/09/25
7.1K0
SLAM学习笔记(十九)开源3D激光SLAM总结大全——Cartographer3D,LOAM,Lego-LOAM,LIO-SAM,LVI-SAM,Livox-LOAM的原理解析及区别
基于3D激光雷达的SLAM算法研究现状与发展趋势
SLAM算法是移动机器人实现自主移动的关键环节。激光雷达(LiDAR)具有测距精度高、不易受外部干扰和地图构建直观方便等优点,广泛应用于大型复杂室内外场景地图的构建。随着3D激光器的应用与普及,国内外学者围绕基于3D激光雷达的SLAM算法的研究已取得丰硕的成果。
一点人工一点智能
2023/08/25
3.8K0
基于3D激光雷达的SLAM算法研究现状与发展趋势
《智能驾驶之激光雷达算法详解》激光雷达 +IMU组合定位
激光里程计算法,仅凭激光点云估算激光雷达的运动状态,其精度显著受激光点云质量波动影响。IMU(惯性测量单元),作为广泛应用于机器人及汽车领域的传感器,集成了陀螺仪与加速度计,能精确捕捉并输出被测物体的角速度与加速度信息,进而通过积分运算推算出其在一定时间内的姿态与位置变化。然而,IMU在实际运作中易受多种干扰因素影响,尤其是加速度计的误差会随时间累积,导致导航精度下降。因此,常需借助外部信息融合策略,以强化IMU的定位精度。鉴于激光里程计依赖低频的环境感知进行定位,而IMU则通过高频的自身运动状态积分进行位姿估计,两者在功能上存在天然的互补性。众多学者因此致力于将激光里程计与IMU相结合,以实现高精度、实时性的定位。根据融合方式与原理的不同,这一领域的研究被细化为LiDAR+IMU松耦合与紧耦合两大方向。 激光雷达与IMU的松耦合定位策略,巧妙融合了激光里程计与IMU航位推算技术。两者独立运作,依托卡尔曼滤波、粒子滤波等先进框架,实现精准信息融合,最终精确输出定位结果。2019年,国助科技BXue团队创新性地提出IMU-AHFLO算法,该算法凭借点线特征或点云分布特征匹配的激光里程计,捕捉车辆在两帧点云间的位姿变化,随后,高频IMU数据携手车辆运动学方程,预测上述时刻的位姿变迁,最终,卡尔曼滤波器精准估算车辆新姿态。南昌大学的廖杰华则另辟蹊径,将LOAM算法与自适应粒子滤波技术巧妙结合,专为无人物流小车打造室内定位新方案。而Google的Cartographer算法,更是以分层优化为核心,前端运用无迹卡尔曼滤波器实现2D激光雷达与IMU数据的无缝融合,后端则聚焦于子地图构建与优化,辅以分支定界法,显著加速闭环检测,确保定位系统的高效与精准。 激光雷达与IMU的紧耦合定位技术,相较于松耦合方式,显著减少了信息损失。这一创新方法将激光雷达与IMU数据融合于同一位姿优化问题中,实现了更为精准的位姿估计。紧耦合定位策略可细化为基于滤波器与平滑优化两大流派。基于滤波器的方法,在状态更新中无缝整合多源传感器数据,如H. Sebastian等先驱者利用自适应扩展卡尔曼滤波器,成功将3D激光雷达与GPS/INS融合,赋能无人小车室外精准导航。然而,滤波器固有的线性化近似与递推机制,随时间推移易累积误差,影响长期定位精度。为克服此局限,香港科技大学机器人与多感知实验室的C. Qin团队在ICRA 2020上隆重推出LINS算法,该算法采用迭代误差状态卡尔曼滤波器,深度融合激光雷达与IMU数据,通过持续校正系统状态误差,实现了车辆实时、高精度的定位与建图,为紧耦合定位技术树立了新的里程碑。
用户11339509
2024/11/11
6820
【SLAM】激光SLAM简介与常用框架
SLAM(同步定位与地图构建)是一种机器人感知技术,用于在未知环境中同时确定机器人的位置并构建地图。
DevFrank
2024/07/24
1.4K0
八种常用激光雷达和视觉SLAM算法的评估与比较
文章:Evaluation and comparison of eight popular Lidar and Visual SLAM algorithms
点云PCL博主
2022/12/27
3.8K0
八种常用激光雷达和视觉SLAM算法的评估与比较
立体视觉+惯导+激光雷达SLAM系统
标题:Stereo Visual Inertial LiDAR Simultaneous Localization and Mapping
点云PCL博主
2021/01/05
9450
基于3D激光雷达的SLAM算法研究现状与发展趋势
SLAM算法是移动机器人实现自主移动的关键环节。激光雷达(LiDAR)具有测距精度高、不易受外部干扰和地图构建直观方便等优点,广泛应用于大型复杂室内外场景地图的构建。随着3D激光器的应用与普及,国内外学者围绕基于3D激光雷达的SLAM算法的研究已取得丰硕的成果。
一点人工一点智能
2023/04/26
1.9K0
基于3D激光雷达的SLAM算法研究现状与发展趋势
漫谈 SLAM 技术(上)
DancingWind
2017/09/11
11.8K0
漫谈 SLAM 技术(上)
基于全局特征描述子的激光SLAM回环检测方法
同步定位和建图(SLAM)是实现机器人在未知环境下的定位和移动的重要技术方法[1]。定位精度是井下巡检的核心指标,高精度的定位算法是巡检过程中导航和避障的基础。但井下环境复杂,具有低照度、弱纹理、图像特征难以识别的特点[2],给基于视觉的SLAM算法带来了极大的困难。而激光SLAM算法测量距离远、精度高,利用环境的结构特征进行定位[3],在井下环境中更具应用前景[4-5]。
一点人工一点智能
2023/08/25
8160
基于全局特征描述子的激光SLAM回环检测方法
F-LOAM:基于激光雷达的快速里程计和建图
文章:F-LOAM : Fast LiDAR Odometry and Mapping
点云PCL博主
2022/02/10
1.5K0
F-LOAM:基于激光雷达的快速里程计和建图
激光slam综述_SLAM是什么
slam (Simultaneous Localization and Mapping)叫即时定位与建图,它主要的作用是让机器人在未知的环境中,完成定位(Localization),建图(Mapping)和路径规划(Navigation)。
全栈程序员站长
2022/09/23
1.5K0
激光slam综述_SLAM是什么
基于激光雷达和单目视觉融合的SLAM和三维语义重建
文章:SLAM and 3D Semantic Reconstruction Based on the Fusion of Lidar and Monocular Vision
点云PCL博主
2023/08/21
1.8K0
基于激光雷达和单目视觉融合的SLAM和三维语义重建
地下环境 | 九种3D Lidar-SLAM算法评估
当机器人处在照明条件不足且无法使用GPS的地下(SubT)环境中,其自主导航是一项极具挑战性的任务,这也促进了姿势估计和建图算法的研究。
一点人工一点智能
2023/04/07
1.5K0
地下环境 | 九种3D Lidar-SLAM算法评估
KISS-SLAM:一种具备增强泛化能力的轻量级鲁棒精确3D激光雷达SLAM系统
文章:KISS-SLAM: A Simple, Robust, and Accurate 3D LiDAR SLAM System With Enhanced Generalization Capabilities
点云PCL博主
2025/06/08
1350
KISS-SLAM:一种具备增强泛化能力的轻量级鲁棒精确3D激光雷达SLAM系统
激光slam与视觉slam优缺点_摄影光学与镜头
Slam:同步定位与建图,就是在定位的同时,建立环境地图。 主要思路是根据运动学模型计算位姿,并通过传感得到的环境信息,对估计位姿调整优化,从而得到准确位姿,根据定位及感知数据绘制地图。 下图为slam主流框架:
全栈程序员站长
2022/09/23
3.6K0
激光slam与视觉slam优缺点_摄影光学与镜头
基于激光雷达强度信息的实时SLAM方案
文章:Real-Time Simultaneous Localization and Mapping with LiDAR intensity
点云PCL博主
2023/08/21
7250
基于激光雷达强度信息的实时SLAM方案
推荐阅读
相关推荐
SLAM | 激光SLAM中开源算法对比
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验