Je n'ai pas besoin d'un fond d'écran fantaisie qui se déplace avec votre téléphone, je voudrais juste utiliser un gif comme un fond d'écran animé. Est-ce possible, et si oui, est-ce que quelqu'un pourrait m'expliquer comment cela est fait, ou me diriger vers une ressource qui montre comment? J'ai été incapable d'en trouver un pour le moment.Comment transformer un gif en un fond d'écran en direct pour une utilisation dans l'application Android
3
A
Répondre
5
Voir GIFLiveWallpaper démo regarder à github repo
public class GifLiveWallPaper extends WallpaperService {
static final String TAG = "LIVE_WALLPAPER";
static final Handler liveHandler = new Handler();
@Override
public Engine onCreateEngine() {
try {
return new WallPaperEngine();
} catch (IOException e) {
Log.w(TAG, "Error creating WallPaperEngine", e);
stopSelf();
return null;
}
}
class WallPaperEngine extends Engine {
private Movie liveMovie;
private int duration;
private Runnable runnable;
float mScaleX;
float mScaleY;
int mWhen;
long mStart;
public WallPaperEngine() throws IOException {
InputStream is = getResources().openRawResource(R.raw.sam);
if (is != null) {
try {
liveMovie = Movie.decodeStream(is);
duration = liveMovie.duration();
} finally {
is.close();
}
} else {
throw new IOException("Unable to open R.raw.hand");
}
mWhen = -1;
runnable = new Runnable() {
public void run() {
nyan();
}
};
}
@Override
public void onDestroy() {
super.onDestroy();
liveHandler.removeCallbacks(runnable);
}
@Override
public void onVisibilityChanged(boolean visible) {
super.onVisibilityChanged(visible);
if (visible) {
nyan();
} else {
liveHandler.removeCallbacks(runnable);
}
}
@Override
public void onSurfaceChanged(SurfaceHolder holder, int format,
int width, int height) {
super.onSurfaceChanged(holder, format, width, height);
mScaleX = width/(1f * liveMovie.width());
mScaleY = height/(1f * liveMovie.height());
nyan();
}
@Override
public void onOffsetsChanged(float xOffset, float yOffset,
float xOffsetStep, float yOffsetStep, int xPixelOffset,
int yPixelOffset) {
super.onOffsetsChanged(xOffset, yOffset, xOffsetStep, yOffsetStep,
xPixelOffset, yPixelOffset);
nyan();
}
void nyan() {
tick();
SurfaceHolder surfaceHolder = getSurfaceHolder();
Canvas canvas = null;
try {
canvas = surfaceHolder.lockCanvas();
if (canvas != null) {
drawGif(canvas);
}
} finally {
if (canvas != null) {
surfaceHolder.unlockCanvasAndPost(canvas);
}
}
liveHandler.removeCallbacks(runnable);
if (isVisible()) {
liveHandler.postDelayed(runnable, 1000L/25L);
}
}
void tick() {
if (mWhen == -1L) {
mWhen = 0;
mStart = SystemClock.uptimeMillis();
} else {
long mDiff = SystemClock.uptimeMillis() - mStart;
mWhen = (int) (mDiff % duration);
}
}
void drawGif(Canvas canvas) {
canvas.save();
canvas.scale(mScaleX, mScaleY);
liveMovie.setTime(mWhen);
liveMovie.draw(canvas, 0, 0);
canvas.restore();
}
}
}
Questions connexes
- 1. Redémarrer un fond d'écran en direct?
- 2. min3D dans un service de fond d'écran en direct?
- 3. Android fond transparent GIF disparaît
- 4. Comment montrer l'image devant un fond d'écran animé en direct
- 5. Comment mettre un adview admob dans l'écran des paramètres pour un fond d'écran en direct?
- 6. Utilisation de WallpaperManager dans Android pour mettre en fond d'écran
- 7. Comment transformer un script en une fonction
- 8. Fond d'écran Android en direct: Comment faire un commentaire lorsque de nouveaux paramètres sont chargés?
- 9. Comment faire pour rendre OpenGL sur un fond d'écran en direct (C'est trop difficile!)?
- 10. Android Lecture de fichiers vidéo dans un fond d'écran en direct
- 11. Pour Android, comment lire en direct streaming depuis l'URL pour une caméra qui diffuse en direct
- 12. Comment transformer un NSMutableData en une image dans une vue?
- 13. Démarrer un service de fond d'écran en direct de l'activité
- 14. Android: Transformer un bitmap en un flux d'entrée
- 15. Comment transformer un tableau en une carte en PHP?
- 16. Android téléchargement en direct
- 17. Comment créer un bouton invisible sur fond de GIF animé?
- 18. Fond d'écran Android en direct avec l'animation de trame
- 19. Comment créer un gif animé en Java?
- 20. transformer une ligne en un rectangle
- 21. désactiver le fond d'écran en direct
- 22. Rails, transformer une image en un lien
- 23. En Python, comment transformer une chaîne en un fichier?
- 24. Comment transformer un Tuple en un tableau en C#?
- 25. Comment transformer une activité en service dans Android?
- 26. Comment définir la couleur de fond WriteableBitmap pour une mosaïque en direct dans Mango?
- 27. Comment enregistrer un fond d'écran généré dynamiquement en android
- 28. Transformer un écran en une webcam virtuelle
- 29. dessin des textures sur le fond d'écran en direct en utilisant OpenGL dans android
- 30. Diffusion en direct en android
si vous avez l'aide de ma réponse que ne pas accepter réponse afin que les autres peuvent obtenir l'aide de votre contribution :) – AndruBoy