Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/214.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 活动和共享视图之间的动画:动画结尾的glitchy/hack?_Android_Android Animation_Android Transitions_Shared Element Transition_Activity Transition - Fatal编程技术网

Android 活动和共享视图之间的动画:动画结尾的glitchy/hack?

Android 活动和共享视图之间的动画:动画结尾的glitchy/hack?,android,android-animation,android-transitions,shared-element-transition,activity-transition,Android,Android Animation,Android Transitions,Shared Element Transition,Activity Transition,所以,我面临的问题是,我在两个活动和两个共享视图之间制作的动画看起来不太好 问题在于,当从Activity2返回Activity1时,共享的文本视图会在动画结束时闪烁,显示Activity2的“较大文本”的时间只有几分之一秒,因此它会“闪烁” 活动1(包含三个项目的RecyclerView): 活动2(详情): 我一边拍动画,一边拍摄屏幕。从Activity2返回Activity2时,您可以看到文本在最后闪烁。此视频(36MB,抱歉大小)显示: 问题是:我做错了什么?为什么它会那样眨眼?我

所以,我面临的问题是,我在两个活动和两个共享视图之间制作的动画看起来不太好

问题在于,当从Activity2返回Activity1时,共享的文本视图会在动画结束时闪烁,显示Activity2的“较大文本”的时间只有几分之一秒,因此它会“闪烁”

活动1(包含三个项目的RecyclerView):

活动2(详情):

我一边拍动画,一边拍摄屏幕。从Activity2返回Activity2时,您可以看到文本在最后闪烁。此视频(36MB,抱歉大小)显示:

问题是:我做错了什么?为什么它会那样眨眼?我在其他动画上看到视频,它们都非常平滑和漂亮。

我已经测试了不同类型的转换(changeBounds、explode等),但总有一些奇怪的事情发生。任何提示、想法都将不胜感激=)

我的代码

主要活动(活动1):

package se.snapcode.lollipoptest;
导入android.app.Activity;
导入android.app.ActivityOptions;
导入android.content.Intent;
导入android.os.Bundle;
导入android.support.v4.view.GestureDetectorCompat;
导入android.support.v7.widget.DefaultItemAnimator;
导入android.support.v7.widget.LinearLayoutManager;
导入android.util.Pair;
导入android.view.GestureDetector;
导入android.view.Menu;
导入android.view.MenuItem;
导入android.support.v7.widget.RecyclerView;
导入android.view.MotionEvent;
导入android.view.view;
导入android.widget.TextView;
导入android.widget.Toast;
公共类MainActivity扩展了活动{
私人回收视图mRecyclerView;
私用MyAdapter mAdapter;
private RecyclerView.LayoutManager MLLayoutManager;
手势检测器Compat手势检测器;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mRecyclerView=(RecyclerView)findViewById(R.id.my\u recycler\u视图);
//如果您知道这些更改,请使用此设置提高性能
//在内容中,不要更改RecyclerView的布局大小
mRecyclerView.setHasFixedSize(true);
//使用线性布局管理器
mLayoutManager=新的LinearLayoutManager(此);
mRecyclerView.setLayoutManager(mllayoutmanager);
//指定适配器(另请参见下一个示例)
字符串[]字符串=新字符串[3];
字符串[0]=“A1”;
字符串[1]=“A2”;
字符串[2]=“A3”;
mAdapter=新的MyAdapter(字符串);
mRecyclerView.setAdapter(mAdapter);
setOnItemClickListener(新的OnItemClickListener(){
@凌驾
公共虚线单击(视图,int位置){
final TextView headerView=(TextView)view.findViewById(R.id.textView1);
final TextView TextView=(TextView)view.findViewById(R.id.textView2);
意向意向=新意向(MainActivity.this、DetailsActivity.class);
intent.putExtra(“header”,headerView.getText().toString());
intent.putExtra(“text”,textView.getText().toString());
ActivityOptions=ActivityOptions.MakeScenetTransitionAnimation(MainActivity.this,Pair.create((视图)headerView,“header”),
创建((视图)文本视图,“文本”);
startActivity(intent,options.toBundle());
}
});
RecyclerView.itemEdition.itemEdition=
新的DividerItemDecoration(这是DividerItemDecoration.VERTICAL_列表);
mRecyclerView.附加装饰(项目装饰);
//这是默认设置;实际上,只有自定义ItemAnimators才需要此调用
setItemAnimator(新的DefaultItemAnimator());
}
}
详细活动(活动2):

package se.snapcode.lollipoptest;
导入android.app.Activity;
导入android.os.Bundle;
导入android.view.Menu;
导入android.view.MenuItem;
导入android.widget.TextView;
公共类详细信息活动扩展活动{
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_详细信息);
字符串头=getIntent().getStringExtra(“头”);
字符串text=getIntent().getStringExtra(“文本”);
TextView tv1=(TextView)findViewById(R.id.tv\u details\u头);
tv1.setText(标题);
TextView tv2=(TextView)findViewById(R.id.tv\u details\u text);
tv2.setText(文本);
}
}
以及布局,首先是RecyclerView列表中的my_text_视图:


以及activity_details.xml:


以及转换xml(在/res/transition中):


还有styles.xml


真的
@安卓:过渡/左滑
@安卓:过渡/幻灯片右
@转换/更改\u图像\u变换
@转换/更改\u图像\u变换

问题在于,您试图使用
ChangeBounds
转换将
TextView
的大小设置为共享元素的动画。这将不起作用,因为
ChangeBounds
的工作方式。
ChangeBounds
转换分析视图在转换开始和结束时的布局边界,并在两者之间设置动画
ChangeBounds
适用于任意视图,因此在转换过程中,它不会调用
TextView
上的
setTextSize()
。。。如果您想查看
TextView