Używam wideoview z animacją (video.setAnimation (slideinRight);) Wszystko działa dobrze, z wyjątkiem tego, że podczas przejścia, tylko układ wideo jest animowany, a nie wideo. Kiedy pojawia się animacja tłumaczenia, widzę ruchy i maski na moim filmie, ale film nigdy się z nim nie porusza. Nie mam pojęcia, co teraz zrobić.VideoView Animacja
Odpowiedz
Przepraszam za odpowiedzi to dość późno, ale za to, co warto. i jeśli chcesz tylko użyć animacji "przesuń". Spróbuj umieścić widok wideo w układzie i animować układ.
Sposób w jaki ustawiłem to w moim kodzie;
AbsoluteLayout Animationlayout = (AbsoluteLayout)findViewById(R.string.frontlayout);
VideoView pvv = new VideoView(getApplicationContext());
pvv.getHolder().addCallback(this);
Animationlayout.addView(pvv);
// load video data in pvv.
To miejsce, w którym chcesz animować swój widok wideo, aby przesuwać;
Animationlayout.animate().xBy(25).setDuration(500).setInterpolator(new BounceInterpolator());
Należy pamiętać, że jest to system animacji 3.1.
Nie wiem, czy klasyczny sposób 2.1 animacji będzie działał w ten sposób, ale powinien służyć tak samo.
Rzeczy takie jak obracanie/skalowanie układu nie będą działać. Przesuwanie układu wokół i blaknięcie wydaje się być jedynymi nielicznych rzeczy, które działają.
Obecnie próbuję umieścić animacje na VideoView.
Jeśli spojrzeć na kod źródłowy Androida, VideoView jest w zasadzie a SurfaceView, w połączeniu z MediaPlayer, z podstawowym zarządzaniem automatu stanu gracza.
Faktycznie, prawdziwa „wyciągnąć” praca wydaje się być obsługiwane za pomocą metod natywnych w MediaPlayer (aka wykonania silnika Real Player na urządzeniu Android)
Przetestowaliśmy animacje na różnych urządzeniach, a okazało się, że VideoView użytkownika bazowy zachowanie odtwarzacz wideo/realizacja nie jest taka sama między różnymi urządzeniami z systemem Android:
- niektóre urządzenia obsługiwać oglądać animacje gracza poprawnie
- inni nie, a tylko wyświetlać rozmycie, czarny ekran lub monitor buggy ..
Ponadto wydaje się, że VideoView jest zapisywany bezpośrednio w pamięci, więc każde "obejście" (jak umieszczenie nieprzejrzystego widoku z przodu i ustawienie animacji w tym widoku) wydaje się nie działać.
byłbym zadowolony Czy inni opinię na temat tego :)
Wystarczy użyć TextureView:
Więcej odniesienia na TextureView here.
Zrobiłem zoomin - zoomout animację na TextureView.
Dodaj animacji xml w Res ->anim folderu.
zoom_in_out.xml:
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:shareInterpolator="false">
<scale
android:duration="1000"
android:fillAfter="false"
android:fromXScale="1.0"
android:fromYScale="1.0"
android:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:pivotX="50%"
android:pivotY="50%"
android:toXScale="1.2"
android:toYScale="1.2" />
<set android:interpolator="@android:anim/decelerate_interpolator">
<scale
android:duration="1000"
android:fillBefore="false"
android:fromXScale="1.2"
android:fromYScale="1.2"
android:pivotX="50%"
android:pivotY="50%"
android:startOffset="500"
android:toXScale="1.0"
android:toYScale="1.0" />
</set>
</set>
texture_layout.xml:
<?xml version="1.0" encoding="utf-8"?>
<TextureView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/textureView"
android:layout_margin="50dp"
android:background="@android:color/darker_gray"
android:layout_width="wrap_content" android:layout_height="wrap_content">
</TextureView>
TextureViewActivity.java:
import android.graphics.SurfaceTexture;
import android.media.MediaPlayer;
import android.net.Uri;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.Surface;
import android.view.TextureView;
import android.view.View;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import java.io.IOException;
public class TextureViewActivity extends AppCompatActivity implements TextureView.SurfaceTextureListener {
private TextureView textureView;
private MediaPlayer mMediaPlayer;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.texture_layout);
textureView = (TextureView)findViewById(R.id.textureView);
textureView.setSurfaceTextureListener(this);
textureView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Animation zoomAnimation = AnimationUtils.loadAnimation(TextureViewActivity.this, R.anim.zoom_in_out);
textureView.startAnimation(zoomAnimation);
}
});
}
private String getVideoPath(){
return "android.resource://" + getPackageName() + "/" + R.raw.promovideo;
}
@Override
public void onSurfaceTextureAvailable(SurfaceTexture surfaceTexture, int width, int height) {
Surface surface = new Surface(surfaceTexture);
try {
mMediaPlayer= new MediaPlayer();
mMediaPlayer.setDataSource(TextureViewActivity.this, Uri.parse(getVideoPath()));
mMediaPlayer.setSurface(surface);
mMediaPlayer.prepare();
mMediaPlayer.start();
mMediaPlayer.setLooping(true);
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (SecurityException e) {
e.printStackTrace();
} catch (IllegalStateException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
@Override
public void onSurfaceTextureSizeChanged(SurfaceTexture surface, int width, int height) {
}
@Override
public boolean onSurfaceTextureDestroyed(SurfaceTexture surface) {
return false;
}
@Override
public void onSurfaceTextureUpdated(SurfaceTexture surface) {
}
}
Wykonane
- 1. Resize VideoView
- 2. Android VideoView powtórzenie
- 3. VideoView i pobieranie progresywne
- 4. Wykrywanie, czy VideoVIew buforuje
- 5. seekTo w VideoView
- 6. Wywołanie MediaPlayer.PrepareAsync z VideoView
- 7. Problem z migającym VideoView
- 8. Pozycjonowanie MediaController przez VideoView
- 9. Android VideoView zapisz strumień RTSP
- 10. Animacja ikony FloatingActionButton (animacja rysowania FAB src)
- 11. Animacja iOS Animacja obrotu pod kątem
- 12. Animacja orbitalna
- 13. Meteor Animacja
- 14. Animacja przewijania
- 15. JavaScript animacja
- 16. kątowa animacja
- 17. Animacja UIWindow
- 18. Animacja addSubview
- 19. Pulsowanie Animacja
- 20. Animacja Matplotlib
- 21. :: animacja wyboru
- 22. Przechowywanie MediaController na ekranie w VideoView
- 23. Android VideoView nie gra orientacji pionowej
- 24. Powiększanie VideoView, aby wypełnić szerokość, zachowując proporcje
- 25. VideoView wyzwala OnPreparedListener zbyt wcześnie dla HLS
- 26. VideoView getCurrentPosition() nieprawidłowość na Acer Iconia A200
- 27. Android VideoView uruchamia wiele filmów sekwencyjnie
- 28. Wyraźny wyświetlacz Android VideoView po stopPlayback()
- 29. Android: wiele ścieżek audio w VideoView?
- 30. Android orientacji pionowej wideo złego w VideoView
Czy znalazłeś rozwiązanie tego problemu? –
Nie, musieliśmy zaimplementować inny projekt dla naszej aplikacji (nie przesuwając wideoView, ale przenosząc inne części :-) Jednak zastanawiam się, jak kod ewoluował w systemie Android 4.0. Powinienem to obejrzeć ... – Vinzzz
Myślę, że ponieważ niektóre urządzenia nie mają poprawnej obsługi OpenGL. W takim przypadku urządzenie wyświetla rozmycie lub czarny ekran –