关闭

Android过渡动画之共享元素实现以及遇到的一些问题

标签: 过渡动画共享元素
5678人阅读 评论(1) 收藏 举报
分类:

下面是我实现的共享元素demo
这里写图片描述

1、在第一个界面为需要共享的view添加属性
android:transitionName=”transitionImg”

        <ImageView
            android:id="@+id/item_image"
            android:layout_width="100dp"
            android:layout_height="140dp"
            android:layout_margin="10dp"
            android:scaleType="centerCrop"
            android:transitionName="transitionImg"/>

2、在第二个界面为需要共享的view添加属性
android:transitionName=”transitionImg”

<ImageView
     android:id="@+id/detail_pic"
     android:transitionName="transitionImg"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     android:scaleType="centerCrop"/>

注意,这里的属性名字需要一致

3、在第一个界面添加跳转

if (android.os.Build.VERSION.SDK_INT > 20) {
                    mThis.startActivity(intent, ActivityOptions.makeSceneTransitionAnimation(mThis, imgView, "transitionImg").toBundle());
                } else {
                    mThis.startActivity(intent);
                }

这样就实现了如上效果,但是如果需要创建多个共享元素,代码如下:

ActivityOptions options = ActivityOptions.makeSceneTransitionAnimation(this,  
        Pair.create(view1, "agreedName1"),  
        Pair.create(view2, "agreedName2")); 

注意的问题
我在做项目的时候,比如上图中的图片,都是需要从网络获取的,两个界面虽然都是一张图片,但是却加载了2次,这个导致了一个问题,大家请看效果
这里写图片描述

问题出在哪里呢?我估计是出在缓存这块,因为用了一张本地的图片,加载效果就是好的。

所以我在每次点击的时候,将图片保存了下来,在第二个界面的时候再取出来,确保图片是同一张。

图片保存代码:

public static void SaveBitmap(Bitmap bitmap) {
        try {
            LogCat.i("SaveBitmap");
            if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
                File saveFile = new File(sdCardDir + File.separator + NAME, IMG_NAME);
                if (!saveFile.getParentFile().exists()) {
                    saveFile.getParentFile().mkdirs();
                }

                FileOutputStream outStream = new FileOutputStream(saveFile);
                //第二个参数影响的是图片的质量,但是图片的宽度与高度是不会受影响滴
                bitmap.compress(Bitmap.CompressFormat.PNG, 100, outStream);
                outStream.flush();
                outStream.close();
            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

但是在保存图片的时候我又遇到了一些问题,我获取保存的bitmap的时候查了网上的一个方法:

imageview.setDrawingCacheEnabled(true);
Bitmap bm = Bitmap.createBitmap(imageview.getDrawingCache());

却发现取出来的图片比原来的模糊,后来换了个方法

Bitmap bm = ((BitmapDrawable)imgView.getDrawable()).getBitmap();

这样就好了。

3
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

Android中Activity切换时共享视图元素的切换动画(5.0以上)

说来这个的背景非常简单,经常在使用图片列表的时候就会想,如果“列表中的图片放大到整个屏幕”作为 Activity 的补间动画,就非常完美了。就像这样:Android 5.0 Lollipop 的 SD...
  • cnzx219
  • cnzx219
  • 2015-07-30 07:22
  • 6357

共享动画的实现(AndroidL及以上)

共享动画的实现(AndroidL及以上)效果图:实现步骤:1.主题设置Activity的主题下添加如下元素,开启支持动画,并且Activity必须继承AppCompatActivitytrue2 .前...
  • qq_26971803
  • qq_26971803
  • 2017-01-11 20:16
  • 318

Android 动画-共享元素动画

Android 转场 共享元素动画 ShareElement Animation
  • A_LiuHaiYang
  • A_LiuHaiYang
  • 2017-05-07 13:41
  • 747

Android 5.X Activity过渡动画,以及漂亮的共享元素效果

曾经的Android在Activity进行跳转的时候,只是非常生硬的进行切换,即使使用overPendingtransition(int inId,int outId)这个方法来给Activity增加...
  • qq_19560943
  • qq_19560943
  • 2017-01-25 16:38
  • 1277

Android 5.0学习之Activity共享元素过渡动画

前言 Activity Transition: 提供了三种Transition类型: 进入:一个进入的过渡(动画)决定activity中的所有的视图怎么进入屏幕。 退出:一个退出的过...
  • nbalichaoq
  • nbalichaoq
  • 2016-12-26 17:09
  • 797

Android开发:带动画的分享效果

带动画效果的分享页面
  • weidongjian
  • weidongjian
  • 2015-07-10 16:19
  • 1474

android转场动画&共享元素&另外一种动画Transition

动画发展史:  从API 1就存在的Drawable Animation和View Animation,以及API 11(Android 3.0)以后加入的Property Animation。而过渡...
  • musk6
  • musk6
  • 2017-01-18 10:41
  • 679

Android 5.0学习之Activity过渡动画

前言 Activity Transition: 提供了三种Transition类型: 进入:一个进入的过渡(动画)决定activity中的所有的视图怎么进入屏幕。 退出...
  • ljx19900116
  • ljx19900116
  • 2014-12-08 18:47
  • 39484

Android中Activity切换时共享视图元素的切换动画(4.x兼容方案)

https://github.com/takahirom/PreLollipopTransition http://www.bubuko.com/infodetail-1007071.html ...
  • daditao
  • daditao
  • 2015-09-14 11:40
  • 2878

你不知道的Android 5.0转场共享动画实现炫酷效果

前两天,用圆形动画在Android L以上实现了一个炫酷的动画效果,今天就来用Android的共享动画来实现一个炫酷的转场动画。 共享动画的前提是最低版本Android5.0,这是Android5.0...
  • tangmanong
  • tangmanong
  • 2016-12-08 22:44
  • 1836
    个人资料
    • 访问:294530次
    • 积分:3319
    • 等级:
    • 排名:第11798名
    • 原创:84篇
    • 转载:16篇
    • 译文:0篇
    • 评论:119条
    最新评论