آموزش ساخت برنامه live wallpapers در اندروید
سلام دوستان در این سری از آموزش برنامه نویسی اندروید به آموزش ساخت برنامه live wallpapers در اندروید می پردازیم این آموزش را بیشتر سایت ها پولی قرار داده اند ولی ما تصمیم گرفتیم به رایگان برای شما قرار دهیم در ادامه با ما همراه باشید.
ابتدای کار باید وارد فایل AndroidManifest.xml شده و خط زیر را اضافه کنید.
1 2 3 | <uses-feature android:name="android.software.live_wallpaper" android:required="true"></uses-feature> |
سپس باید در پوشه res یک پوشه به نام xml ایجاد کرده و در داخل آن یک فایل به نام Wallpaper.xml ایجاد کرده و کد زیر را در آن قرار دهید.
1 2 3 4 5 6 | <?xml version="1.0" encoding="utf-8"?> <wallpaper xmlns:android="http://schemas.android.com/apk/res/android" android:label="GIF Wallpaper" android:thumbnail="@mipmap/ic_launcher"> </wallpaper> |
یک فایل جاوا به نام GIFWallpaperService.java ایجاد کرده و کدهای زیر را در آن قرار دهید.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 | package ir.programchi; import android.graphics.Canvas; import android.graphics.Movie; import android.service.wallpaper.WallpaperService; import android.util.Log; import android.view.SurfaceHolder; import java.lang.Runnable; import java.io.IOException; import java.util.concurrent.RunnableFuture; import java.util.logging.Handler; import java.util.logging.LogRecord; /** * Created by JFP on 18-Apr-17. */ public class GIFWallpaperService extends WallpaperService { @Override public WallpaperService.Engine onCreateEngine() { try { Movie movie = Movie.decodeStream(getResources().getAssets().open("g.gif")); return new GIFWallpaperEngine(movie); } catch (IOException e) { Log.d("GIF", "could not load asset"); return null; } } private class GIFWallpaperEngine extends WallpaperService.Engine { private final int frameDuration = 30; private SurfaceHolder holder; private Movie movie; private boolean visible; private Handler handler; public GIFWallpaperEngine(Movie movie) { this.movie = movie; handler = new Handler(); } @Override public void onCreate(SurfaceHolder surfaceHolder) { super.onCreate(surfaceHolder); this.holder = surfaceHolder; } private Runnable drawGIF = new Runnable() { @Override public void run() { draw(); } }; private void draw() { if (visible) { Canvas canvas = holder.lockCanvas(); canvas.save(); //Ajustments regarding the size and position of wallpaper image can be made. canvas.scale(4f, 4f); movie.draw(canvas, -100, 0); canvas.restore(); holder.unlockCanvasAndPost(canvas); movie.setTime((int) (System.currentTimeMillis() % movie.duration())); handler.removeCallbacks(drawGIF); holder.postDelayed(drawGIF,frameDuration); } } @Override public void onVisibilityChanged(boolean visible) { this.visible=visible; if(visible){ handler.post(drawGIF); } else { handler.removeCallbacks(drawGIF); } } @Override public void onDestroy() { super.onDestroy(); handler.removeCallbacks(drawGIF); } } } |
دوستان در بالا باید در پوشه assets یک فایل به نام g.gif قرار دهید تا نمایش داده شود.
حالا دوباره وارد فایل AndroidManifest.xml شده و کد زیر را اضافه کنید.
1 2 3 4 5 6 7 8 9 10 11 | < service android:name="GIFWallpaperService" android:enabled="true" android:label="GIF Wallpaper" android:permission="android.permission.BIND_WALLPAPER"> <intent-filter> <action android:name="android.service.wallpaper.WallpaperService"/> </intent-filter> <meta-data android:name="android.service.wallpaper" android:resource="@xml/wallpaper"/> </service> |
به همین سادگی برنامه Live Wallpaper شما ایجاد شد.
این آموزش هم به پایان رسید.
موفق و موید باشید.
مثل همیشه عالی بود
ببخشید مهندس چجوری میتونیم از این سرویس برای اعمال Wallpaper استفاده کنیم؟