`
binggo2011
  • 浏览: 18643 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

activity动画效果 任意版本通用

阅读更多
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、...

    Android动画

    过渡动画主要应用于Activity和Fragment的切换,Android 5.0(API level 21)引入了Transition API,使得在不同布局间切换时能创建平滑的过渡效果。主要类有: 1. Transition:过渡动画的基础类,可以定制动画行为。...

    android自定义popupwindow仿微信右上角弹出菜单效果

    `PopupWindow` 是一个可以在屏幕任意位置显示的窗口,它不依附于任何Activity,但可以与Activity中的某个视图关联。`PopupWindow` 的核心属性包括宽度、高度、背景、动画效果以及是否允许触摸外部关闭等。 在微信右...

    通用Dialog

    4. **动画效果**:可能会包含开闭动画,增强用户体验。 5. **回调机制**:提供回调接口,使得在用户与Dialog交互后,能及时通知到Activity或Fragment,执行相应的业务逻辑。 6. **适配性**:通用Dialog通常会考虑...

    通用的Dialog工具类

    4. **动画效果**:为了增强用户体验,工具类可能包含显示和消失的动画效果,如淡入淡出、滑动等。 5. **适配自定义布局**:允许开发者传入任意布局资源ID,工具类负责加载并设置为Dialog的内容视图,完全适应任何...

    android自定义通用PopupWindow

    `PopupWindow`类提供了创建和展示弹窗的功能,它可以在任意视图上方显示,可以设置大小、背景、动画等属性。通常,我们会将`PopupWindow`与一个布局关联,该布局包含弹窗中的所有UI元素。 封装`PopupWindow`的第一...

    base_ui.rar

    自定义View允许开发者根据自己的设计需求创建独特的视图元素,如绘制复杂的图形、实现特殊动画效果或者提供更复杂的交互方式。这通常涉及到对View类的继承,重写onDraw()方法进行绘制,以及可能需要处理的触摸事件等...

    仿新浪微博下拉刷新android实例

    2. `PullToRefreshLayout`:更通用的布局,可容纳任意的子视图,如`ScrollView`或`GridView`。 三、集成与使用 要将`PullToRefresh`库集成到项目中,开发者需要: 1. 添加依赖:将库的源代码克隆到本地或者通过...

    新版Android开发教程.rar

    ----------------------------------- Android 编程基础 1 封面----------------------------------- Android 编程基础 2 开放手机联盟 --Open --Open --Open --Open Handset Handset Handset Handset Alliance ...

    PopupWindow封装-view上方显示和下方显示

    PopupWindow在Android开发中是一个非常实用的组件,它允许开发者创建弹出式窗口,可以悬浮在Activity之上,常用于实现下拉菜单、提示信息、快捷操作等效果。本篇文章将详细探讨如何对PopupWindow进行封装,使其能...

    Android高级编程--源代码

    CruiseYoung提供的带有详细书签的电子书籍目录 ... 该资料是《Android高级编程》的源代码 ...本书的内容和示例提供了如何使用当前SDK来编写优秀的移动程序所需要的基础知识,同时也保持了快速适应未来版本...

Global site tag (gtag.js) - Google Analytics