मैं एंड्रॉइड मंच पर नया हूं। मैं लाइव वॉलपेपर एप्लिकेशन विकसित करना चाहता हूं। जब मुझे खोज इंजन में इस बारे में खोजा गया, तो उनमें से कई ने अपने कोड (SurfaceView
और Canvas
का उपयोग करके) के रूप में एक लाइव वॉलपेपर बनाया, मुझे इसमें बहुत जानकारी नहीं है। यहां मेरा संदेह है, कोई भी लाइव वॉलपेपर के रूप में .gif छवियों को सेट करने के लिए संभव है।क्या एनिमेटेड gif फ़ाइल को एंड्रॉइड में लाइव वॉलपेपर के रूप में सेट करना संभव है?
उत्तर
यह एनिमेटेड gif प्रदर्शित करने के लिए हैक की गई मूल वॉलपेपर सेवा (जैसा कि लाइव वॉलपेपर ट्यूटोरियल में आपूर्ति की गई है) है।
पहला - एक परियोजना बनाएं & लाइव वॉलपेपर के रूप में अपना मैनिफेस्ट सेट करें।
फिर - एक gif कि gif सहेजें res/raw/nyan.gif
में अपनी परियोजना में डाउनलोड, यह एक
की तरह।
इस उदाहरण में दिखाए गए एक लाइव वॉलपेपर सेवा बनाएं।
public class NyanNyanService extends WallpaperService {
static final String TAG = "NYAN";
static final Handler mNyanHandler = new Handler();
/**
* @see android.service.wallpaper.WallpaperService#onCreate()
*/
@Override
public void onCreate() {
super.onCreate();
}
/**
* @see android.service.wallpaper.WallpaperService#onCreateEngine()
*/
@Override
public Engine onCreateEngine() {
try {
return new NyanEngine();
} catch (IOException e) {
Log.w(TAG, "Error creating NyanEngine", e);
stopSelf();
return null;
}
}
class NyanEngine extends Engine {
private final Movie mNyan;
private final int mNyanDuration;
private final Runnable mNyanNyan;
float mScaleX;
float mScaleY;
int mWhen;
long mStart;
NyanEngine() throws IOException {
InputStream is = getResources().openRawResource(R.raw.nyan);
if (is != null) {
try {
mNyan = Movie.decodeStream(is);
mNyanDuration = mNyan.duration();
} finally {
is.close();
}
} else {
throw new IOException("Unable to open R.raw.nyan");
}
mWhen = -1;
mNyanNyan = new Runnable() {
public void run() {
nyan();
}
};
}
@Override
public void onDestroy() {
super.onDestroy();
mNyanHandler.removeCallbacks(mNyanNyan);
}
@Override
public void onVisibilityChanged(boolean visible) {
super.onVisibilityChanged(visible);
if (visible) {
nyan();
} else {
mNyanHandler.removeCallbacks(mNyanNyan);
}
}
@Override
public void onSurfaceChanged(SurfaceHolder holder, int format, int width, int height) {
super.onSurfaceChanged(holder, format, width, height);
mScaleX = width/(1f * mNyan.width());
mScaleY = height/(1f * mNyan.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) {
nyanNyan(canvas);
}
} finally {
if (canvas != null) {
surfaceHolder.unlockCanvasAndPost(canvas);
}
}
mNyanHandler.removeCallbacks(mNyanNyan);
if (isVisible()) {
mNyanHandler.postDelayed(mNyanNyan, 1000L/25L);
}
}
void tick() {
if (mWhen == -1L) {
mWhen = 0;
mStart = SystemClock.uptimeMillis();
} else {
long mDiff = SystemClock.uptimeMillis() - mStart;
mWhen = (int) (mDiff % mNyanDuration);
}
}
void nyanNyan(Canvas canvas) {
canvas.save();
canvas.scale(mScaleX, mScaleY);
mNyan.setTime(mWhen);
mNyan.draw(canvas, 0, 0);
canvas.restore();
}
}
}
यह मूलतः न्यान-न्यान बिल्ली स्क्रीन के अनुरूप बनाने और इसे सदा चेतन करने के लिए पैमाने पर होगा।
एक लाइव वॉलपेपर प्रकट प्रकार के- की तरह इस (इस उदाहरण एक विन्यास गतिविधि शामिल नहीं है) दिखता है:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="your.nyan.nyan.package"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk android:minSdkVersion="10" />
<application
android:icon="@drawable/ic_launcher"
android:label="@string/application_nyan" >
<service
android:label="@string/wallpaper_nyan"
android:name=".NyanNyanService"
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/nyan" />
</service>
</application>
</manifest>
AndroidManifest.xml res/xml
में एक फ़ाइल के लिए एक संदर्भ है, इस मामले में नामित "nyan.xml":
<?xml version="1.0" encoding="utf-8"?>
<wallpaper xmlns:android="http://schemas.android.com/apk/res/android" />
इसे निष्पादित नहीं किया गया है, लेकिन मेरे कंसोल शो में बिल्ली = [android.intent.category.LAUNCHER] flg = 0x10000000 cmp = test.anim/.NyanNyanService} शून्य से नहीं है (pid = 7019, uid = 2000) की आवश्यकता है android.permission.BIND_WALLPAPER – Aerrow
मुझे लगता है कि मैं मैनिफेस्ट फ़ाइल में गलती करता हूं, क्या आप कृपया मेनिफेस्ट फ़ाइल पोस्ट कर सकते हैं। – Aerrow
एचएम। हां, आप किसी भी चीज़ से लाइव वॉलपेपर शुरू नहीं कर सकते हैं जिसमें BIND_WALLPAPER अनुमति नहीं है (जो सिस्टम अनुप्रयोगों के लिए आरक्षित है) - यानी अपने वॉलपेपर का परीक्षण करने के लिए आप इसे अपने होम स्क्रीन में लाइव वॉलपेपर पिकर में चुनते हैं। – Jens
- 1. एनिमेटेड एंड्रॉइड लाइव वॉलपेपर कैसे बनाएं?
- 2. एंड्रॉइड में लाइव वॉलपेपर कैसे बनाएं?
- 3. लाइव वॉलपेपर प्रोग्रामेटिक रूप से
- 4. Android में स्वचालित रूप से लाइव वॉलपेपर कैसे सेट करें
- 5. क्या एमुलेटर में एनिमेटेड gif छवि प्रदर्शित करना संभव है फोनगैप
- 6. जेएआर फ़ाइल से एनिमेटेड gif को ImageIcon
- 7. एंड्रॉइड में लाइव वॉलपेपर के रूप में एक HTML पृष्ठ का उपयोग करें
- 8. लाइव वॉलपेपर
- 9. एंड्रॉइड लाइव वॉलपेपर आइकन (उर्फ "थंबनेल") कैसे सेट करें
- 10. पावरपॉइंट से एनिमेटेड gif में निर्यात करें?
- 11. लाइव वॉलपेपर के रूप में फ़्रेमलेआउट का उपयोग
- 12. लाइव वॉलपेपर में वीडियो व्यू?
- 13. एंड्रॉइड लाइव वॉलपेपर - ओपनजीएल बनाम कैनवास
- 14. वॉलपेपर को प्रोग्रामेटिक रूप से वॉलपेपर के रूप में कैसे सेट करें?
- 15. एनिमेटेड GIF sorl-थंबनेल
- 16. एनिमेटेड gif छवियों क्लाइंट पक्ष का पता लगाना संभव है?
- 17. एनिमेटेड GIF एचटीएमएल 5 कैनवास में
- 18. पोर्ट्रेट मोड में एक लाइव वॉलपेपर "फिक्सिंग"
- 19. अनलॉक कैनवास एंडपोस्ट (एंड्रॉइड लाइव वॉलपेपर) में अवैध अर्ग्यूमेंट अपवाद
- 20. लाइव वॉलपेपर स्क्रीन रोटेशन
- 21. लाइव वॉलपेपर या नहीं?
- 22. हार्डवेयर त्वरित लाइव वॉलपेपर
- 23. लिनक्स पर एवीआई एनिमेटेड gif
- 24. सिल्वरलाइट 3 और एनिमेटेड gif
- 25. PHP के साथ, क्या एक एनिमेटेड gif को jpg के साथ मर्ज करना और gifs एनीमेशन बनाए रखना संभव है?
- 26. लाइव वॉलपेपर पूर्वावलोकन थंबनेल आकार
- 27. Android में वॉलपेपर कैसे सेट करें
- 28. एंड्रॉइड - वॉलपेपर छवि कैसे सेट करें?
- 29. लाइव वॉलपेपर - "वॉलपेपर सेट करें" - मेमोरी को साफ़ करने के लिए उपयोग करने के लिए ईवेंट की आवश्यकता है
- 30. एनिमेटेड gif केवल क्रोम और फ़ायरफ़ॉक्स में एक बार loops
[इस जवाब देने के लिए] का संदर्भ लें (http://stackoverflow.com/a/7772170/967142) – Jens
@Jens: अपने पुनरावृत्ति के लिए धन्यवाद, आप किसी भी नमूना कोड कैसे करना है ऐसा करें, – Aerrow
अच्छा, यह आपको दिखाता है [कैसे] (http: //droid-blog.n एटी/2011/10/14/ट्यूटोरियल-कैसे-उपयोग-एनिमेटेड-gifs-in-android-part-1 /) – Jens