我有以下动画:
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像素路径,但我不知道有哪个函数可以返回密度比值对于设备。
任何帮助表示感谢。
答案 0 :(得分:0)
DisplayMetrics dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
答案 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;等
希望它有所帮助。