динамическое ImageView TranslateAnimation

1

У меня есть изображения, которые нужно отображать из одного места, которое пользователь нажимает, и перемещаются в другое место, которое пользователь нажимает. Я думаю, что проблема, с которой я сталкиваюсь, заключается в том, как изначально размещать ImageView в заданном абсолютном X, Y (мой основной макет основного представления - это LinearLayout по умолчанию). Это то, что я сейчас пробую, анимация работает, но не видна (через 1000 мс действительно называется конечная функция).

        ImageView iv = new ImageView(mainActivity);

    String imgname = "drawable/animImg";
    int imgId = act.getResources().getIdentifier(imgname, "drawable", act.getPackageName());
    iv.setImageDrawable(act.getResources().getDrawable(imgId));

    /*didn't seem to help
            LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(
            LinearLayout.LayoutParams.FILL_PARENT,
            LinearLayout.LayoutParams.FILL_PARENT);
    ((ViewGroup)mainActivity.findViewById(R.id.LinearLayout)).addView(iv,lp);
    */

    int[] srcxy = new int[2];
    src.getLocationInWindow(srcxy);
    int[] destxy = new int[2];
    dest.getLocationInWindow(destxy);

    TranslateAnimation translateAnimation = new TranslateAnimation( Animation.ABSOLUTE, srcxy[0], Animation.ABSOLUTE, destxy[0], Animation.ABSOLUTE, srcxy[1], Animation.ABSOLUTE, destxy[1]);
    translateAnimation.setDuration(1000);
    translateAnimation.setInterpolator(new AccelerateInterpolator());

    translateAnimation.setAnimationListener( new MyAnimationListenener( c, src, dest, this ) );
    iv.setVisibility(View.VISIBLE);
    iv.startAnimation(translateAnimation);  

Итак, есть ли способ указать, что я хочу сначала позиционировать ImageView в srcxy [0], srcxy [1], прежде чем я одушевляюсь? Или я собираюсь сделать это правильно?

Теги:
animation
imageview

1 ответ

0

Вы не можете поместить ImageView в позицию x, y, если он содержится в LinearLayout: по мере указания имени LinearLayout используется для отображения элементов последовательно в горизонтальном или вертикальном порядке. Я думаю, вы должны использовать FrameLayout. Если вы посмотрите этот пример, вы можете найти фрагмент кода, который достигнет вашей цели.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню