我试图将一个ImageView动画设置为Android API级别21中两个活动之间的另一个位置.由于Android L预览中的"MoveImage"已被删除,我使用" ChangeImageTransform "代替,但文档中的示例代码无法解决(这两个图像分别动画).
<transitionSet xmlns:android="http://schemas.android.com/apk/res/android">
<changeImageTransform>
<targets>
<target android:targetId="@id/ivA" />
<target android:targetId="@id/ivB" />
</targets>
</changeImageTransform>
</transitionSet>
Run Code Online (Sandbox Code Playgroud)
有没有工作的例子?谢谢!
android android-5.0-lollipop activity-transition shared-element-transition
在Android Lollipop中,Activity#postponeEnterTransition()
和Activity#startPostponedEnterTransition()
方法使Activity能够延迟开始进入和退出共享元素转换,直到加载所有数据.这些非常适合Activity
过渡.
有没有办法在使用Fragment
过渡时达到相同的效果?
android android-5.0-lollipop activity-transition shared-element-transition fragment-transitions
我正在尝试Activity Transitions,当我在我的values-21/styles.xml中粘贴下面的代码时,我收到错误:
无法解析符号'@ transition/explode'
<style name="BaseAppTheme" parent="android:Theme.Material">
<!-- enable window content transitions -->
<item name="android:windowContentTransitions">true</item>
<!-- specify enter and exit transitions -->
<item name="android:windowEnterTransition">@transition/explode</item>
<item name="android:windowExitTransition">@transition/explode</item>
<!-- specify shared element transitions -->
<item name="android:windowSharedElementEnterTransition">
@transition/change_image_transform</item>
<item name="android:windowSharedElementExitTransition">
@transition/change_image_transform</item>
</style>
Run Code Online (Sandbox Code Playgroud) android material-design android-5.0-lollipop activity-transition
我正在对Android L中的共享元素转换进行一些基本的探索.我设置的简单示例在活动转换期间有一个从屏幕顶部转换到屏幕底部的图像视图,并且我已经延长了转换持续时间所以我可以看到工作正常.到目前为止,我遇到了两个问题,试图了解共享元素转换的工作原理.
1)仅使用Enter/Return转换(Exit/Reenter设置为null).输入转换很好,但是当按下后退按钮时,视图会动画一段时间,停止,然后重新出现在最终位置.似乎与此问题类似,但我已将所有Exist/Reenter过渡设置为null,因此不确定为什么会发生这种情况.
2)仅使用退出/重新转换时(Enter/Return设置为null).没有任何事情发生,视图在屏幕上向下转换,如下面的默认输入转换(300毫秒持续时间),当按下后退时,视图弹回到其原始位置.
如何使用退出/重新转换?
这是我的代码:
activity_main.xml中
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/imageView"
android:src="@drawable/ic_launcher"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Animate!"
android:id="@+id/button"
android:layout_centerVertical="true"
android:layout_alignParentStart="true" />
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)
activity_second.xml
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/imageView2"
android:src="@drawable/ic_launcher"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true" />
Run Code Online (Sandbox Code Playgroud)
MainActivity.java
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getWindow().requestFeature(Window.FEATURE_CONTENT_TRANSITIONS);
getWindow().requestFeature(Window.FEATURE_ACTIVITY_TRANSITIONS);
getWindow().setAllowEnterTransitionOverlap(false);
getWindow().setAllowReturnTransitionOverlap(false);
getWindow().setSharedElementExitTransition(exitTransition());
getWindow().setSharedElementReenterTransition(reenterTransition());
//getWindow().setSharedElementExitTransition(null);
//getWindow().setSharedElementReenterTransition(null);
setContentView(R.layout.activity_main);
final View iView = findViewById(R.id.imageView);
iView.setTransitionName("image");
final Button button = (Button)findViewById(R.id.button);
button.setOnClickListener(new …
Run Code Online (Sandbox Code Playgroud) android android-5.0-lollipop activity-transition shared-element-transition
我创建了一个自定义循环显示转换,用作Activity的enter转换的一部分(具体来说,我通过调用将转换设置为窗口的enter转换Window#setEnterTransition()
):
public class CircularRevealTransition extends Visibility {
private final Rect mStartBounds = new Rect();
/**
* Use the view's location as the circular reveal's starting position.
*/
public CircularRevealTransition(View v) {
int[] loc = new int[2];
v.getLocationInWindow(loc);
mStartBounds.set(loc[0], loc[1], loc[0] + v.getWidth(), loc[1] + v.getHeight());
}
@Override
public Animator onAppear(ViewGroup sceneRoot, final View v, TransitionValues startValues, TransitionValues endValues) {
if (endValues == null) {
return null;
}
int halfWidth = v.getWidth() / 2;
int halfHeight = v.getHeight() / …
Run Code Online (Sandbox Code Playgroud) android android-5.0-lollipop activity-transition shared-element-transition
我一直在搞乱Android 5.0中的新API,并且一直试图弄清楚是否有可能ViewGroup
在活动转换期间将a 和它的一个子项分别作为共享元素动画化.
下面的屏幕截图给出了我想要实现的简化示例:
在第一个活动中,深灰色框是ViewGroup
屏幕中心,红色框是其子框View
(我在这里可以找到我使用的布局XML代码).当用户点击深灰色框时,深灰色框应逐渐向上扩展以填充第二个活动的背景.同时,红色框应逐渐缩放并重新定位在第二个活动的左上角.
Activity
我用来执行转换的代码很简单:
/** FirstActivity.java */
public class FirstActivity extends Activity implements View.OnClickListener {
private View mOuterBox, mInnerBox;
@Override
protected void onCreate(Bundle savedInstanceState) {
getWindow().requestFeature(Window.FEATURE_ACTIVITY_TRANSITIONS);
getWindow().setSharedElementExitTransition(new ChangeBounds());
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_first);
mOuterBox = findViewById(R.id.outer_box);
mInnerBox = findViewById(R.id.inner_box);
mOuterBox.setOnClickListener(this);
}
@Override
public void onClick(View v) {
Pair<View, String> outerBox = Pair.create(mOuterBox, mOuterBox.getTransitionName());
Pair<View, String> innerBox = Pair.create(mInnerBox, mInnerBox.getTransitionName());
Bundle bundle = ActivityOptions.makeSceneTransitionAnimation(this, outerBox, innerBox).toBundle();
startActivity(new Intent(this, …
Run Code Online (Sandbox Code Playgroud) android android-5.0-lollipop activity-transition shared-element-transition
我对List<View> sharedElementSnapshots
传递给SharedElementCallback
's onSharedElementStart()
和onSharedElementEnd()
方法的论点感到困惑.据推测,这些快照视图旨在用作共享元素转换期间的临时占位符.例如,假设活动A
显示缩略图图像,活动B
显示同一图像的高分辨率版本,需要几秒钟才能加载并显示.快照视图可以暂时用于替代,而不必等待高分辨率图像完成加载.
我很困惑的部分是如何首先使用快照视图.它们应该被添加到活动的视图层次结构中吗?或者也许它们应该被添加到窗口装饰视图中ViewOverlay
?无论哪种方式,我看不出它如何可能在这一点上切换过渡共享元素的观点...... onMapSharedElements()
被调用之前onSharedElementStart()
和onSharedElementEnd()
,这意味着过渡名字的共享元素最终映射View
旨意已经建立.
任何提示将不胜感激.
android android-5.0-lollipop activity-transition shared-element-transition sharedelementcallback
我遇到了一个关于ImageView
Android 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
我正试图围绕新的Activity
Transition
框架Lollipop
.活动过渡工作非常简单,这里有一些基本信息,但是Fragment
Transition
没有记录,我无法让它工作.我试过这个用例(在Android中很常见):
案例1:ActA + FragA - > ActB + FragB
与sharedElement作为一个图像中FragA
和FragB
.我没有提出工作代码,所以我退后一步尝试了
案例2:ActA + FragA - > ActB
在和上使用sharedElement.动画不起作用,我只能看到当我点击FragA上的图像时,图像消失,在动画的持续时间后,它会在ActB中弹出.FragA之外的共享视图,但在ActA(例如)内部正确动画.FragA
ActB
Toolbar
在这种情况下,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
在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
android ×10