2.x版本之后activity之间的动画切换终于有了系统自带的方法overridePendingTransition,可在公司的项目都要求要支持1.5之后的所有版本,去弄个反射来支持高版本的动画效果,麻烦而且没有照顾到低版本手机用户. 想了个变通的方法拿出来分享下.
基本的思路是让activity全透明, 让activity顶层的View充满冒充activity,需要切换activity的时候,调用view.startAnimation,对动画设置监听,动画结束的时候去执行切换.
让activity全透明
<!-- 透明activity样式 -->
<style name="Transparent">
<item name="android:windowBackground">@color/transparent_background</item>
<item name="android:windowNoTitle">true</item>
<item name="android:windowIsTranslucent">true</item>
</style>
<activity android:name=".LoadingActivity"
android:label="@string/app_name"
android:theme="@style/Transparent"
android:screenOrientation="portrait">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
xml布局, 我这里是让ImageView冒充activity样式的
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<ImageView android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/loading"
android:background="@drawable/loading"
android:scaleType="fitStart"/>
</FrameLayout>
主要部分代码, 我做的是退出时候的动画效果,切换原理一样.
private void exit(){
Handler handleer = new Handler();
handleer.postDelayed(new Runnable() {
@Override
public void run() {
ImageView img = (ImageView) findViewById(R.id.loading);
Animation anim = AnimationUtils.loadAnimation(LoadingActivity.this, R.anim.zoomout);
AnimationListener listener = new AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
}
@Override
public void onAnimationRepeat(Animation animation) {
}
@Override
public void onAnimationEnd(Animation animation) {
finish();
// Intent intent = new (curActivity.this, xxxxActivity.class);
// startActivity(intent);
}
};
anim.setAnimationListener(listener);
img.startAnimation(anim);
}
}, 500);
}
分享到:
相关推荐
3. 过渡动画:在Android 5.0(API Level 21)中引入,过渡动画系统专门用于在布局更改(如Activity切换)时提供平滑的过渡效果。Transition类和TransitionManager可以帮助开发者轻松实现这一目标,比如Fade、Slide、...
过渡动画主要应用于Activity和Fragment的切换,Android 5.0(API level 21)引入了Transition API,使得在不同布局间切换时能创建平滑的过渡效果。主要类有: 1. Transition:过渡动画的基础类,可以定制动画行为。...
`PopupWindow` 是一个可以在屏幕任意位置显示的窗口,它不依附于任何Activity,但可以与Activity中的某个视图关联。`PopupWindow` 的核心属性包括宽度、高度、背景、动画效果以及是否允许触摸外部关闭等。 在微信右...
4. **动画效果**:可能会包含开闭动画,增强用户体验。 5. **回调机制**:提供回调接口,使得在用户与Dialog交互后,能及时通知到Activity或Fragment,执行相应的业务逻辑。 6. **适配性**:通用Dialog通常会考虑...
4. **动画效果**:为了增强用户体验,工具类可能包含显示和消失的动画效果,如淡入淡出、滑动等。 5. **适配自定义布局**:允许开发者传入任意布局资源ID,工具类负责加载并设置为Dialog的内容视图,完全适应任何...
`PopupWindow`类提供了创建和展示弹窗的功能,它可以在任意视图上方显示,可以设置大小、背景、动画等属性。通常,我们会将`PopupWindow`与一个布局关联,该布局包含弹窗中的所有UI元素。 封装`PopupWindow`的第一...
自定义View允许开发者根据自己的设计需求创建独特的视图元素,如绘制复杂的图形、实现特殊动画效果或者提供更复杂的交互方式。这通常涉及到对View类的继承,重写onDraw()方法进行绘制,以及可能需要处理的触摸事件等...
2. `PullToRefreshLayout`:更通用的布局,可容纳任意的子视图,如`ScrollView`或`GridView`。 三、集成与使用 要将`PullToRefresh`库集成到项目中,开发者需要: 1. 添加依赖:将库的源代码克隆到本地或者通过...
----------------------------------- Android 编程基础 1 封面----------------------------------- Android 编程基础 2 开放手机联盟 --Open --Open --Open --Open Handset Handset Handset Handset Alliance ...
PopupWindow在Android开发中是一个非常实用的组件,它允许开发者创建弹出式窗口,可以悬浮在Activity之上,常用于实现下拉菜单、提示信息、快捷操作等效果。本篇文章将详细探讨如何对PopupWindow进行封装,使其能...
CruiseYoung提供的带有详细书签的电子书籍目录 ... 该资料是《Android高级编程》的源代码 ...本书的内容和示例提供了如何使用当前SDK来编写优秀的移动程序所需要的基础知识,同时也保持了快速适应未来版本...