Android中Activity切换时共享视图元素的切换动画(5.0以上)
同一时候公布在我的博客
背景
说来这个的背景很easy,常常在使用图片列表的时候就会想,假设“列表中的图片放大到整个屏幕”作为 Activity 的补间动画。就很完美了。
就像这样:
Android 5.0 Lollipop 的 SDK 公布以后。这个新的主题包括在 AppCompat-v7 21了。
这里介绍的实现方法是 ActivityOptionsCompat.makeSceneTransitionAnimation , 缺点是仅仅能在5.0上才干够看到效果,在5.0下面仅仅能确保程序不出错。
实现
首先要在 AndroidManifest.xml 中为须要这样的动画的 Activity 开启这个功能,为此我字节写了一个 style。
<style name="AnimationActivity">
<item name="android:windowContentTransitions">true</item>
</style>
先来造一个浏览界面,关键是设置共享的视图元素的两个地方
public class ViewerActivity extends AppCompatActivity {
public static void launch(AppCompatActivity activity, View transitionView, int resId) {
Intent intent = new Intent(activity, ViewerActivity.class);
intent.putExtra("resId", resId);
// 这里指定了共享的视图元素
ActivityOptionsCompat options = ActivityOptionsCompat
.makeSceneTransitionAnimation(activity, transitionView, "image");
ActivityCompat.startActivity(activity, intent, options.toBundle());
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_viewer);
ImageView imageView = (ImageView) findViewById(R.id.image);
imageView.setImageResource(getIntent().getIntExtra("resId", R.mipmap.pic_1));
// 这里指定了被共享的视图元素
ViewCompat.setTransitionName(imageView, "image");
}
}
然后启动上边写好的浏览界面
ViewerActivity.launch(MainActivity.this, v, data.get(position).resId);
我知道上面写得比較简单,所以我就准备了,
很多其它
上面的方法很easy。可是却仅仅能在 5.0 的版本号上显示出效果。对于如今大部分手机还是 4.x 的情况来说。无疑是不能上线的。
下一篇文章将会讨论怎样在 4.x 上实现相同的效果。敬请期待。
Android中Activity切换时共享视图元素的切换动画(5.0以上)的更多相关文章
- Android中Activity运行时屏幕方向与显示方式详解
现在我们的手机一般都内置有方向感应器,手机屏幕会根据所处位置自动进行横竖屏切换(前提是未锁定屏幕方向).但有时我们的应用程序仅限在横屏或者竖屏状态下才可以运行,此时我们需要锁定该程序Activity运 ...
- Android中Activity启动模式详解
在Android中每个界面都是一个Activity,切换界面操作其实是多个不同Activity之间的实例化操作.在Android中Activity的启动模式决定了Activity的启动运行方式. An ...
- Android中Activity的启动模式
简介 Android中的活动启动方式分为4种:standard, singleTop, singleTask, singleInstance.可以在AndroidManifest.xml中通过给< ...
- Android进阶笔记08:Android 中Activity、Window和View之间的关系
1. Android 中Activity.Window和View之间的关系(比喻): Activity像一个工匠(控制单元),Window像窗户(承载模型),View像窗花(显示视图) LayoutI ...
- 【android】android中activity的生命周期
activity生命周期: 实例代码: public class DemoActivity extends Activity { //1.activity第一次被创建的时候,执行 @Override ...
- android 中activity 属性说明(转载)
转自:http://liuwuhen.iteye.com/blog/1759796 activity是android中使用非常平凡的一种组件,我们除了需要掌握activity中的生命周期以外,还需要掌 ...
- android中activity.this跟getApplicationContext的区别
转载: http://www.myexception.cn/android/1968332.html android中activity.this和getApplicationContext的区别 在a ...
- Android中Activity的四种启动方式
谈到Activity的启动方式必须要说的是数据结构中的栈.栈是一种只能从一端进入存储数据的线性表,它以先进后出的原则存储数据,先进入的数据压入栈底,后进入的数据在栈顶.需要读取数据的时候就需要从顶部开 ...
- 【Android学习入门】Android中activity的启动模式
启动模式简单地说就是Activity启动时的策略,在Androidmanifest.xml文件中的标签android:launchMode属性设置,在Android中Activity共有四种启动模式分 ...
随机推荐
- $.each(data, function (index, value) { })的用法;json和list<>的互相转换
在json中常常碰到这样的代码: jquery $.each(data, function (index, value) { }) 遍历处理data,可以是数组.DOM.json等,取决于直接给 ...
- Sparse Autoencoder(一)
Neural Networks We will use the following diagram to denote a single neuron: This "neuron" ...
- ZJOI2017线段树
ZJOI2017线段树 题意: 给你一颗广义线段树,太长了,自己去看. 题解: 直接上zkw那一套,把闭区间换成开区间,就是把取\([l,r]\),变成取\([l-1,l-1],[r+1,r+ ...
- 今日 SGU 5.6
SGU 106 题意:问你有多少个<x,y>,满足ax+by+c=0,x1<=x<=x2,y1<=y<=y2 收货:拓展欧几里得求解的是这种方程,ax+by=1,g ...
- 如何优雅的写UI——(2)MFC下基于CFormView的文档视图程序
在MFC中可以创建多种类型的窗口程序,如对话框程序.单文档结构程序(非文档/视图结构).单文档(文档/视图结构)以及多文档视图结构程序等. 在编写一般的小工具时,我们的首选显然是对话框程序,不过基于对 ...
- Exchanging Partitions and Subpartitions with Tables--官方文档
原文地址:https://dev.mysql.com/doc/refman/5.6/en/partitioning-management-exchange.html In MySQL 5.6, it ...
- c#的中英文混合字符串截取
public class StringHelper { public static string GetSubString(string str, int len) ...
- JAVA Mail邮件实现发送
package com.test;import java.util.Date;import java.util.Properties;import javax.mail.Message;import ...
- Navigator对象关于语言的属性
[摘要]在做国际化WEB项目的时候,遇到了一个根据用户浏览器所使用的自然语言切换默认语言版本的问题.于是,整理了这篇文章. 首先,W3Cschool关于Navigator的各个属性值说的很明确了,这里 ...
- 【习题 7-3 UVA - 211】The Domino Effect
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 每次搜素要往下还是要往右摆. 然后维护一下让每个下标只出现一次就可以了. =>作为剪枝条件 [代码] /* 1.Shoud i ...