Jak prawidłowo przesunąć widok?

Czy ktoś może wyjaśnić noobowi prawidłowy sposób animowania widoku, aby jego obszar dotykowy i obraz rzeczywiście się poruszały ?!

Przeczytałem wiele postów i pytań oraz samouczków, ale żaden nie wyjaśnia, co porusza układ i co porusza obraz, dzięki czemu mogę animować widok, a następnie pozostawić go w nowej pozycji.

Jest to przykładowa metoda, z którą pracuję, próbując wielu różnych kombinacji, aby nie odnieść sukcesu. Widok znajduje się w rodzicu RelativeLayout. Jest to dotykowe menu ikon, które jest animowane za pomocą zasobu xml po kliknięciu, aby zsunąć się z ekranu, pozostawiając tylko małą kartę pokazującą miejsce, w którym musi pozostać, aż do ponownego kliknięcia.

<code>public void RetractTools (View v){      
    final ImageView finalImage1 = (ImageView) findViewById(R.id.paintsView);
    Animation slideout = AnimationUtils.loadAnimation(this, R.anim.slideout_tools);
    slideout.setFillAfter(true);
    slideout.setAnimationListener(new AnimationListener() {
        @Override
        public void onAnimationEnd(Animation animation) {
            finalImage1.setEnabled(true);
            optionMenu.showing = false;
            optionMenu.inMotion = false;
            finalImage1.layout(1258, 668, 1697, 752);
            finalImage1.setRight(1280);
            finalImage1.invalidate();
        }

        @Override
        public void onAnimationRepeat(Animation arg0) {
        }

        @Override
        public void onAnimationStart(Animation arg0) {
            finalImage1.setEnabled(false);
        }
    });

    optionMenu.inMotion = true;
    v.startAnimation(slideout);
 }// End RetractMenu
</code>

Bez względu na to, co próbuję, napotykam problemy. setFillAfter nie robi nic po ustawieniu w pliku xml. Ustawiony programowo pozostawia obraz we właściwym miejscu, ale elementy sterujące dotykiem pozostają tam, gdzie było menu. Próbowałem setLeft i setRight, które najwyraźniej tylko przesuwają obraz, a nie pozycję widoku i różnego rodzaju różne opcje układu, i wypełniają, nie wypełniają i nie unieważniają, a nie, ale nie mogą rozwiązać. Wyraźnie nie podkreślam podstawowej mechaniki potrzebnej do pozycjonowania i renderowania widoku! :RE

Dzięki.

EDYCJA: Rozwiązanie

Dla każdego, kto ma podobne problemy, tak właśnie znalazłem pracę z układami względnymi. Tworzysz obiekt LayoutParams o określonym rozmiarze, a następnie możesz przypisać mu pozycje. na przykład.

<code>    final RelativeLayout.LayoutParams position = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);           
    position.leftMargin = 440;
</code>

Następnie przypisz to do swojego widoku

<code>    myView.setLayoutParams(position);
</code>

Podsumowując, używasz obiektu LayoutParams jako interfejsu do pozycji widoku, zamiast uzyskiwać dostęp do współrzędnych widoku bezpośrednio, tak jak zakładałem.

questionAnswers(1)

yourAnswerToTheQuestion