0

我有以下动画:

    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();

问题是路径设置为固定像素。我想要做的是独立设置路径像素。任何想法如何做到这一点?

我试图将变量链接到维度.xml,但它不起作用,我宁愿将像素路径与像素密度比相乘,但我不知道是否有一个函数可以返回设备的密度比值.

任何帮助表示赞赏。

4

4 回答 4

1

即使我在尝试实现这一点时也遇到了真正的麻烦。您可以使其与像素无关,以“dip”或“dp”单位指定。

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

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

也可以参考这些帖子:

从 Java 代码中指定 DIP 尺寸的正确方法是什么?

Android:如何在代码中使用 dip(与密度无关的像素)?

于 2013-09-05T14:40:14.910 回答
0
DisplayMetrics dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);

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

于 2013-09-05T14:39:04.367 回答
0

这是一个可能会有所帮助的答案。从那里的答案看来,这是您正在寻找的路线

DisplayMetrics dm = context.getResources().getDisplayMetrics();
int densityDpi = dm.densityDpi;
于 2013-09-05T14:41:55.520 回答
0

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

并使用密度场

显示的逻辑密度。这是密度无关像素单元的比例因子,其中一个 DIP 是大约 160 dpi 屏幕(例如 240x320、1.5"x2" 屏幕)上的一个像素,提供系统显示的基线。因此,在 160dpi 屏幕上,此密度值为 1;在 120 dpi 屏幕上为 0.75;等等

希望能帮助到你。

于 2013-09-05T14:42:45.180 回答