2012-10-19 21 views
5

मैं एक Android लाइव वॉलपेपर OpenGL वॉलपेपर सेवा का उपयोग कर विकसित करने के लिए कोशिश कर रहा हूँ में संसाधनों या संपत्ति लोड करने के लिए, मैं इस example मार्क एफ गुएरा द्वारा के रूप में लाइव वॉलपेपर बनाने के लिए कर रहा हूँ लेकिन मैं कुछ स्प्राइट जोड़ना चाहते हैं मेरे वॉलपेपर के लिए एनीमेशन।कैसे GLWallpaper सेवा

मैंने पहले से ही एक अन्य परियोजना में OpenGL ES स्प्राइट एनीमेशन बनाया है। मैं सिर्फ लाइव वॉलपेपर प्रोजेक्ट में अपनी एनीमेशन को फिर से बनाना चाहता हूं।

लेकिन जब glwallpaper उपयोग करते हुए मेरे लाइव वॉलपेपर परियोजना में मैं Context हो और के बारे में लोड हो रहा है रिसोर्सेज़ या संपत्ति फ़ाइलों संपत्ति या संसाधनों

किसी भी सुझाव या नमूना कोड या लिंक से अपनी छवियों को लोड करने में सक्षम नहीं हूँ सेवा बहुत उपयोगी होगी।

सभी सुझाव और/या नमूना कोड का स्वागत है।

उत्तर

1

जिन्हें आप नीचे देख हम संदर्भ का उपयोग कर सकते ..

in wallpaper service class: 
------------------- 
renderer = new GlRenderer(this); 

in renderer class: 
---------------- 
private Context context; 

public GlRenderer(Context context) { 
this.context = context; 

के बजाय this हम पैरामीटर रेंडरर को के रूप में getAssets() या getResources() उपयोग कर सकते हैं।
getAssets() का उपयोग करने पर आप संपत्ति फ़ोल्डर में सहेजी गई फ़ाइलों को प्राप्त कर सकते हैं और getResources() का उपयोग करके आप अपनी प्रोजेक्ट में संसाधन फ़ोल्डर के अंदर रखी गई फाइलें प्राप्त कर सकते हैं।

1

अपने इंजन से संदर्भ को अपने प्रस्तुतकर्ता को पास करें। फिर, संपत्ति लोड करने के लिए यहां कुछ नमूना कोड है। यानी संसाधन आईडी आपका R.drawable.xxx बिटमैप है। मेरे पास यह एक बनावट एटलस क्लास के अंदर है, इसलिए कुछ चीजें पूरी तरह से विधि में निहित नहीं हो सकती हैं। उदाहरण के लिए मैं बिटमैप लोड करने के लिए उपयोग किए जाने वाले विकल्पों में inscaled = false शामिल होगा, लेकिन जो भी आपके लिए काम करता है। उदाहरण के लिए मैंने अपनी त्रुटि प्रबंधन को हटाने के लिए इसे भी संशोधित किया।

/** 
* Load the resource and push it to the gpu memory, setup default values 
* @param gl 
* @param context 
* @param resourceID 
* @return glTextureID 
* 
*/ 
public int loadFromContext(GL10 gl, Context context, int resourceID) { 
    mResourceID = resourceID; 
    Bitmap bmp = BitmapFactory.decodeResource(context.getResources(), resourceID, sBitmapOptions); 
    sourceWidth = bmp.getWidth(); 
    sourceHeight = bmp.getHeight(); 
    gl.glGenTextures(1, mGLTextures, 0); 
    mGLTextureID = mGLTextures[0]; 

    // bind and set min and mag scaling to bilinear 
    gl.glBindTexture(GL10.GL_TEXTURE_2D, mGLTextureID); 
    gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_MIN_FILTER, GL10.GL_LINEAR); 
    gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_MAG_FILTER, GL10.GL_LINEAR); 

    // repeat by default 
    gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_WRAP_S, GL10.GL_REPEAT); 
    gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_WRAP_T, GL10.GL_REPEAT); 

    // upload bmp to video memory 
    GLUtils.texImage2D(GL10.GL_TEXTURE_2D, 0, bmp, 0); 

    // check error 
    int error = gl.glGetError(); 
    if (error != GL10.GL_NO_ERROR) { 
     // cleanup 
     bmp.recycle(); 
     bmp = null; 
     mLoaded = false; 
      // error handling here 
    } else { 

     // unbind. 
     gl.glBindTexture(GL10.GL_TEXTURE_2D, 0); 
     bmp.recycle(); 
     bmp = null; 
     mLoaded = true; 
     mDirty = true; 

     } 
     return mGLTextureID; 
}