标签: activity-transition

棒棒糖活动过渡:后退按钮与工具栏差异的后退?

我有一个应用程序,我正在为公司目录进行活动转换.选择搜索结果后,其照片到详细信息屏幕的动画将起作用.如果我点击后退按钮,则会发生反向动画.但是,如果我从工具栏中点击后退箭头,则不会发生反向动画.

详细信息屏幕是一个新的DetailActivity,其中包含一个名为DetailFragment的片段.我没有对"onBackPressed"做任何特别的事情.我可以做?

android android-5.0-lollipop activity-transition

5
推荐指数
1
解决办法
2263
查看次数

Android共享元素转换前21

如何在21之前的设备中实现共享元素转换?我或多或少地遵循了这里的指南http://antonioleiva.com/material-design-everywhere/但我得到的错误就像"属性transitionName仅用于api级别21或更高级别"

android android-activity activity-transition shared-element-transition

5
推荐指数
1
解决办法
8646
查看次数

多视图活动转换

Android Lolipop有一个api,允许在不同活动中的共享元素之间轻松转换.

活动过渡

看起来这个api不支持具有多个视图的转换.有没有办法使用相同的API?

编辑

根据@pskink的建议,我使用了不同的方法

    ActivityOptions options = ActivityOptions
            .makeSceneTransitionAnimation(this, Pair.create((View)view, "viewPager"), Pair.create((View) fab, "fab"));
    startActivity(intent, options.toBundle());
Run Code Online (Sandbox Code Playgroud)

这从ActivityA到ActivityB工作正常,但点击后退按钮会导致此堆栈跟踪

   A/OpenGLRenderer(17305): requireSurface() called but no surface set!
 A/libc(17305): Fatal signal 6 (SIGABRT), code -6 in tid 17349(RenderThread)
        Build fingerprint: 'google/hammerhead/hammerhead:5.0/LRX21O/1570415:user/release-keys'
        Revision: '11'
        ABI: 'arm'
        pid: 3364, tid: 3414, name: RenderThread  >>> com.example.package <<<
        signal 6 (SIGABRT), code -6 (SI_TKILL), fault addr --------
        Abort message: 'requireSurface() called but no surface set!'
            r0 00000000  r1 00000d56  r2 00000006  r3 00000000
            r4 9e9b5db8  r5 …
Run Code Online (Sandbox Code Playgroud)

android activity-transition shared-element-transition

5
推荐指数
0
解决办法
1962
查看次数

如何将makeSceneTransitionAnimation转换为圆形,而不是矩形?

我目前正在尝试在我的FAB和另一个Activity之间创建一个循环过渡.

根据我在文档中提到的内容,我应该以类似的方式使用makeSceneTransitionAnimation:

public void onFabClicked(View v){
    try {
        Intent intent = new Intent(this, SearchActivity.class);
        ActivityOptions options = ActivityOptions
                .makeSceneTransitionAnimation(this, v, "reveal");
        startActivity(intent, options.toBundle());
    } catch (Exception e) {
        // makeSceneTransitionAnimation not supported, maybe a check of SDK level is enough to avoid catching an error?
        Intent intent = new Intent(this, SearchActivity.class);
        startActivity(intent);
        e.printStackTrace();
    }
}
Run Code Online (Sandbox Code Playgroud)

不幸的是,当前动画在动画期间显示一个矩形.

怎么可能把它变成我们喜欢棒棒糖的美丽圆形画面?

谢谢.

编辑:

我试图实现这一点(除了颜色应该全屏,但你得到了点......)): 在此输入图像描述

我真正得到的是:

在此输入图像描述

android android-5.0-lollipop activity-transition circularreveal

5
推荐指数
1
解决办法
5055
查看次数

Android Lollipop 过渡中的动画文本颜色

我们正在尝试进行转换,将一个 Activity 的 TextView 移动到另一个 Activity 的另一个 TextView。常见的令人敬畏的 Android Lollipop 过渡,用于动画共享视图。

在我们的场景中,第一个 TextView 是白色的,第二个是红色的。它也有不同的尺寸。

共享视图的过渡

我们遇到的问题是,如果我们仔细观察动画并使用慢动作动画中的手机,我们可以看到白色 TextView 没有做任何动画。取而代之的是,红色的 TextView 出现在白色的上面,然后动画到最终位置。

我们想要实现的是在白色 TextView 移动到红色时淡出它,并从白色 TextView 淡入红色,同时对其进行动画处理。嗯……你知道的,效果令人难以置信:·)

为了实现它,我们在主题定义中使用转换:

    <item name="android:windowSharedElementEnterTransition">@transition/auto_transition</item>
    <item name="android:windowSharedElementExitTransition">@transition/auto_transition</item>
Run Code Online (Sandbox Code Playgroud)

并且,在我们的 auto_transition.xml 文件中:

<transitionSet xmlns:android="http://schemas.android.com/apk/res/android">
  <autoTransition/>
</transitionSet>
Run Code Online (Sandbox Code Playgroud)

但是,可以肯定的是,这不是 Android 人希望它工作的方式。

如果有人有任何见解,将不胜感激。谢谢!

android-5.0-lollipop activity-transition shared-element-transition

5
推荐指数
0
解决办法
558
查看次数

使用 startActivityForResult 时的共享元素

我有一个带有两个的应用程序activities,其中第二个用作图像“选择器”并向第一个提供一些信息,以便ImageView可以相应地更新。

为此,我activity通过调用第二个startActivityForResult(),并ImageView根据收到的信息更新onActivityResult()

当我尝试为选取器和主元素之间的共享元素设置动画时,问题出现了Activity:过渡动画似乎是第一个“快照” Activity,即使恢复后ImageView立即更新Activity,过渡动画也会“闪烁”较旧的版本View显示当前版本之前。

这是我制作的一个示例应用程序,用于说明我在说什么:

错误的视觉描述

无缝实现此动画的最佳方法是什么?是否应该使用另一种方法?

这是用于示例的代码:

主要活动

public class MainActivity extends AppCompatActivity {

    ImageView mainImageView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        getSupportActionBar().setTitle("Main Activity");

        mainImageView = (ImageView) findViewById(R.id.imageView);
        findViewById(R.id.button).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(MainActivity.this, PickerActivity.class);
                ActivityOptionsCompat options = ActivityOptionsCompat.
                        makeSceneTransitionAnimation(MainActivity.this, mainImageView, "shape_transition");
                startActivityForResult(intent, 1, options.toBundle());
            }
        });
    }

    @Override …
Run Code Online (Sandbox Code Playgroud)

android android-intent activity-transition shared-element-transition

5
推荐指数
1
解决办法
1476
查看次数

Webview在棒棒糖的共享元素转换中出现故障

我刚开始使用appcompat支持库重建我的Android 5.0应用程序.我刚刚完成了一个以共享元素为特色的过渡.它似乎运作良好,直到我添加一个webview.

我制作了一个视频来演示故障. https://www.youtube.com/watch?v=MuuGZc0Vwow

正如你所看到的,当我打开活动时一切都很好.当我关闭它时,会发生故障.正如你所看到的,除了webview之外,所有元素都应该像它们应该的那样淡出.在动画结束之前,它就会挂在那里,有点破坏了动画的整体流畅度.

我该如何解决?如果它与我设置的方式有关,我很乐意分享一些代码.

提前致谢.

android android-webview android-support-library activity-transition shared-element-transition

4
推荐指数
1
解决办法
1634
查看次数

结合活动自定义动画和场景过渡动画

是否有可能合并ActivityOptionsCompat.makeCustomAnimation()ActivityOptionsCompat.makeSceneTransitionAnimation()?我想实现以下Activity变化效果:

  1. 一个视图停留在屏幕上
  2. 旧活动的其他视图滑出
  3. 来自新活动的视图逐渐消失

我可以分别使用第1和第 2、第 3点,有没有办法同时使用它们,也许使用不同的方法或其他方法?

android android-animation android-activity activity-transition

4
推荐指数
1
解决办法
995
查看次数

将重新输入动画更改为列表中的另一个项目

我有一个带有图像的RecyclerView,当我按下图像时,应用程序会打开另一个包含ViewPager的活动,该活动具有相同的图像但位于我选择的图像的位置.

我已经在Lollipop中完成了转换,在活动之间使用supportPostponeEnterTransition和supportStartPostponedEnterTransition在被调用的活动中共享此图像,等待viewPager加载图像以开始转换.

当我进入被调用的活动时,当我按下时,转换是正常的.

我面临的问题是,如果我移动到被调用活动的ViewPager中的另一个图像,当我按下它时动画显示它在开始时选择的图像,而不是当前选择的图像.

我已经能够将动画图像更改为在被调用活动中选择的图像:

@Override
public void onBackPressed() {
  View view = ((ImageDetailFragment) adapter.getFragment(viewPager,
      viewPager.getCurrentItem())).getTransitionView();

  ViewCompat.setTransitionName(view, Constants.TRANSITION_IMAGE);
  super.onBackPressed();
}
Run Code Online (Sandbox Code Playgroud)

但它返回到调用活动列表中原始图像的相同位置.

如何使图像返回其在调用活动列表中的位置?

android android-5.0-lollipop activity-transition shared-element-transition

3
推荐指数
1
解决办法
1478
查看次数

如何将Activity Transition Animation中的元素恢复到不同的位置?

我在具有多个ImageView的垂直ScrollView中使用LinearLayout,当我单击一个图像视图时,我从(活动1)到全屏库(活动2)执行过渡动画,该库具有视图分页器,用户可以向右/向左滑动..现在,当用户滑动到库中的另一个图像并按下当前可见图像(活动2)时,将恢复(再次使用过渡动画)到活动1中的起始位置,问题是图像已恢复直到它到达旧位置然后消失并显示不同的图像(因为这已经太复杂而无法讨论)我附加了一个图像.

在此输入图像描述

Activity1布局:

<LinearLayout>
   <ImageView />
   <ImageView />
   <ImageView />
   <ImageView />
   <ImageView />
   <ImageView />
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

Acivity2(图库)布局:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent">

    <android.support.v7.widget.AppCompatImageView
        android:id="@+id/animation_image"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@color/transparent"
        android:scaleType="fitCenter"
        android:src="@drawable/placeholder"
        android:transitionName="@string/transition_article_image_gallery"
        android:layout_centerInParent="true"
        />

    <ViewPager
        android:id="@+id/gallery_pager"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)

点击活动1中的任何图片:

public void openGallery(int position, ArrayList<String> images, View view)
    {
        Intent intent = new Intent(getActivity(), GalleryActivity.class);
        intent.putStringArrayListExtra(GalleryActivity.EXTRA_GALLERY_IMAGES, images);
        intent.putExtra(GalleryActivity.EXTRA_POSITION, position);
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
            ActivityOptionsCompat options = ActivityOptionsCompat.makeSceneTransitionAnimation(
                getActivity(),
                new Pair<>(view, TARGET_ELEMENT_TRANSITION_NAME_ATTRIB_VALUE)
            );
            ActivityCompat.startActivity(getActivity(), intent, options.toBundle());
        } else {
            getActivity().startActivity(intent); …
Run Code Online (Sandbox Code Playgroud)

android android-transitions activity-transition

3
推荐指数
1
解决办法
1206
查看次数