两个activity之间透明过渡效果和经验
来看下效果图:
大致效果解释:
1. 当用户点击登录时logo下滑一定距离
2. 下滑后旋转90时 变化图标
3. 继续旋转90度
4. 然后移动到左上角 透明度渐变到上个activity 最后销毁当前activity
术语
登录界面我们 称为 A (本质是activity) 如下图
返回界面我们 称为 B (本质是activity) 如下图
大致思路
让A界面的A的logo移动到左上角时候 我们让A界面透明到B
然后在finish() A 即可
注意: 结束A的时候(调用A的finish时候,会有一个闪屏 或者左移动的切换动画 切换到B 此时很突兀)
解决:在finish()后面自己写一个过渡动画(随便写就行 甚至可以不写任何效果,只是为了覆盖原来的默认过渡效果)
//结束A
finish();
//设置动画,第一个是进入动画第二个是出动画
overridePendingTransition(R.anim.scale_in, R.anim.scale_out);
具体代码步骤
定义一个样式 在values/style下创建一个主题样式:
<style name="activityTheme" parent="@android:style/Theme">
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowBackground">@color/transparent</item>
<item name="android:windowContentOverlay">@null</item>
</style>
代码解释
<item name="windowBackground"> 窗体的背景 </item>
<item name="android:windowContentOverlay">@null</item> 自定义Titlebar时去掉多余的阴影。
<item name="android:windowIsTranslucent">false</item> 窗体是否半透明让其A 继承此主题(在清单文件内继承)
<activity
android:name="A"
android:theme="@style/activityTheme"
/>让其A的根布局开启透明动画
假设A的布局如下<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/ll_root"
android:background="@color/all_bg"
android:orientation="vertical" />AlphaAnimation alphaAnimation = new
AlphaAnimation(1.0f,0.0f);
alphaAnimation.setDuration(2*1000);
alphaAnimation.setFillAfter(true);
//透明度 变化 alphaAnimation.setAnimationListener(new
alphaAnimation.setAnimationListener(new AnimationListener() { @Override
public void onAnimationStart(Animation animation) {
// TODO Auto-generated method stub } @Override
public void onAnimationRepeat(Animation animation) {
// TODO Auto-generated method stub } @Override
public void onAnimationEnd(Animation animation) { finish();
overridePendingTransition(R.anim.scale_in, R.anim.scale_out);
}
});
ll_root.startAnimation(alphaAnimation);
这里随便给大家看一个进入的动画源码吧
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<scale
android:fromYScale="0.0"
android:toYScale="1.0"
android:pivotY="50%"
android:fillAfter="false"
android:duration="200" />
</set>
补充
以下属性以Dialog为例来讲解:
<item name="windowBackground"> 窗体的背景 </item>
<item name="windowFrame">Dialog 是否有边框 </item>
<item name="windowNoTitle">窗体是否有标题</item>
<item name="windowFullscreen">false</item> 是否为全屏
<item name="windowOverscan">false</item> 是否要求窗体铺满整屏幕
<item name="windowIsFloating">false</item> 窗体是否浮在下层之上
<item name="windowContentOverlay">@null</item> 设置窗体内容背景
<item name="windowShowWallpaper">false</item> 是否显示壁纸
<item name="windowTitleStyle">@android :style/WindowTitle</item> 窗体的标题栏Style
<item name="windowTitleSize">25dip</item> 窗体文字大小
窗体标题栏背景
<item name="windowTitleBackgroundStyle">@android :style/WindowTitleBackground</item> 窗体切换时的动画样式
<item name="android:windowAnimationStyle">@android :style/Animation.Activity</item>
在使用输入法时窗体的适配
<item name="android:windowSoftInputMode">stateUnspecified|adjustUnspecified</item>
<item name="windowActionBar">false</item> 是否打开ActionBar
<item name="windowActionModeOverlay">false</item> 这个暂时不知道,希望大神能回答一下。
<item name="windowCloseOnTouchOutside">false</item> 是否再点击外部可关闭
<item name="android:windowIsTranslucent">false</item> 窗体是否半透明
<item name="android:backgroundDimEnabled">false</item>: 背景是否模糊显示
6. <item name="android:windowContentOverlay">@null</item> 自定义Titlebar时去掉多余的阴影。
两个activity之间透明过渡效果和经验的更多相关文章
- 如何实现两个Activity 之间如何通讯
<转> 今天主要学习了Activity 组件,在这里作一下总结 1,学习如何创建Activity 创建 Activity 要点: (1) 一个Activity就是一个类,并且这个类要继承A ...
- Android中两个Activity之间简单通信
在Android中,一个界面被称为一个activity,在两个界面之间通信,采用的是使用一个中间传话者(即Intent类)的模式,而不是直接通信. 下面演示如何实现两个activity之间的通信. 信 ...
- 两个Activity之间共享数据、互相访问的另一种方式的实现
本帖最后由 勇敢的心_ 于 2010-9-29 11:51 编辑 本人从windows编程转过来学习Android开发,一直在想如果两个Activity之间能够像C#或delphi中的Form一样,可 ...
- 【转】 android之如何在两个activity之间传递handler_利用broadcast广播机制
原文:http://blog.csdn.net/jason0539/article/details/18075293 这算是如何在两个activity之间传递handler的解决方案二了,解决方案一见 ...
- 两个 Activity 之间跳转时必然会执行的是哪几个方法?
一般情况下比如说有两个 activity,分别叫 A,B,当在 A 里面激活 B 组件的时候, A 会调用 onPause()方法,然后 B 调用 onCreate() ,onStart(), onR ...
- 两个activity之间传递数据用startActivityForResult方法。
package com.example.testactivityresquest; import android.app.Activity; import android.content.Intent ...
- 如何在两个activity之间传递bitmap
1.需求 在项目开发过程中,打印小票前需要添加打印预览功能,交易数据在打印前转成bitmap然后直接打印,为了显示这个bitmap需要将其传给显示activity. 2.解决方法 把bitmap存储为 ...
- 两个Activity之间的交互startActivityForResult的使用
代码如下: package com.zzw.teststartintentforrequest; import android.app.Activity; import android.content ...
- 两个activity之间的数据传递
1.清单文件第二个activity<activity android:name="com.example.twodatapass.ResultActivity" androi ...
随机推荐
- C#之FTP上传下载(一)
搭建FTP服务器 最近要实现这样一个功能:FTP服务器的上传和下载,搜集了一些资料,在c播客上看到昵称为"傻丫头和科技"的作者写的一篇文章写得挺好,有的地方个人觉得不是很详细,自己 ...
- Java四种线程池的学习与总结
在Java开发中,有时遇到多线程的开发时,直接使用Thread操作,对程序的性能和维护上都是一个问题,使用Java提供的线程池来操作可以很好的解决问题. 一.new Thread的弊端 执行一个异步任 ...
- [LeetCode] Trim a Binary Search Tree 修剪一棵二叉搜索树
Given a binary search tree and the lowest and highest boundaries as L and R, trim the tree so that a ...
- Python模块 - time,datetime,calendar
time模块 localtime 当前时间的struct_time形式 >>> time.localtime() time.struct_time(tm_year=2015, tm_ ...
- 实验吧_程序逻辑问题(代码审计)&上传绕过
一开始我先随便输入了几个账号名字进行测试,发现当输入的账号名为admin时会发生报错 经过测试果然是一个注入点 当拿到admin密码后发现根本没用,没办法另寻他路 审查元素时发现提示index.txt ...
- CodeForces - 724G:Xor-matic Number of the Graph
两点之间的任意路径都可表示为 随便某一条路径xor任何多个环, 然后可以用线性基来做,这样不会重复的, 另外必须一位一位的处理,xor是不满足结合律的 #include<cstdio> ...
- 洛谷P2388 阶乘之乘
题目背景 不告诉你-- 题目描述 求出1!*2!*3!*4!*--*n!的末尾有几个零 输入输出格式 输入格式: n(n<=10^8) 输出格式: 有几个零 输入输出样例 输入样例#1: 复制 ...
- 【luogu P4005 清华集训2017】小Y和地铁
题目描述 小 Y 是一个爱好旅行的 OIer.一天,她来到了一个新的城市.由于不熟悉那里的交通系统,她选择了坐地铁. 她发现每条地铁线路可以看成平面上的一条曲线,不同线路的交点处一定会设有 换乘站 . ...
- [Noi2013]矩阵游戏
来自FallDream的博客,未经允许,请勿转载,谢谢. 婷婷是个喜欢矩阵的小朋友,有一天她想用电脑生成一个巨大的n行m列的矩阵(你不用担心她如何存储).她生成的这个矩阵满足一个神奇的性质:若用F[i ...
- 从零安装Scrapy心得 | Install Python Scrapy from scratch
1. 介绍 Scrapy,是基于python的网络爬虫框架,它能从网络上爬下来信息,是data获取的一个好方式.于是想安装下看看. 进到它的官网,安装的介绍页面 https://docs.scrapy ...