2013-09-05 6 views
0

У меня есть следующая анимация:Android Java определить плотность пикселей в коде

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, но это не сработало, я предпочел бы МНОЖЕСТВИТЬ путь к пикселям с коэффициентом плотности пикселей, но я не знаю, есть ли функция, которая может возвращать значение плотности для устройства.

Любая помощь приветствуется.

+0

'[Context.getResources.getDimensionsPixelSize()] (http://developer.android.com/reference/android/content/res/Resources.html#getDimensionPixelSize (int))' никогда не выполнялся. Может быть, вы могли бы объяснить, почему это не работает для вас. Но это подход, потому что он более настраивается для работы с этим путем. – gunar

ответ

0

Here's ответ, который, вероятно, будет полезно. Из ответов там это выглядит как это линия вы ищете

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

Спасибо, это то, что я искал – Jenda

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

Теперь используйте dm.xdpi() и dm.ydpi(), чтобы получить плотность пикселей в размерах Х и Y.

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?

+0

большое спасибо! – Jenda

0

Вы можете использовать класс DisplayMetrics найти здесь: DisplayMetrics

и использовать поле плотности

логическая плотность дисплея. Это коэффициент масштабирования для независимого пикселя пикселей, где один DIP - один пиксель на экране с разрешением 160 точек на дюйм (например, экран 240x320, 1,5 "x2"), обеспечивающий базовый уровень отображения системы. Таким образом, на экране с разрешением 160 точек на дюйм это значение плотности будет равно 1; на экране с разрешением 120 точек на дюйм это будет .75; и т.д.

Надеюсь, это поможет.

Смежные вопросы