ActivityOptionsCompat动画的使用

ActivityOptionsCompat动画的使用
  1. makeCustomAnimation平移动画

类似overridePendingTransition的功能,为两个activity设置了过渡动画,enterResId 是进入activity的动画,exitResId是退出的activity的动画

//1使用自定义动画切换
public void gotoDetailCustomAnimation(View view){
    ActivityOptionsCompat compat =                      ActivityOptionsCompat.makeCustomAnimation(this,R.anim.in,R.anim.out);  //进来和出去的动画
    Intent intent  =  new Intent();
    intent.setClass(this,DetailActivity.class);
    //一定要这么写
    ActivityCompat.startActivity(this,intent,compat.toBundle());
}

2 makeScaleUpAnimation缩放动画

新的activity产生一个缩放的动画,这个动画的起点是,相对于source这个View 的左上角偏移(startX,startY)位置产生一个动画,新的activity的初始宽度和高度是width 和 height。

//2使用一个缩放动画切换
public void gotoScaleAnimation(View view){
    ActivityOptionsCompat compat =  ActivityOptionsCompat.makeScaleUpAnimation(view,
    (int)(view.getWidth()/2f),  //从点击的View的宽度一半
    (int)(view.getHeight()/2f), //高度的一半
    0,0);                       //偏移量
    Intent intent  =  new Intent();
    intent.setClass(this,DetailActivity.class);
    //一定要这么写
    ActivityCompat.startActivity(this,intent,compat.toBundle());
}

3 makeThumbnailScaleUpAnimation指定图片缩放动画

新的activity产生一个缩放的动画,这个动画的起点是,相对于source这个View 的左上角偏移(startX,startY)位置产生一个动画,新的activity的初始宽度和高度是这个bitmap的宽高

//3使用一个缩放动画切换
public void gotoThumbnailAnimation(View view){
    //打开一个图片
    Bitmap bitmap = BitmapFactory.decodeResource(getResources(),R.drawable.a1);
    ActivityOptionsCompat compat =          ActivityOptionsCompat.makeThumbnailScaleUpAnimation(view, //位置
    bitmap, //缩放的图片
    0,0);   //偏移量
    Intent intent  =  new Intent();
    intent.setClass(this,DetailActivity.class);
    //一定要这么写
    ActivityCompat.startActivity(this,intent,compat.toBundle());
}

4 makeSceneTransitionAnimation共享元素动画

新的activity产生一个过渡动画,动画由两个页面的相同元素生成,这种效果只支持5.0以上的手机。

//两个Activity设置相同的控件 ,相同的ID,系统自动生成动画

//4使用一个共享元素切换
public void gotoShareAnimation(View view){
    //打开一个图片
    Bitmap bitmap = BitmapFactory.decodeResource(getResources(),R.drawable.a2);
    ActivityOptionsCompat compat =  ActivityOptionsCompat.makeSceneTransitionAnimation(
    this,
    findViewById(R.id.share),  //获取到共享元素的id
    "one");       //元素的名字
    Intent intent  =  new Intent();
    intent.setClass(this,DetailActivity.class);
    //一定要这么写
    ActivityCompat.startActivity(this,intent,compat.toBundle());
}
<ImageView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:src="@drawable/a1"
    android:id="@+id/share"
    android:clickable="true"
    android:transitionName="@string/share_one"   //共享元素的名字
    />

多个共享元素的过渡动画:

//5使用多个共享元素切换
public void gotoPairShareAnimation(View view){
    Bitmap bitmap = BitmapFactory.decodeResource(getResources(),R.drawable.a2);
    ActivityOptionsCompat compat =  ActivityOptionsCompat.makeSceneTransitionAnimation(
    this,
 Pair.create(findViewById(R.id.share),  //第一个共享元素
 getResources().getString(R.string.share_one)),

 Pair.create(findViewById(R.id.share2),"two"));  //第二个共享元素
    Intent intent  =  new Intent();
    intent.setClass(this,DetailActivity.class);
    //一定要这么写
    ActivityCompat.startActivity(this,intent,compat.toBundle());
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值