各位大伸们,我最近在看android动态墙纸,有一些地方看不太明白。以android2.3.5 下packages\wallpapers\Basic里自带的Grass为例。在wallpapers\Basic\res\drawable-hdpi这个目录下,只看到了一张缩略图grass_thumb.jpg,并没有看到gif之类的图片。我知道墙纸不是单纯的一张GIF图片,而是一个APK,但是现在这个墙纸,是怎么让这个草两边摇动的呢?没有看到GIF图片,也没有看到除grass_thumb.jpg这张缩略图外的其他grass图片,现在真心不知道动态墙纸,是怎么把它画的动起来的,还动得那么的传神。麻烦各位大伸们指点一二。

解决方案 »

  1.   

    动态壁纸的实质是一个apk在后台不断地重绘壁纸 ,详细请看:
    http://blog.sina.com.cn/s/blog_69e984ed01019iwo.html
      

  2.   

    研究了半天,终于知道是怎么画的了,那个随风摆动的青草,不是图片,而是通过下面的代码来画的:    private void loadTextures() {
            mTextures = new Allocation[TEXTURES_COUNT];        final Allocation[] textures = mTextures;
            textures[0] = loadTexture(R.drawable.night, "TNight");
            textures[1] = loadTexture(R.drawable.sunrise, "TSunrise");
            textures[2] = loadTexture(R.drawable.sky, "TSky");
            textures[3] = loadTexture(R.drawable.sunset, "TSunset");
            textures[4] = generateTextureAlpha(4, 1, new int[] { 0x00FFFF00 }, "TAa");        final int count = textures.length;
            for (int i = 0; i < count; i++) {
                textures[i].uploadToTexture(0);
            }
        }其中,textures[4] = generateTextureAlpha(4, 1, new int[] { 0x00FFFF00 }, "TAa");这里便是装载纹理的地方。drawBlades这个函数,便是把这些纹理函数画成草的地方。