是否可以TextView通过共享的元素过渡为a动画,并在进行动画时另外从颜色过渡?
我正在从活动中的文本过渡到工具栏的文本,因此想在过渡时切换颜色...
android transition android-transitions shared-element-transition
AndroidStudio 2.3 Beta 1
Run Code Online (Sandbox Code Playgroud)
我试图让转换与片段一起工作,我使用的图像如何不转换.它只是正常弹出.
我已经创建了一个简单的应用程序来尝试让它工作.我有2个片段ListMovieFragment和DetailMovieFragment.1 MainActivity.
用户将单击图像ListMovieFragment以转换为DetailMovieFragment.
这是我的Transition xml change_image_transform:
<?xml version="1.0" encoding="utf-8"?>
<transitionSet xmlns:android="http://schemas.android.com/apk/res/android">
<changeImageTransform/>
</transitionSet>
Run Code Online (Sandbox Code Playgroud)
ListMovieFragment:
public class ListMovieFragment extends Fragment {
public interface MovieSelectedListener {
void onMovieSelected(int movieId);
}
private MovieSelectedListener mMovieSelectedListener;
public ListMovieFragment() {
}
@Override
public void onAttach(Context context) {
super.onAttach(context);
mMovieSelectedListener = (MovieSelectedListener)context;
}
@Override
public void onDetach() {
super.onDetach();
mMovieSelectedListener = null;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { …Run Code Online (Sandbox Code Playgroud) android android-fragments android-transitions shared-element-transition
我想用自定义翻译动画开始一个新活动,所以我在 xml 中对我的动画使用 overridePendingTransition。
overridePendingTransition(R.anim.enter_from_right, R.anim.exit_to_left)
Run Code Online (Sandbox Code Playgroud)
enter_from_right.xml:
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:shareInterpolator="false">
<translate
android:fromXDelta="100%" android:toXDelta="0%"
android:fromYDelta="0%" android:toYDelta="0%"
android:duration="350" />
Run Code Online (Sandbox Code Playgroud)
有什么方法可以为活动过渡以编程方式修改/创建动画?在这种情况下,使用特定值动态修改 fromXDelta
android android-animation android-activity android-transitions activity-transition
我正在尝试setEnterTransition使用explode.xml文件。
我尝试了这个
<?xml version="1.0" encoding="utf-8"?>
<transitionManager xmlns:android="http://schemas.android.com/apk/res/android">
<transition android:transition="@transition/explode" />
</transitionManager>
Run Code Online (Sandbox Code Playgroud)
和这个
<?xml version="1.0" encoding="utf-8"?>
<transitionSet xmlns:android="http://schemas.android.com/apk/res/android">
<explode
android:duration="500"
android:interpolator="@android:interpolator/bounce" />
</transitionSet>
Run Code Online (Sandbox Code Playgroud)
但是爆炸动画没有用,有什么想法吗?
是否可以使用android导航组件从抽屉布局中打开片段来更改过渡效果。android 文档中没有任何内容。
我正在尝试使用 alpha 和 motionLayout 制作淡入淡出的效果,但似乎不起作用。
这是我想要淡出的 imageView。
<ImageView
android:id="@+id/tijeras"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginTop="16dp"
android:layout_marginEnd="8dp"
android:contentDescription="@string/tijeras"
android:src="@drawable/ic_tijeras" />
</android.support.constraint.motion.MotionLayout>
Run Code Online (Sandbox Code Playgroud)
这是运动文件
<?xml version="1.0" encoding="utf-8"?>
<MotionScene xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:android="http://schemas.android.com/apk/res/android">
<Transition
app:duration="2000"
app:constraintSetStart="@+id/start"
app:constraintSetEnd="@+id/end">
<KeyFrameSet>
<KeyAttribute
app:framePosition="0"
app:motionTarget="@id/tijeras"
android:alpha="1.0"/>
<KeyAttribute
app:framePosition="50"
app:motionTarget="@id/tijeras"
android:alpha="0.0"/>
</KeyFrameSet>
</Transition>
<ConstraintSet android:id="@+id/start">
<Constraint android:id="@+id/tijeras"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:alpha="1.0"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/logo"/>
</ConstraintSet>
<ConstraintSet android:id="@+id/end">
<Constraint android:id="@+id/tijeras"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:alpha="1.0"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/logo"/>
</ConstraintSet>
</MotionScene>
Run Code Online (Sandbox Code Playgroud)
我可以看到图像,但它没有进行 alpha 输入和输出。任何的想法?我需要触发它才能启动吗?
我通常自己解决问题,但这次我真的很生气,找不到合适的解决办法。
设想:
我有两个片段让我们说A和B。
在片段 A 中,我从 Rest API 填充 RecyclerView(后来只有 RV)。
在片段 B 中,我有 CollapsingToolbarLayout 的“详细视图”。
当我单击RV 中的项目时,我正在打开带有过渡的片段 B和一个共享元素,即AppCompatImageView,我在其中设置了本地可绘制对象。在片段 B 中是CollapsingToolbarLayout 中的图像。
共享元素转换在片段 B 中有效 - 图像移动正确。当我单击后退按钮并且图像移回其在 RV 中的原始位置时,过渡也有效。
但是这里出现了一个我无法解决的问题。在两个片段中,特定图像都被卡在位置上,当我滚动 RV 或 CollapsingToolbarLayout 视图时,视图没有改变 - 在片段 A 中,滚动 RV 时图像没有移动,而在片段 B 中,图像在折叠/展开更改时没有隐藏。
有没有人遇到过这个问题,因为我不并且真的不理解这种行为。经过多年的发展,我从未发生过。
这是从片段 B 返回后片段 A 的屏幕截图:
在这里,我正在执行带有转换的片段事务:
fun replaceFragmentWithTransition(context: Context,
sharedElement: View,
fm: FragmentManager?,
layoutContainer: Int,
fragment: Fragment, …Run Code Online (Sandbox Code Playgroud) 我做了一个简单的例子来证明ActivityOptions.makeSceneTransitionAnimation(activity).
我有 3 个活动:A、B 和 C。流程很简单:A -> B -> C
所有活动都具有相同的风格:
<style name="TransitionsTheme" parent="Theme.MaterialComponents.Light.NoActionBar">
<item name="android:windowEnterTransition">@transition/slide_in_from_bottom</item>
<item name="android:windowExitTransition">@transition/slide_out_to_bottom</item>
</style>
Run Code Online (Sandbox Code Playgroud)
每当我去:不播放A -> B -> C -> B (back button) -> A (back button)最后一个动画(A -> C)。
仅在执行时它工作正常 A -> B -> A (back button)
以下是我开始活动的方式:
fun start(activity: Activity) {
val intent = Intent(activity, TransitionActivityA::class.java) //or B or C
val transitionsOptions = ActivityOptions.makeSceneTransitionAnimation(activity)
activity.startActivity(intent, transitionsOptions.toBundle())
}
Run Code Online (Sandbox Code Playgroud)
演示该问题的应用程序:https : //github.com/jkwiecien/AndroidCaseStudies/tree/transitions
使用分支transitions
这是Android错误还是我做错了什么?
android android-animation android-support-library android-transitions
我一直在尝试使用android站点上显示的示例示例在多个共享元素上实现动画转换
ActivityOptions options = ActivityOptions.makeSceneTransitionAnimation(this,
Pair.create(view1, "agreedName1"),
Pair.create(view2, "agreedName2"));
Run Code Online (Sandbox Code Playgroud)
但是当我尝试在Eclipse IDE中的示例应用程序上实现此代码时,它说
The method makeSceneTransitionAnimation(Activity, View, String) in the type ActivityOptions is not applicable for the arguments (MyActivity, Pair<View,String>, Pair<View,String>)
Run Code Online (Sandbox Code Playgroud)
我可以在那里使用一些帮助.谢谢.
我正在使用overridePendingTransition来设置我自己的活动转换.一切正常,除了我无法改变动画的持续时间,它被忽略.
slide_down.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/accelerate_decelerate_interpolator">
<translate
android:duration="2000"
android:fromYDelta="0"
android:toYDelta="100%p"
android:zAdjustment="top"/>
</set>
Run Code Online (Sandbox Code Playgroud)
stay.xml
<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="2000"
android:fromYDelta="0%p"
android:toYDelta="0%p"
android:zAdjustment="top"/>
Run Code Online (Sandbox Code Playgroud)
持续时间设置为2000毫秒,但动画仍然只是一秒的一小部分.即使将其改为像10000这样的极端值也没有任何作用.
如果我在设置中更改开发人员选项中的动画,则动画持续时间对应于给定的设置.
Java代码供参考:
MainActivity.java
public void games(View view){
startActivity(new Intent(MainActivity.this, GamesActivity.class));
overridePendingTransition(R.anim.slide_up, R.anim.stay);
}
Run Code Online (Sandbox Code Playgroud)
谁有想法?
animation android android-transitions overridependingtransition