同一时候公布在我的博客

点此进入

背景

说来这个的背景很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以上)的更多相关文章

  1. Android中Activity运行时屏幕方向与显示方式详解

    现在我们的手机一般都内置有方向感应器,手机屏幕会根据所处位置自动进行横竖屏切换(前提是未锁定屏幕方向).但有时我们的应用程序仅限在横屏或者竖屏状态下才可以运行,此时我们需要锁定该程序Activity运 ...

  2. Android中Activity启动模式详解

    在Android中每个界面都是一个Activity,切换界面操作其实是多个不同Activity之间的实例化操作.在Android中Activity的启动模式决定了Activity的启动运行方式. An ...

  3. Android中Activity的启动模式

    简介 Android中的活动启动方式分为4种:standard, singleTop, singleTask, singleInstance.可以在AndroidManifest.xml中通过给< ...

  4. Android进阶笔记08:Android 中Activity、Window和View之间的关系

    1. Android 中Activity.Window和View之间的关系(比喻): Activity像一个工匠(控制单元),Window像窗户(承载模型),View像窗花(显示视图) LayoutI ...

  5. 【android】android中activity的生命周期

    activity生命周期: 实例代码: public class DemoActivity extends Activity { //1.activity第一次被创建的时候,执行 @Override ...

  6. android 中activity 属性说明(转载)

    转自:http://liuwuhen.iteye.com/blog/1759796 activity是android中使用非常平凡的一种组件,我们除了需要掌握activity中的生命周期以外,还需要掌 ...

  7. android中activity.this跟getApplicationContext的区别

    转载: http://www.myexception.cn/android/1968332.html android中activity.this和getApplicationContext的区别 在a ...

  8. Android中Activity的四种启动方式

    谈到Activity的启动方式必须要说的是数据结构中的栈.栈是一种只能从一端进入存储数据的线性表,它以先进后出的原则存储数据,先进入的数据压入栈底,后进入的数据在栈顶.需要读取数据的时候就需要从顶部开 ...

  9. 【Android学习入门】Android中activity的启动模式

    启动模式简单地说就是Activity启动时的策略,在Androidmanifest.xml文件中的标签android:launchMode属性设置,在Android中Activity共有四种启动模式分 ...

随机推荐

  1. Java开发常用的代码片段

    1. 字符串有整型的相互转换 String a = String.valueOf(2);   //integer to numeric string  int i = Integer.parseInt ...

  2. Android Error:(1, 0) Gradle version 2.2 is required. Current version is 3.4.1.

    我们在使用Android Studio的时候新建项目没什么问题的,但是当我们下载一份Github上的项目导入进去的时候却没法正常使用,其原因主要是gradle配置问题.而由于gradle这个玩意儿版本 ...

  3. C/C++(基础编码-补码详解)

    两个数的交换 1.引入第三者. 2.求和运算,求差.(这样会产生内存溢出) 3.异或运算 a = a^b; b = a^b; a = a^b; 8b(bit位) = 1B(Byte=字节)//最小单位 ...

  4. iptables-save && iptables-restore iptables规则保存于还原

    iptables-save命令用于将linux内核中的iptables表导出到标准输出设备商,通常,使用shell中I/O重定向功能将其输出保存到指定文件中. 语法 -t:指定要保存的表的名称. 实例 ...

  5. Android开发之ConstraintLayout相对布局

    介绍 一个 ConstraintLayout 是一个 ViewGroup 允许您以灵活的方式定位和调整小部件的方法. 注意: ConstraintLayout 作为支持库提供,您可以在API级别9(G ...

  6. Git学习总结(2)——初识 GitHub

    1. 写在前面 我一直认为 GitHub 是程序员必备技能,程序员应该没有不知道 GitHub 的才对,没想到这两天留言里给我留言最多的就是想让我写关于 GitHub 的教程,说看了不少资料还是一头雾 ...

  7. iOS报错 -pie can only be used when targeting iOS 4.2 or later

    近期,使用师兄的project时.突然报错之前没发现这个错误.信息例如以下: ld: -pie can only be used when targeting iOS 4.2 or later cla ...

  8. 分组的listview——ExpandableListView

    开发使用到的数据统计时可以用分组的ExpandablelistView 效果:

  9. 1.lombok系列1:初识lombok

    转自:https://www.imooc.com/article/18156 初识lombok 官网:https://projectlombok.org/ 什么是lombok 连官网都懒得废话,只给出 ...

  10. Django路由分配以及模版渲染

    路由上: 在网络上区分不同的电脑通过IP.端口和网卡的MAC地址等,在web框架中怎么区分不同的请求呢,就是通过 ‘url(路由)’ ,url 学名叫做全球统一资源定位符,其实就是一个网址 一个url ...