标签: android-transitions

'收件箱通过gmail'为电子邮件(Android)打开和关闭过渡

任何人都可以建议我使用Gmail的Android应用程序在Inbox中使用的打开和关闭过渡的示例.

我确实找到了这个例子.但是,还有其他什么吗?

android-transitions google-inbox

10
推荐指数
0
解决办法
812
查看次数

在null对象引用上的TransitionSet ArrayList.size()

本指南开始使用共享元素和动画实现打开的图像.

https://android-developers.googleblog.com/2018/02/continuous-shared-element-transitions.html

但抓住了一个例外:

java.lang.NullPointerException: Attempt to invoke virtual method 'int java.util.ArrayList.size()' on a null object reference
at android.support.transition.TransitionSet.setDuration(TransitionSet.java:196)
at android.support.transition.TransitionSet.setDuration(TransitionSet.java:60)
at android.support.transition.Transition.<init>(Transition.java:278)
at android.support.transition.TransitionSet.<init>(TransitionSet.java:91)
at android.support.transition.TransitionInflater.createTransitionFromXml(TransitionInflater.java:151)
at android.support.transition.TransitionInflater.inflateTransition(TransitionInflater.java:70)
Run Code Online (Sandbox Code Playgroud)

打电话时

TransitionInflater.from(context).inflateTransition(R.transition.my_transition)
Run Code Online (Sandbox Code Playgroud)

android kotlin android-transitions

10
推荐指数
2
解决办法
1573
查看次数

未调用 Android MotionLayout 过渡侦听器

我正在尝试制作幻灯片动画。为此,我使用 MotionLayout 和包含两个 ConstraintSet 的 MotionScene。

幻灯片动画效果很好。但是我在 LogCat 中收到一个错误:

E/MotionLayout:警告没有 app:layoutDescription 标签

view_slider.xml

<androidx.constraintlayout.motion.widget.MotionLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/motion_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/white"
app:layoutDescription="@xml/scene_slider"
app:showPaths="true">

<View
    android:id="@+id/btn_slide"
    android:layout_width="64dp"
    android:layout_height="64dp"
    android:background="@color/grey26" />
</androidx.constraintlayout.motion.widget.MotionLayout>
Run Code Online (Sandbox Code Playgroud)

场景滑块.xml:

<MotionScene xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:motion="http://schemas.android.com/apk/res-auto">

    <Transition
        motion:constraintSetStart="@+id/start"
        motion:constraintSetEnd="@+id/end"
        motion:duration="1000">

        <OnSwipe
            motion:touchAnchorId="@+id/btn_slide"
            motion:touchAnchorSide="right"
            motion:dragDirection="dragRight"/>

    </Transition>

    <ConstraintSet android:id="@+id/start">
        <Constraint
            android:id="@+id/btn_slide"
            android:layout_width="64dp"
            android:layout_height="64dp"
            android:layout_marginStart="8dp"
            motion:layout_constraintBottom_toBottomOf="parent"
            motion:layout_constraintStart_toStartOf="parent"
            motion:layout_constraintTop_toTopOf="parent" />
    </ConstraintSet>

    <ConstraintSet android:id="@+id/end">
        <Constraint
            android:id="@+id/btn_slide"
            android:layout_width="64dp"
            android:layout_height="64dp"
            android:layout_marginEnd="8dp"
            motion:layout_constraintBottom_toBottomOf="parent"
            motion:layout_constraintEnd_toEndOf="parent"
            motion:layout_constraintTop_toTopOf="parent" />
    </ConstraintSet>

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

SliderView.kt:

class SliderView @JvmOverloads constructor(
    context: Context,
    attrs: AttributeSet? = null,
    defStyleAttr: Int …
Run Code Online (Sandbox Code Playgroud)

android android-layout kotlin android-transitions android-motionlayout

10
推荐指数
1
解决办法
5569
查看次数

共享元素转换为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
查看次数

有人知道如何正确使用onActivityReenter吗?

我刚刚意识到android有另一种叫做onActivityReenter的方法.

这个是来做什么的?它可以像onActivityResult一样使用吗?

文档说用于转换,但不是100%用于转换.

android android-intent android-activity android-transitions

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

另一项活动出现,占据屏幕尺寸的一半

我有一个按钮,点击打开另一个活动,从下面出来,覆盖一半的屏幕.我搜索了它但没有得到任何有用的方法,除了overridePendingTransition函数,这对于获取活动转换动画很有用,但这并没有解决我的问题.我知道这是在谷歌视频群聊中完成的,如图所示,但找不到任何有用的解决方案.

当我们按下按钮时,此活动会出现并覆盖屏幕尺寸的一半 当我们按下按钮时,此活动会出现并覆盖屏幕尺寸的一半

当我们向上滚动活动成为我们的主要活动 当我们向上滚动活动成为我们的主要活动

知道如何做到这一点?

谢谢

android android-activity android-transitions material-design

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

转换后onClick不起作用

我正在尝试学习简单的TransitionManager工作,但我有点卡住......

我的目标是通过图像点击在两个场景之间进行切换.但在第一次图像点击和第一次场景变换后,我无法捕捉图像点击...

这是我的片段代码:

@Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View rootView = inflater.inflate(R.layout.fragment_main, container, false);
        ViewGroup sceneRoot = (ViewGroup)rootView.findViewById(R.id.relative);

        final Transition transition = new ChangeBounds();
        transition.setDuration(3000);

        final Scene scene1 = Scene.getSceneForLayout(sceneRoot, R.layout.scene1, getActivity());
        final Scene scene2 = Scene.getSceneForLayout(sceneRoot, R.layout.scene2, getActivity());

        ImageView image = (ImageView)rootView.findViewById(R.id.image);
        image.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (!testBoo){
                    TransitionManager.go(scene2, transition);
                    testBoo = true;
                } else {
                    testBoo = false;
                    TransitionManager.go(scene1, transition);
                }

            }
        });
        return rootView;
    }
Run Code Online (Sandbox Code Playgroud)

片段xml:

<RelativeLayout …
Run Code Online (Sandbox Code Playgroud)

android onclick android-4.4-kitkat android-transitions

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

共享元素转换 - 仅为共享视图的可见部分设置动画

我正在使用类似于Google日历的应用...

  1. 有事件,当用户单击一个事件时,事件会增长并转换为详细信息视图.
  2. 共享视图(事件)位于ScrollView内部,因此在某些时候这些视图可能部分可见.
  3. 问题是,当选择一个部分可见的视图时,将显示完整的视图,然后运行动画.

以下是问题的捕获: 在此输入图像描述

我该怎么做才能使转换仅使视图的可见部分为其设置动画?

这是我的过渡期:

<changeBounds xmlns:android="http://schemas.android.com/apk/res/android">
   <arcMotion android:minimumHorizontalAngle="15"
       android:minimumVerticalAngle="0"
       android:maximumAngle="90"/>
</changeBounds>
Run Code Online (Sandbox Code Playgroud)

android android-transitions shared-element-transition

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

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
查看次数