TabHost中的Activity调用overridePendingTransition()方法无效-程序员宅基地

在定义的MyActivity中,继承的是TabActivity,添加了几个Activity,比如说A、B、C,采用了TabHost管理切换不同的主页面。

现在A如果展示的是一个列表,点击每一项,可以进入A的子页面,这时候希望具有自定义的动画效果,但是发现仅仅使用overridePendingTransition()却没有效果。

网上查阅了些资料,发现这个可以用,于是对其稍微整理了下,没有深入分析,贴出来仅作参考。

原文链接:http://blog.sina.com.cn/u/2377683267

首先,要说的是ActivityA到ActivityB的切换这个相对简单,只要overridePendingTransition(In,out)。这里不就说了。但是这里要说名的ActivityA不能TABHost里面的一个。因为Tabhost里面有自己的Activity其实还没有跳出Tabhost生命。这个可以Log,Tabhost生命周期试试就知道了。其实Tabhost里面嵌套的Activity都在生命周期都在Tabhost里面。这样的话,Tabhost里面的Activity跳转到其他(非Tabhost里面的Activity)时,调用overridePendingTransition(In,out)。其跳转效果还是默认的,这么句代码的效果是不会出现的。

你点击里面的ListView的一个子项。跳出Tabhost你在点击事件里面调用overridePendingTransition(In,out)。是没有用的。

现在解决这个问题:因为Tabhost也有自己默认的overridePendingTransition()方法,我解决的方法是继承TabActivity的Activity的onPause()方法里调用overridePendingTransition(In,out)。In,out这个两个参数放在一个类里面。 这样的话,就可以在要转的地方调用修改这个两个参数的方法。
public class AnimationUtil {

	/**
	 * anim中的布局ID
	 */
	public static int ANIM_IN = 0;
	/**
	 * anim中的布局ID
	 */
	public static int ANIM_OUT = 0;

	/**
	 * 通过动画xml文件的id设置需要使用的动画布局文件
	 * 
	 * @param layoutIn
	 * @param layoutOut
	 */
	public static void setLayout(int layoutIn, int layoutOut) {
		ANIM_IN = layoutIn;
		ANIM_OUT = layoutOut;
	}

	/**
	 * 设置id为0
	 */
	public static void clear() {
		ANIM_IN = 0;
		ANIM_OUT = 0;
	}
}

跳转时的代码:

Intent intent = new Intent(InformActivity.this, InformItemActivity.class);
AnimationUtil.setLayout(R.anim.zoom_enter,R.anim.zoom_exit); 
startActivity(intent);

然后在继承了TabActivity的类中,重写onPause()方法:

@Override
	protected void onPause() {
		if (AnimationUtil.ANIM_IN != 0 && AnimationUtil.ANIM_OUT != 0) {
			super.overridePendingTransition(AnimationUtil.ANIM_IN,
					AnimationUtil.ANIM_OUT);
			AnimationUtil.clear();
		}
		super.onPause();
	}

转载于:https://my.oschina.net/xsjayz/blog/100150

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_34270865/article/details/91869748

智能推荐

使用scp从远程服务器下载文件到本地-程序员宅基地

【下载远程文件到本地】scp -P 6008 [email protected]:/usr/data/1.zip /Users/abc/www【上传本地文件到远程】scp-P 6008 /Users/abc/www [email protected]:/usr/data/1.zip转载于:https://www.cnblogs.com/rxbook/p/6479..._scp 远程服务器下载到本机

噩梦5Tilt Shift (Lens Blur) 倾斜移位(镜头模糊)-程序员宅基地

using UnityEngine;using System.Collections;namespace CompleteProject{ public class CameraFollow : MonoBehaviour { public Transform target; // The position that that camera will be following. public fl

SQL Server 2014各版本区别-程序员宅基地

SQL Server 2014 各个版本支持的功能 http://msdn.microsoft.com/zh-cn/library/cc645993(v=sql.120).aspx转换箱规模限制功能名称EnterpriseBusiness IntelligenceStandar

Oracle OCP笔记(10)警报日志与跟踪文件_sid_ora_spid.trc-程序员宅基地

Oracle OCP笔记(10)警报日志与跟踪文件一.关于警报日志和跟踪文件 警报日志中记录关键操作包括: ·所有启动和关闭命令,包括中间命令,如alter database mount ·实例的所有内部错误(ORA-600错误,只能报告给Oracle Support解决) ·任何检测到的数据文件块损坏情况 ·任何已经发生的记录锁定死锁_sid_ora_spid.trc

一个父进程创建多个子进程_父进程如何判断自己创建了多少个子进程-程序员宅基地

循环方式#include <stdio.h>#include <unistd.h>#include <stdlib.h>#include <sys/wait.h>#define child 10int main(int argc, char const *argv[]){ pid_t pid; for (in..._父进程如何判断自己创建了多少个子进程

cmd命令行-svn externals的使用方法 (亲测有效)_svn propset svn:externals-程序员宅基地

工作中需要大量源代码,分散存储在不同组的版本库,在代码解析的时候需要对这些代码收集到一个库中。如果一个个checkout并存储到新库中,费时费资源,svn的external就起作用了。过命令的方式创建,有两种方式:1.指令直接设定svn propset svn:externals "https://subversion.assembla.com/svn/customlocations-greylink/trunk/Local Data" .2.文件批量设定svn pro..._svn propset svn:externals

随便推点

科技发展与伦理道德-程序员宅基地

美国哈佛大学教授迈克尔·桑德尔的公开课名噪一时,他善于讲述一些极端的故事,将故事中的伦理矛盾尖锐化,从而促进人们的思考。他在新书《反对完美:科技与人性的正义之战》中,举了这样一个例子:一对聋人伴侣认为耳聋是一种文化认同,从而找到家族五代都是聋人的精子捐献者,最终如愿产下聋儿。这种极端的事例很难在生活中遇到,但他随后列举在基因科技发展后,我们确实会遇到的问题,比如增加身高、记忆力、选择婴儿的性别。在体

HoloLens1开发(二):结合Vuforia开发-程序员宅基地

前言最近有新成员加入本团队,为了方便其开发HoloLens1,将不定时更新1代开发相关内容。软件需求:1.VS2017,安装Win10 SDK 17134或者17763;安装可参考博文.2.Unity2017,安装UWP平台;以HoloLens结合Vuforia在二维码上显示一个立方体Cube,并实现点击变色为例。一、Vuforia1.注册及获取LicenseKey1.目前世界上主流的AR SDK提供厂商,国外的主要是Vuforia、Metaio,国内的主要是EasyAR。2.进入Vuf

Swagger 导出 postman / Swagger 导出word文档_postman 导出swagger-程序员宅基地

参考文章https://blog.csdn.net/weixin_39770927/article/details/107040279下载 github中的项目 GitHub 地址:https://github.com/JMCuixy/swagger2word下载到本地后,导入maven 修改application.yml中的swagger 路径,把之前再swagger管理页面的路径,粘贴此处启动springboot项目,访问下面路径http://127.0.0.1:8080/toWord_postman 导出swagger

计算机桌面怎么自定义,电脑怎么换壁纸自定义-程序员宅基地

桌面壁纸吗?鼠标右键点击桌面选属于再选桌面再换上你想要的图片,这个那么简单!桌面设置就行了呀,点击后再设置,系统设置里面哟的,可以自己选择喜欢的壁纸直接设置成桌面,右键点击桌面,在设置里面找www.how234.com防采集。以Win10系统为例Slide Show 是 Microsoft 出品的一个桌面增强工具方法一在电脑桌面空白处点击鼠标右键,选择【个性化】设置,点..._自定义办公桌面壁纸

Hibernate中的用hql语句完成查询,以及hibernate当中的三种缓存方式的不同和用法_hibernate session.createquery(hql); 缓存-程序员宅基地

//查询持久化数据Users users = session.get(Users.class, 2);System.out.println(users.getUname());//查询users表中的所有数据String hql="select u from Users u"; Query query = session.createQuery(hql); List<Users..._hibernate session.createquery(hql); 缓存

Spring Boot(十 二)-- @ControllerAdvice注解的使用-程序员宅基地

   @ControllerAdvice 这个注解乍一看,咋这么有点熟悉,和 @Controller 咋这么像啊?没错,@ControllerAdvice 这个注解就是一个增强版的 @Controller 。那么我们今天要了解的这个注解有什么用呢?功能如下:1、全局异常处理2、全局数据绑定3、全局数据预处理注意: 这个注解并不是 Spring Boot 中特有的,这个注解是 Sp..._controlleradvice