【问题标题】:Are the numerical parameters of TranslateAnimation in dp or px?TranslateAnimation的数值参数是dp还是px?
【发布时间】:2020-01-09 13:41:03
【问题描述】:

我正在阅读the documentation of TranslateAnimation,发现这是 TranslateAnimation 类的众多构造函数之一:

public TranslateAnimation (float fromXDelta, 
            float toXDelta, 
            float fromYDelta, 
            float toYDelta)

进一步阅读每个参数的含义,我发现fromXDelta 的意思是:

在动画开始时应用 X 坐标的变化

[...其他参数以此类推。]


问题:

我了解这些参数的含义,但我不知道如何表示它们。指标和参考点是什么?它们的单位是 dp 还是像素?

【问题讨论】:

  • 像素。基本上,代码方面的大部分内容——除了单位转换方法等——都是以像素为单位的。
  • 挑个卖兄弟(*~*)

标签: android translate-animation


【解决方案1】:

就像@Mike M. 所说,代码方面的大多数维度都在 像素

但是,这不是障碍,因为您仍然可以轻松地从 dp 转换为 px 并返回。您可以使用以下两个函数来实现此目的:


dp 到 px:

public float convertDpToPixel(float dp, Context context) {
    return dp * ((float) context.getResources().getDisplayMetrics().densityDpi / DisplayMetrics.DENSITY_DEFAULT);
}


px转dp

public float convertPixelsToDp(float px, Context context) {
    return px / ((float) context.getResources().getDisplayMetrics().densityDpi / DisplayMetrics.DENSITY_DEFAULT);
}


PS:

如果您需要在int 而不是float 中返回的dp 值,您可以在Math.round() 中传递值。

我希望这对那里的人有所帮助。编码愉快!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-01-08
    • 2015-06-22
    • 2014-08-21
    • 2017-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多