Android 动画效果(三):overridePendingTransition(界面切换动画)与LayoutTransition(布局动画)
2015-09-20 12:39
781 查看
一、overridePendingTransition
我们之前讲的动画都是针对View的动画,其实在我们开启一个Activity的时候,我们也可以产生动画效果,动画效果可以直接使用我们在 Android 动画效果(一): 四种动画基础(Alpha、Translate、Rotate、Scale) 中所介绍的,编写xml文件,通过overridePendingTransition来为我们Activity的载入添加动画效果。下面来看下它的具体使用步骤。使用步骤
1、在res下创建anim(该名称固定)文件,编写xml动画(需要编写进入动画,与退出动画)2、开启activity,通过overridePendingTransition(enterAnim, exitAnim) 添加进出动画。
进入动画:
[code]<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android"> <scale android:fromXScale="0" android:toXScale="1" android:fromYScale="0" android:toYScale="1" android:duration="2000" /> <alpha android:fromAlpha="0" android:toAlpha="1" /> </set>
退出动画:
[code]<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android"> <scale android:fromXScale="1" android:toXScale="0" android:fromYScale="1" android:toYScale="0" android:duration="2000" /> <alpha android:fromAlpha="1" android:toAlpha="0.2" android:interpolator="@android:anim/overshoot_interpolator" /> </set>
开启activity,设置动画:
[code] Intent intent=new Intent(getApplicationContext(),MainActivity.class); startActivity(intent); //设置动画 overridePendingTransition(R.anim.activity_in,R.anim.activity_out);
二、布局动画(两种方式)
(1)LayoutTransition
使用步骤:编写xml动画
创建LayoutTransition对象,并设置动画
[code]LayoutTransition transition=new LayoutTransition(); transition.getDuration(2000); transition.setAnimator(LayoutTransition.APPEARING, AnimatorInflater.loadAnimator(getApplicationContext(), R.animator.animator_scale));
将动画效果添加到布局中
[code]mlinearlayout.setLayoutTransition(transition);
1、布局(只有一个Button按钮)
2、动画(放缩动画)
(这里使用了属性动画ObjectAnimator【对属相动画的使用不了解的参看 Android 属性动画(二):ObjectAnimator与ValueAnimator 】,也可以使用四种基础的动画进行编写)
[code]<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" android:ordering="together"> <objectAnimator android:duration="1000" android:propertyName="scaleX" android:valueFrom="0.5" android:valueTo="1.0" ></objectAnimator> <objectAnimator android:duration="1000" android:propertyName="scaleY" android:valueFrom="0.5" android:valueTo="1" > </objectAnimator> </set>
3、、MainActivity
[code]public class Mainactivity_layout extends Activity{ private Button mbtn_add; //用于向linearlayout中动态添加按钮 private LinearLayout mlinearlayout; private int count; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.activity_layoutani); mbtn_add=(Button) findViewById(R.id.button_add); mlinearlayout=(LinearLayout) findViewById(R.id.linearlayout); //创建LayoutTransition LayoutTransition transition=new LayoutTransition(); //设置动画时间 transition.getDuration(2000); //第一个参数可以有多种:APPEARING:表示设置进入时动画 //CHANGE_APPEARING、CHANGE_DISAPPEARING、CHANGING、DISAPPEARING //第二个参数是设置的动画,由于使用的是属性动画 //因此通过AnimatorInflater.loadAnimator获得 transition.setAnimator(LayoutTransition.APPEARING, AnimatorInflater.loadAnimator(getApplicationContext(), R.animator.animator_scale)); //注:不要忘记将设置的布局动画添加到布局中 mlinearlayout.setLayoutTransition(transition); //按钮监听,每次点击,添加一个按钮 mbtn_add.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { count++; Button btn=new Button(Mainactivity_layout.this); ViewGroup.LayoutParams params=new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT); btn.setLayoutParams(params); btn.setText("按钮"+count); //当按钮被点击时将被删除 btn.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { v.setVisibility(View.GONE); } }); mlinearlayout.addView(btn); } }); }
(2)LayoutAnimationController
使用步骤:①编写View进入时的动画
②创建LayoutAnimationController对象(此处使用的是基本的四种动画写的)
注:如果编写的是基本动画使用
AnimationUtils.loadAnimation进行载入动画,如果编写的是属性动画使用
AnimatorInflater.loadAnimator载入动画。
[code]//布局动画控制器 LayoutAnimationController layoutcontroller=new LayoutAnimationController(AnimationUtils.loadAnimation(getApplicationContext(), R.anim.activity_in));
③向布局添加动画
[code] //设置动画进入的顺序为随机(此处还有多种顺序可选) layoutcontroller.setOrder(LayoutAnimationController.ORDER_RANDOM); //添加动画 mlistview.setLayoutAnimation(layoutcontroller); //开启动画 mlistview.startLayoutAnimation();
1、布局
[code]<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <ListView android:id="@+id/listView" android:layout_width="match_parent" android:layout_height="wrap_content" > </ListView> </LinearLayout>
2、MainActivity
[code]private ListView mlistview; private List<String> mlist=new ArrayList<String>(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_layoutc); mlistview=(ListView) findViewById(R.id.listView); for(int i=0;i<15;i++){ mlist.add("View"+i); } ArrayAdapter<String> adapter=new ArrayAdapter<String>(this, android.R.layout.simple_expandable_list_item_1,mlist); mlistview.setAdapter(adapter); //布局动画控制器 LayoutAnimationController layoutcontroller=new LayoutAnimationController(AnimationUtils.loadAnimation(getApplicationContext(), R.anim.activity_in)); layoutcontroller.setOrder(LayoutAnimationController.ORDER_RANDOM); mlistview.setLayoutAnimation(layoutcontroller); mlistview.startLayoutAnimation(); }
相关文章推荐
- android — NDK生成so文件
- Android:LayoutParameter不匹配问题
- android SDK 安装目录结构详解及各工具
- CPU是AMD的电脑如何安装android studio,以及studio的环境变量的配置
- Android如何确定哪个APK正在偷流量的方法
- Android Studio + gradle + Androidannotations 配置记录
- Android,发现对于外部导入的工程,编译的时候不能够正常生成R.java文件的解决办法
- Android学习实践:2.创建另一个Activity并通过按钮单击打开
- Android 利用addView 动态给Activity添加View组件
- Android中RelativeLayout各个属性
- Android 开源框架Universal-Image-Loader完全解析(一)--- 基本介绍及使用
- AndroidStudio配置SVN以及使用代码管理
- 如何在android studio上使用SVN
- Android Action Bar 详解篇
- Android 属性动画(Property Animation 给按钮的添加添加动画效果,同样可以用在整个布局上) (下)(viewGroup创建对象竟然可以用布局的id)
- Error:Execution failed for task ': :dexDebug'. > com.android.ide.common.process.ProcessException: o
- Android动画Animation/Animator/LayoutTransition
- Android项目利用Ant实现打包功能
- Android0918<二十二>(自定义View的属性,下载显示球)
- Android 一般动画Animation和属性动画Animator