两个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 ...
随机推荐
- React-Native(四):React Native之View学习
React Native实现以下布局效果:携html5(http://m.ctrip.com/html5/) 基于HelloWord修改项目代码: /** * Sample React Native ...
- jacascript 事件流
前言:这是笔者学习之后自己的理解与整理.如果有错误或者疑问的地方,请大家指正,我会持续更新! 事件流 当浏览器发展到第四代时(IE4及Netscape4),浏览器开发团队遇到了一个很有意思的问题:页面 ...
- C#多线程+委托+匿名方法+Lambda表达式
线程 下面是百度写的: 定义英文:Thread每个正在系统上运行的程序都是一个进程.每个进程包含一到多个线程.进程也可能是整个程序或者是部分程序的动态执行.线程是一组指令的集合,或者是程序的特殊段,它 ...
- Spring Cloud学习笔记-009
API网关服务:Spring Cloud Zuul API网关是一个更为智能的应用服务器,它的定义类似于面向对象设计模式中的Façade模式,它的存在就像是整个微服务架构系统的门面一样,所有的外部客户 ...
- Win10 VS2012 无法注册IIS4.0 解决方案
死活注册不上,度娘也找了,最终找到只要打个补丁就行. 安装: Microsoft Visual Studio 2012 更新 (KB3002339) 下载:http://www.microsoft.c ...
- Java 线程池原理分析
1.简介 线程池可以简单看做是一组线程的集合,通过使用线程池,我们可以方便的复用线程,避免了频繁创建和销毁线程所带来的开销.在应用上,线程池可应用在后端相关服务中.比如 Web 服务器,数据库服务器等 ...
- 用ECMAScript4 ( ActionScript3) 实现Unity的热更新 -- Demo分析
如何创建工程 下载最新的Unity发布插件包. 打开Unity,新建一个项目 将插件包导入 在菜单中点击ASRuntime/Create ActionScript3 FlashDevelop HotF ...
- [LeetCode] Minimum Absolute Difference in BST 二叉搜索树的最小绝对差
Given a binary search tree with non-negative values, find the minimum absolute difference between va ...
- error and solve
1.缺少对应的jar包 出错信息: Multiple markers at this line - The type org.springframework.beans.factory.Aware c ...
- TopCoder SRM 566 Div 1 - Problem 1000 FencingPenguins
传送门:https://284914869.github.io/AEoj/566.html 题目简述: 平面上有中心在原点,一个点在(r,0)处的正n边形的n个顶点.平面上还有m个企鹅,每个企鹅有一个 ...