Android 动画后视图不会返回到中心
所以我有一个动画视图,我想在动画完成后回到屏幕的中心。我使用此代码将视图中心移到屏幕中心:Android 动画后视图不会返回到中心,android,animation,kotlin,position,android-animation,Android,Animation,Kotlin,Position,Android Animation,所以我有一个动画视图,我想在动画完成后回到屏幕的中心。我使用此代码将视图中心移到屏幕中心: val screencenterX = (FullscreenActivity.metrics.widthPixels - mContentView.width) / 2 val screencenterY = (FullscreenActivity.metrics.heightPixels - mContentView.height) / 2 val soultostartx
val screencenterX = (FullscreenActivity.metrics.widthPixels - mContentView.width) / 2
val screencenterY = (FullscreenActivity.metrics.heightPixels - mContentView.height) / 2
val soultostartx = ObjectAnimator.ofFloat(mContentView, "x", screencenterX.toFloat()).apply {
duration = 1
}
val soultostarty = ObjectAnimator.ofFloat(mContentView, "y", screencenterY.toFloat()).apply {
duration = 1
}
fun toStart() = AnimatorSet().apply {
play(soultostartx).with(soultostarty)
start()
}
toStart()
这在纵向模式下工作正常,但一旦手机旋转到横向模式,视图就会移动到屏幕左下角的某个位置。知道为什么吗?获取屏幕中心的数学应该是相同的,还是不同的
-----------------编辑------------------
根据ismail alaoui的回答,我在活动中添加了以下代码:
override fun onConfigurationChanged(myConfig: Configuration) {
super.onConfigurationChanged(myConfig)
val orient = resources.configuration.orientation
when (orient) {
Configuration.ORIENTATION_LANDSCAPE -> {
(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE)
println("landscape orient")
}
Configuration.ORIENTATION_PORTRAIT -> {
(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT)
println("portrait orient")
}
else -> {
(ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED)
println("else orient")
}
}
}
我已经添加了对println的调用,以查看是否真的调用了onConfigurationChanged,并且确实如此。但这似乎毫无效果。有什么我需要添加到when案例中的吗?之所以会这样,是因为当您打开手机时,您的视图会被重新创建,您应该在活动中覆盖此方法:
@Override
public void onConfigurationChanged(Configuration myConfig)
{
super.onConfigurationChanged(myConfig);
int orient = getResources().getConfiguration().orientation;
switch(orient)
{
case Configuration.ORIENTATION_LANDSCAPE: setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
break;
case Configuration.ORIENTATION_PORTRAIT:
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
break;
default:
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED);
}
}
别忘了添加android:configChange:orientation |屏幕大小
添加到清单中的活动标记
编辑
kotlin:setRequestedOrientation在转换为kotlin时获取未解决的引用错误。你知道怎么处理吗?谢谢你的链接!