Android Java确定代码中的像素密度

时间:2013-09-05 14:30:41

标签: android animation pixel

我有以下动画:

    ImageView fallingLeave = (ImageView) rootView.findViewById(R.id.lemonpiece1_large);
                   mButtonProxy = AnimatorProxy.wrap(fallingLeave);

                   // Set up the path we're animating along
                   AnimatorPath path = new AnimatorPath();
                   path.moveTo(0,0);
                   path.curveTo(0, 0, 0 , 80, -80, 70);
                   fallingLeave.setRotation(80);
                   path.curveTo(-80, 70, -80, 120, 80, 140);
                   path.curveTo(80, 140, 80, 190, -80, 210);


                   // Set up the animation
                   final ObjectAnimator anim = ObjectAnimator.ofObject(this, "buttonLoc",
                           new PathEvaluator(), path.getPoints().toArray());
                   anim.setDuration(2000);


                   anim.start();

问题是路径是以像素为单位固定的。我想要做的是设置路径像素独立。任何想法如何实现?

我试图将变量链接到dimension.xml,但它没有用,我宁愿用像素密度比MULTIPLY像素路径,但我不知道有哪个函数可以返回密度比值对于设备。

任何帮助表示感谢。

4 个答案:

答案 0 :(得分:0)

DisplayMetrics dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);

现在使用dm.xdpi()dm.ydpi()来获取X和Y尺寸的像素密度。

答案 1 :(得分:0)

即使我在尝试实现此目的时遇到了麻烦。您可以将其设置为以“dip”或“dp”单位指定的像素。

这个链接应该是一个好的开始:

http://developer.android.com/guide/practices/screens_support.html

也可以参考这些帖子:

What is the correct way to specify dimensions in DIP from Java code?

Android: how to use dip (density independent pixel) in code?

答案 2 :(得分:0)

Here's答案可能会有所帮助。 从那里的答案看起来这就是你正在寻找的线

DisplayMetrics dm = context.getResources().getDisplayMetrics();
int densityDpi = dm.densityDpi;

答案 3 :(得分:0)

您可以使用此处的DisplayMetrics类:DisplayMetrics

并使用密度字段

  

显示器的逻辑密度。这是密度独立像素单元的缩放因子,其中一个DIP是大约160dpi屏幕上的一个像素(例如240x320,1.5“x2”屏幕),提供系统显示的基线。因此,在160dpi屏幕上,此密度值将为1;在120 dpi的屏幕上它将是.75;等

希望它有所帮助。