2012-10-31 20 views
8

Próbowałem animować edittext, gdy użytkownik zacznie go edytować. Próbowałem poniższy kod,Android: Problemy z animacją edittext?

EditText txtPassword = (EditText) findViewById(R.id.editText1); 
Animation anim = AnimationUtils.loadAnimation(getApplicationContext(),R.anim.anim); 
anim.setInterpolator((new AccelerateDecelerateInterpolator())); 
anim.setFillAfter(true); 
txtPassword.startAnimation(anim); 

anim.xml 
```````` 
<?xml version="1.0" encoding="utf-8"?> 
<set xmlns:android="http://schemas.android.com/apk/res/android"> 
<translate android:fromYDelta="0" android:toYDelta="-50%p" android:duration="100"/> 
</set> 

Animacja działa dobrze. ale edittext zatrzymał userinteraction po animacji. Jeśli użytkownik dotknie poprzedniej pozycji editekstu ekranu, pojawi się klawiatura. , ale edittext na nowej pozycji powinien odpowiedzieć. Co muszę zrobić?

enter image description here

enter image description here Mam nadzieję, że ktoś może edytować swoje pytanie w odpowiednim formacie angielsku.

Odpowiedz

0

(przydatne WSKAZÓWKA: Istnieje Android biblioteki do korzystania z Honeycomb (Android 3.0) Animacja API na wszystkich wersjach platformy z powrotem do 1,0 !. Nazywa NineOldAndroid.)

(przydatnych podpowiedzi (Android Developers , View): Zaczynając od wersji Android 3.0, preferowanym sposobem animowania widoków jest użycie interfejsów API android.animation. Te klasy oparte na animatorze zmieniają rzeczywiste właściwości obiektu View, takie jak alpha i translationX. To zachowanie jest przeciwstawione temu klas opartych na animacji sprzed 3.0, które zamiast tego animują tylko sposób rysowania widoku na wyświetlaczu.W szczególności klasa ViewPropertyAnimator sprawia, że ​​animacja tych właściwości widoku jest wyjątkowo łatwa i wydajna.)

(Uwaga: Poniżej rozwiązanie jest do wstępnego plastra miodu.)

Animacje z Androida jest nieco trudne do zrozumienia, w przeciwieństwie do iOS. Musisz to wiedzieć;

  • tylko duch podklasy Android View jest animowany.
  • a grób jest jeszcze na przodku koordynować

więc rozwiązanie może być;

  • wydarzenia Blok Dotknij, aby wyświetlić

    animatingView.setEnabled(FALSE);

  • widok animować

  • Usuń animatingView

    animatingView.setVisibility(GONE); (animatingView.getParent()).removeView(animatingView);

  • Dodaj dokładny duplikat widoku do nowych współrzędnych.

+0

Dziękuję za odpowiedź, ale co z gingerbird (android 2.3)? potrzebować soln. –

+0

poniżej część jest rozwiązaniem pod warunkiem. Której części nie rozumiesz? –

+0

Powiedziałeś, że działa Android 3.0, ale potrzebne dla Androida poniżej wersji 3.0 –