标签: shared-element-transition

在Android 5.0中转换ImageView时出现奇怪的问题

我遇到了一个关于ImageViewAndroid 5.0中的活动之间转换的奇怪问题/错误.

我试图从缩略图转换Fragment A(中Activity A)到的头部图像Fragment B(在Activity B).它大部分时间都运行良好,但它有时会轻微混乱.

这是一张它弄乱时的样子:

真是一团糟... :-)

当然,它应该填满整个区域.两个ImageView都设置为ScaleType.CENTER_CROP,所以我无法想象这是问题.

令人好奇的是,该问题在滚动时立即自行修复Activity B(所有内容都包含在子类中ScrollView,ImageView在滚动时更改填充).

启动代码Activity B非常简单:

ActivityOptionsCompat options = ActivityOptionsCompat.makeSceneTransitionAnimation(
    activity, thumbImageView, "cover"); // "cover" is the shared element name for both ImageViews
ActivityCompat.startActivity(activity, intent, options.toBundle());
Run Code Online (Sandbox Code Playgroud)

这是可观察的ScrollView侦听器的代码:

scrollview.setOnScrollChangedListener(new OnScrollChangedListener() {
    @Override
    public void onScrollChanged(ScrollView who, int l, int t, int oldl, int oldt) {
        // Such parallax, much wow
        headerImageView.setPadding(0, (int) …
Run Code Online (Sandbox Code Playgroud)

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

9
推荐指数
1
解决办法
2849
查看次数

Android - 工具栏和状态栏作为内容更改的共享对象

在我的应用程序中,我将工具栏和状态栏设置为共享对象, 如本文第2项中的建议所示

工具栏和选项卡的一般行为和轮廓非常出色 - 唯一的问题是,当我转到活动B时,工具栏的某些UI元素不参与内容转换,尤其是工具栏标题和菜单图标.

我尝试添加一个SharedElementCallback并在其中循环工具栏和选项卡的子项并将它们全部添加到Fade转换 - 但它不会影响工具栏和选项卡内容的行为.

不知道怎么从这里开始?期望的效果是使工具栏的元素(标题,向上按钮,菜单图标)参与内容转换.

评论后添加了截图:

活动A.

在活动A中

活动B.

在活动B中

android android-5.0-lollipop shared-element-transition

9
推荐指数
1
解决办法
1188
查看次数

共享元素转换为RecyclerView中的视图,可能吗?

鉴于具有共享元素的Activity的正常Lollipop转换,例如https://github.com/codepath/android_guides/wiki/Shared-Element-Activity-Transition,很常见的是从View of Recycler View转换为正常的目标活动视图.

但是,如果是目标视图,也是在recyclerView的视图中,是否有可能实现这一点(即向ActivityOptionsCompat提供目标视图)?

谢谢!

android android-transitions shared-element-transition android-5.1.1-lollipop

9
推荐指数
1
解决办法
1757
查看次数

如何在活动转换的共享元素上实现放大动画

我希望在活动转换的共享元素上实现放大动画,就像在此链接中一样.

但是找不到任何关于这种特定效果的好参考以及如何实现它.这是自定义转换还是默认转换?也许任何人都可以帮助或发布更详细的教程,而不是官方文档.

android android-animation material-design shared-element-transition

9
推荐指数
1
解决办法
5637
查看次数

textview和工具栏标题之间​​的Sharedelement转换

我有一个在回收站视图中具有名称的项目和一个带有折叠工具栏的详细信息活动,该工具栏显示项目的名称.我想在项目名称和工具栏/折叠工具栏的标题之间添加一个sharedelement转换.

带项目(主题)的Recyclerview颜色和名称(主题名称) 细节活动

item_subject.xml

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal">

    <FrameLayout
        android:id="@+id/frameLayoutSubjectColor"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:minWidth="20dp" />

    <TextView
        android:id="@+id/textViewSubjectName"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:padding="10dp"
        android:text="Medium Text"
        android:textAppearance="?android:attr/textAppearanceMedium" />

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

activity_subject_detail.xml

<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">

<android.support.design.widget.AppBarLayout
    android:layout_width="match_parent"
    android:layout_height="200dp"
    android:id="@+id/appBarLayout"
    android:fitsSystemWindows="true"
    android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">

    <android.support.design.widget.CollapsingToolbarLayout
        android:id="@+id/collapsing_toolbar"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:layout_scrollFlags="scroll|exitUntilCollapsed">

        <android.support.v7.widget.Toolbar
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize"
            app:layout_collapseMode="pin">

        </android.support.v7.widget.Toolbar>

    </android.support.design.widget.CollapsingToolbarLayout>

</android.support.design.widget.AppBarLayout>

<android.support.v4.widget.NestedScrollView
    android:id="@+id/subject_detail_container"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:layout_behavior="@string/appbar_scrolling_view_behavior">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_margin="@dimen/activity_horizontal_margin"
        android:orientation="vertical">

        <TextView
            android:id="@+id/textViewSubjectShort"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:paddingBottom="16dp"
            android:text="Medium Text"
            android:textAppearance="?android:attr/textAppearanceMedium" />

        <TextView
            android:id="@+id/textViewSubjectRoom"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:paddingBottom="32dp"
            android:text="Medium Text"
            android:textAppearance="?android:attr/textAppearanceMedium" />

        <TextView
            android:id="@+id/textViewTeacher"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" …
Run Code Online (Sandbox Code Playgroud)

android shared-element-transition android-collapsingtoolbarlayout

9
推荐指数
1
解决办法
864
查看次数

Android共享元素转换 - 阻止绘制共享元素

我正在制作一个自定义Transition设置,仅在Shared View部分可见的情况下为其可见部分设置动画.

在我的情况下,这发生是因为Shared View它在a里面ConstraitLayout,而ConstraitLayout在a里面ScrollView.

我在另一个问题中提到了这个问题: 共享元素转换 - 仅为共享视图的可见部分设置动画

这是transition系统选择的默认值:

在此输入图像描述

这就是我工作的地方:

在此输入图像描述

动画本身运作良好......但问题是系统在动画开始之前绘制完整的共享视图......并且有一个丑陋的眨眼.

我怎么能防止这种情况?

我已经风格了:

<item name="android:windowSharedElementsUseOverlay">false</item>

animation android android-transitions shared-element-transition

9
推荐指数
1
解决办法
269
查看次数

Android共享元素在2个RecyclerViews之间转换

RecyclerView在2个活动(MainActivityDetailActivity)中的2 个项目之间使用默认共享元素转换.来自MainActivityto的动画DetailActivity工作正常,但如果用户已滚动到其中的新项目DetailActivity,则重新输入动画会将项目移至顶部.我修改了Android开发者博客上共享的示例以满足我的需求.这是我的代码的Github链接.我也尝试禁用退出动画DetailActivity,并尝试更改退出动画仅淡出,但它几乎就像退出动画根本没有得到尊重.

这是一个视频演示(可以在最后几秒看到问题):

在此输入图像描述

主要活动:

class MainActivity : AppCompatActivity(), ListImageAdapter.ListImageClickListener {

    private lateinit var imageData: ImageData
    private lateinit var listImageAdapter: ListImageAdapter

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        setupGallery()
        prepareTransitions()
    }

    @SuppressLint("RestrictedApi")
    override fun onListImageClick(position: Int, imageView: ImageView) {
        val intent = Intent(this, DetailActivity::class.java)
        intent.putExtra("IMAGE_DATA", imageData)
        val activityOptions = ActivityOptions.makeSceneTransitionAnimation(this, imageView,
                ViewCompat.getTransitionName(imageView))

        startActivityForResult(intent, 101, activityOptions.toBundle())
    }

    override fun onActivityReenter(resultCode: Int, data: Intent?) { …
Run Code Online (Sandbox Code Playgroud)

android android-animation android-transitions shared-element-transition

9
推荐指数
1
解决办法
648
查看次数

棒棒糖中的活动和片段转换

我正试图围绕新的Activity Transition框架Lollipop.活动过渡工作非常简单,这里有一些基本信息,但是Fragment Transition没有记录,我无法让它工作.我试过这个用例(在Android中很常见):

案例1:ActA + FragA - > ActB + FragB

sharedElement作为一个图像FragAFragB.我没有提出工作代码,所以我退后一步尝试了

案例2:ActA + FragA - > ActB

在和上使用sharedElement.动画不起作用,我只能看到当我点击FragA上的图像时,图像消失,在动画的持续时间后,它会在ActB中弹出.FragA之外的共享视图,但在ActA(例如)内部正确动画.FragAActBToolbar

在这种情况下,sharedImage是RecyclerView中的imageView,可能是android:transitionName="shared_icon"项目布局xml中的xml标签不起作用吗?

这是我的主题:

 <!-- Window Transactions -->
    <item name="android:windowContentTransitions">true</item>
    <item name="android:windowAllowEnterTransitionOverlap">true</item>
    <item name="android:windowAllowReturnTransitionOverlap">true</item>
    <item name="android:fragmentAllowEnterTransitionOverlap">@bool/true_bool</item>
    <item name="android:fragmentAllowReturnTransitionOverlap">@bool/true_bool</item>

    <item name="android:windowEnterTransition">@transition/window_transition.xml</item>
    <item name="android:windowExitTransition">@transition/window_transition.xml</item>
    <item name="android:fragmentEnterTransition">@transition/window_transition.xml</item>
    <item name="android:fragmentReturnTransition">@transition/window_transition.xml</item>
    <item name="android:fragmentReenterTransition">@transition/window_transition.xml</item>

    <!-- Shared Element Transactions -->
    <item name="android:windowSharedElementEnterTransition">@transition/shared_elements_transform.xml</item>
    <item name="android:windowSharedElementExitTransition">@transition/shared_elements_transform.xml</item>

    <item name="android:fragmentSharedElementEnterTransition">@transition/shared_elements_transform.xml</item>
    <item …
Run Code Online (Sandbox Code Playgroud)

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

8
推荐指数
1
解决办法
7943
查看次数

如何在Android 5.0上的活动之间转换时排除ActionBar

在Android 5.0 Lollipop上,

我有两个活动A和B.活动B有一个slie从底部进入过渡带有Overlay ActionBar,但是当B显示时,ActionBar也从下到上滑动.

如何阻止动作栏进行幻灯片切换.系统操作栏有一个我可以添加到排除目标的ID吗?

谢谢!

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

8
推荐指数
2
解决办法
6967
查看次数

BottomSheetDialog 片段共享元素转换实现?

我有一个RecyclerView带有项目列表的片段。因此,当我单击某个项目时,BottomSheetDialog会打开一个。两种观点都有一些共同的观点。所以我想为此添加共享转换。我搜索 StackOverflow,但没有找到任何有关bottomsheetdialog.

所以我的问题是,是否可以将共享元素转换添加到BottomSheetDialog. 既然这是一个Fragment,应该有办法吧?有没有人有这方面的经验。?

我正在BottomSheetDialog像这样打开。

holder.cardAgenda.setOnClickListener(view -> {
                AgendaBottomSheet bottomSheetFragment = AgendaBottomSheet.newInstance();
                Bundle bundle = new Bundle();
                bundle.putString("documentId", getSnapshots().getSnapshot(position).getId());
                bundle.putString("name", model.getName());
                bundle.putString("description", model.getDescription());
                bundle.putString("date", dateFormat.format(timeStamp));
                bundle.putString("location", model.getLocation());
                bundle.putString("status", model.getStatus());
                bottomSheetFragment.setArguments(bundle);
                bottomSheetFragment.show(Objects.requireNonNull(getFragmentManager()), "Agenda Details");
            });
Run Code Online (Sandbox Code Playgroud)

那么有没有一种方法可以像fragment中的方法一样设置共享转换addSharedElement()

android android-transitions material-design shared-element-transition bottom-sheet

8
推荐指数
0
解决办法
592
查看次数