2013-08-14 16 views
6

Nie wiem, jaki typ animacji został wywołany, ale chcę go zaimplementować, jak pokazano poniżej. Widziałem tę animację w iOS.Animacja tekstu od lewej do prawej, jak połysk w Androidzie

enter image description here

Jak widać, że zdanie suwak, aby anulować będą animować od lewej do prawej, jak tam jest światło za nim.

Nie wiem, czego używać. Próbowałem animacji jak Alpha, ale nie mogę tego osiągnąć. Czy ktoś może mi pomóc?

+0

Spróbuj ten link: http://android-er.blogspot.in/2012/01/create-frame-animation-with.html –

+0

@ViragBrahme, to nie to, co szukam .. :( –

+0

Nie zdawałem sobie sprawy, że to było na Androida, więc ustawiłem animację CSS ... Nie robię żadnego androida, ale zakładam, że to nie zadziała dla ciebie ... Oto i wersja demo: http : //cdpn.io/BpgyE – brbcoding

Odpowiedz

0

Masz 2 sposoby:

1) współpracuje z OpenGL i użytkowania Shaders, aby ten efekt.

2) utwórz warstwę powyżej tekstu zawierającego gradient [transparent] [biały] [przezroczysty] i animuj go.

+0

um ... próbuję ... zapadnie ci później. –

4

Got rozwiązanie za pomocą Spannable

Poniżej klasa wątku ciągle biegać z przedziału od 100 ms.

class MyThread extends Thread { 
    //used for stopping thread 
    boolean flag; 

    //init flag to true so that method run continuously 
    public MyThread() { 
     flag = true; 
    } 

    //set flag false, if want to stop this thread 
    public void setFlag(boolean flag) { 
     this.flag = flag; 
    } 

    @Override 
    public void run() { 
     super.run(); 
     while (flag) { 
      try { 
       Thread.sleep(intervalMiliSeconds); 
       runOnUiThread(new Runnable() { 
        @Override 
        public void run() { 

         Spannable spn = new SpannableString(txtView 
           .getText().toString()); 
         spn.setSpan(new ForegroundColorSpan(Color.WHITE), 
           startPosition, endPosition, 
           Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); 
         txtView.setText(spn); 

         startPosition++; 
         endPosition++; 
         endPosition %= (lengthOfString + charGaps); 
         startPosition %= lengthOfString; 

         if (startPosition == 0) { 
          endPosition = charGaps; 
          startPosition = 0; 
         } 

         if (endPosition > lengthOfString) { 
          endPosition = lengthOfString; 
         } 

         Log.d("Home", "Start : " + startPosition + " End : " + endPosition); 

        } 
       }); 
      } catch (Exception e) { 
       e.printStackTrace(); 
      } 
     } 
    } 
} 

Aby użyć powyższego kodu, użyj poniższej implementacji.

TextView txtView = (TextView) findViewById(R.id.txtView); 

int charGaps = 3; 

int startPosition = 0; 
int endPosition = charGaps; 

int lengthOfString = txtView.getText().length(); 

MyThread thread = new MyThread(); 

thread.start(); 

Wyjście

enter image description here

jeszcze lepiej odpowiedzi będą bardziej doceniane .. :)

+0

Działa to świetnie! Ale jak zwiększyć prędkość tego efektu kolega! –

1

myślę mówisz Shimmer Effect. Facebook zrobił dla tego bibliotekę. Pomoże Ci pokazać efekt blasku od lewej do prawej z wieloma innymi opcjami.

Możesz tam zobaczyć pełną dokumentację. Shimmer Library

Powiązane problemy