Android - animate() 在不同屏幕尺寸下的问题
Android - Problems with animate() in different screen sizes
我在使用不同屏幕尺寸的 animate() 时遇到了这个问题。我在我的 s9+ 中测试所有内容,当我在 Moto g3 上测试相同内容时,我使用 animate().translationY 设置动画的布局是一场灾难。
所以我在谷歌上搜索了一下,当然我是以错误的方式做事的。我在这里发现我必须使用这段代码:
Float distance = TypedValue.applyDimension(
TypedValue.COMPLEX_UNIT_DIP, 770,
getResources().getDisplayMetrics()
);
(770) 是我的值。
然后cardViewBottom.animate().translationY(distance).setDuration(1);
但是我的成绩不是很好。在我的 s9+ 中,770 是正确的值,而在我的 moto g3(较小的设备)中,该值是 560。我不知道该怎么办。
试试这个:
val metrics = DisplayMetrics()
windowManager?.defaultDisplay?.metrics(metrics)
val width = metrics.density
val distance = TypedValue.applyDimension(
TypedValue.COMPLEX_UNIT_DIP, width,
resources.displayMetrics)
不确定 TypedValue.applyDimension 的参数是什么
如果你需要像素那么 metrics.widthPixels
我在使用不同屏幕尺寸的 animate() 时遇到了这个问题。我在我的 s9+ 中测试所有内容,当我在 Moto g3 上测试相同内容时,我使用 animate().translationY 设置动画的布局是一场灾难。 所以我在谷歌上搜索了一下,当然我是以错误的方式做事的。我在这里发现我必须使用这段代码:
Float distance = TypedValue.applyDimension(
TypedValue.COMPLEX_UNIT_DIP, 770,
getResources().getDisplayMetrics()
);
(770) 是我的值。
然后cardViewBottom.animate().translationY(distance).setDuration(1);
但是我的成绩不是很好。在我的 s9+ 中,770 是正确的值,而在我的 moto g3(较小的设备)中,该值是 560。我不知道该怎么办。
试试这个:
val metrics = DisplayMetrics()
windowManager?.defaultDisplay?.metrics(metrics)
val width = metrics.density
val distance = TypedValue.applyDimension(
TypedValue.COMPLEX_UNIT_DIP, width,
resources.displayMetrics)
不确定 TypedValue.applyDimension 的参数是什么
如果你需要像素那么 metrics.widthPixels