一、overridePendingTransition

  我们之前讲的动画都是针对View的动画,其实在我们开启一个Activity的时候,我们也可以产生动画效果,动画效果可以直接使用我们在 Android 动画效果(一): 四种动画基础(Alpha、Translate、Rotate、Scale) 中所介绍的,编写xml文件,通过overridePendingTransition来为我们Activity的载入添加动画效果。下面来看下它的具体使用步骤。

使用步骤

1、在res下创建anim(该名称固定)文件,编写xml动画(需要编写进入动画,与退出动画)
2、开启activity,通过overridePendingTransition(enterAnim, exitAnim) 添加进出动画。
进入动画:

<?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>

退出动画:

<?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,设置动画:

  Intent intent=new Intent(getApplicationContext(),MainActivity.class);    startActivity(intent);    //设置动画    overridePendingTransition(R.anim.activity_in,R.anim.activity_out);

二、布局动画(两种方式)

(1)LayoutTransition

使用步骤:
编写xml动画
创建LayoutTransition对象,并设置动画

LayoutTransition transition=new LayoutTransition();    transition.getDuration(2000);transition.setAnimator(LayoutTransition.APPEARING, AnimatorInflater.loadAnimator(getApplicationContext(), R.animator.animator_scale));

将动画效果添加到布局中

mlinearlayout.setLayoutTransition(transition);


1、布局(只有一个Button按钮)
2、动画(放缩动画)
(这里使用了属性动画ObjectAnimator【对属相动画的使用不了解的参看 Android 属性动画(二):ObjectAnimator与ValueAnimator 】,也可以使用四种基础的动画进行编写)

<?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

public class Mainactivity_layout extends Activity{    private Button mbtn_add;    //用于向linearlayout中动态添加按钮    private LinearLayout mlinearlayout;    private int count;@Overrideprotected 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载入动画。

//布局动画控制器LayoutAnimationController layoutcontroller=new LayoutAnimationController(AnimationUtils.loadAnimation(getApplicationContext(), R.anim.activity_in));

③向布局添加动画

//设置动画进入的顺序为随机(此处还有多种顺序可选)          layoutcontroller.setOrder(LayoutAnimationController.ORDER_RANDOM); //添加动画             mlistview.setLayoutAnimation(layoutcontroller);            //开启动画         mlistview.startLayoutAnimation();


1、布局

<?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

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();    }

更多相关文章

  1. Android中MenuInflater实例
  2. 【Android(安卓)基础】Android(安卓)LayoutInflater 简单入门
  3. Android布局排版
  4. android 小练习(一) ---仿微信UI主界面
  5. Android(安卓)Fragment的三种应用方式
  6. android RecyclerView实现列表定位
  7. Android(安卓)dialog用法(二)
  8. Android(安卓)ListView不同的item布局实现
  9. Android四大布局之百分比布局

随机推荐

  1. Android(安卓)LiveData 使用
  2. Android(安卓)Studio的Beta, Canary, Dev
  3. Ubuntu12.04 adb无法连接手机
  4. Android创建旋转箭头-不恢复原位-旋转动
  5. 基于CSipSimple开发的VOIP网络电话 iCall
  6. Android--H5交互简介
  7. Android(安卓)Dialog 生命周期
  8. android 混淆配置
  9. Android支付宝快捷登录
  10. Android(安卓)使用WebView 加载新闻详情,