【问题标题】:live wallpaper with images带有图像的动态壁纸
【发布时间】:2011-09-03 15:23:38
【问题描述】:

(对不起,我的英文不太好......希望你能理解我)

我的朋友是一个非常好的抽屉。我想通过为他制作一个带有他的绘画动画的动态壁纸来帮助他成为一个好的抽屉。

我希望他画几帧,并使用这些帧通过一个接一个地显示它们来制作动态壁纸。

我很难显示一张图片,然后稍等片刻再显示下一张。我很确定我不能成功,因为我没有使用正确的方法......

这是我到目前为止所做的:

public class Cercle extends WallpaperService
{
public void onCreate() 
{
    super.onCreate();
}

public void onDestroy() 
{
    super.onDestroy();
}

public Engine onCreateEngine() 
{
    return new CercleEngine();
}

class CercleEngine extends Engine 
{
    public Bitmap image1, image2, image3;

    CercleEngine() 
    {       
        image1 = BitmapFactory.decodeResource(getResources(), R.drawable.img1);
        image2 = BitmapFactory.decodeResource(getResources(), R.drawable.img2);
        image3 = BitmapFactory.decodeResource(getResources(), R.drawable.img3); 
    }

    public void onCreate(SurfaceHolder surfaceHolder) 
    {
        super.onCreate(surfaceHolder);
    }

    public void onOffsetsChanged(float xOffset, float yOffset, float xStep, float yStep, int xPixels, int yPixels) 
    {
        drawFrame();
    }

    void drawFrame() 
    {
        final SurfaceHolder holder = getSurfaceHolder();

        Canvas c = null;
        try 
        {
            c = holder.lockCanvas();
            if (c != null) 
            {              
                 c.drawBitmap(image1, 0, 0, null);
                 c.drawBitmap(image2, 0, 0, null);
                 c.drawBitmap(image3, 0, 0, null);                   
            }
        } finally 
        {
            if (c != null) holder.unlockCanvasAndPost(c);
        }
    }
}
}

这段代码只是显示图片太快,因为我不知道如何在显示图片之间等待......

谁能给我一些提示或给我一些其他解决方案的例子?

非常感谢!

更新:

我通过添加 Runnable 解决了我的问题:

private final Runnable drawRunner = new Runnable() 
    {
        @Override
        public void run() {
            drawFrame();
        }

    };

然后添加:

    handler.removeCallbacks(drawRunner);
        if (visible) 
        {
           handler.postDelayed(drawRunner, 1000); // delay 1 sec
        }

在 drawFrame() 的末尾。

希望这会对某人有所帮助。

【问题讨论】:

    标签: android bitmap live wallpaper image


    【解决方案1】:

    使用这个开源项目为您的朋友创建漂亮的动态壁纸

    link是从手机图库中读取的,您可以编辑它以从项目中的文件夹中读取,直接使用即可。

    或将此link 用于其他动态壁纸项目

    【讨论】:

    • 谢谢艾哈迈德!通过查看您链接中的源代码,我解决了我的问题。对不起,我想投票给你,但它告诉我需要 15 声望才能做到这一点......
    【解决方案2】:

    @Pozinux...我是一名新程序员。我遇到了你听到的这段代码。我正在尝试在我的项目中使用代码。但我无法让它工作。当我将它安装到模拟器时,它不会穿过它的框架。它只显示最后一帧。你是怎么设置的?或者让这个工作?听听我是如何在我的项目中设置它的。

    import android.graphics.Bitmap;
    
    import android.graphics.BitmapFactory;
    
    import android.graphics.Canvas;
    
    import android.service.wallpaper.WallpaperService;
    
    import android.view.SurfaceHolder;
    
    public class WallpaperSer extends WallpaperService {
    
    public void onCreate() 
    
    {
        super.onCreate();
    }
    
    public void onDestroy() 
    {
        super.onDestroy();
    }
    
    public Engine onCreateEngine() 
    {
        return new WallpaperSerEngine();
    }
    
    class WallpaperSerEngine extends Engine 
    {
        public Bitmap image1; 
        public Bitmap image2;
        public Bitmap image3;
        public Bitmap image4;
        public Bitmap image5;
        public Bitmap image6;
        public Bitmap image7;
        public Bitmap image8;
        public Bitmap image9;
        public Bitmap image10;
        public Bitmap image11;
        public Bitmap image12;
        public Bitmap image13;
        public Bitmap image14;
        public Bitmap image15;
        public Bitmap image16;
        public Bitmap image17;
        public Bitmap image18;
        public Bitmap image19;
        public Bitmap image20;
    
        WallpaperSerEngine() 
        {       
                image1 = BitmapFactory.decodeResource(getResources(), R.drawable.and1);
                image2 = BitmapFactory.decodeResource(getResources(), R.drawable.and2);       
                image3 = BitmapFactory.decodeResource(getResources(), R.drawable.and3); 
                image4 = BitmapFactory.decodeResource(getResources(), R.drawable.and4);
                image5 = BitmapFactory.decodeResource(getResources(), R.drawable.and5);
                image6 = BitmapFactory.decodeResource(getResources(), R.drawable.and6);
                image7 = BitmapFactory.decodeResource(getResources(), R.drawable.and7);
                image8 = BitmapFactory.decodeResource(getResources(), R.drawable.and8);
                image9 = BitmapFactory.decodeResource(getResources(), R.drawable.and9);
                image10 = BitmapFactory.decodeResource(getResources(), R.drawable.and10);
                image11 = BitmapFactory.decodeResource(getResources(), R.drawable.and11);
                image12 = BitmapFactory.decodeResource(getResources(), R.drawable.and12);
                image13 = BitmapFactory.decodeResource(getResources(), R.drawable.and13);
                image14 = BitmapFactory.decodeResource(getResources(), R.drawable.and14);
                image15 = BitmapFactory.decodeResource(getResources(), R.drawable.and15);
                image16 = BitmapFactory.decodeResource(getResources(), R.drawable.and16);
                image17 = BitmapFactory.decodeResource(getResources(), R.drawable.and17);
                image18 = BitmapFactory.decodeResource(getResources(), R.drawable.and18);
                image19 = BitmapFactory.decodeResource(getResources(), R.drawable.and19);
                image20 = BitmapFactory.decodeResource(getResources(), R.drawable.and20);
        }
    
        public void onCreate(SurfaceHolder surfaceHolder) 
        {
            super.onCreate(surfaceHolder);
        }
    
        public void onOffsetsChanged(float xOffset, float yOffset, float xStep, float yStep, int xPixels, int yPixels) 
        {
            drawFrame();
    
        }
    
        void drawFrame() 
        {
            final SurfaceHolder holder = getSurfaceHolder();
    
            Canvas c = null;
            try 
            {
                c = holder.lockCanvas();
                if (c != null) 
                {              
                     c.drawBitmap(image1, 0, 0, null);
                     c.drawBitmap(image2, 0, 0, null);
                     c.drawBitmap(image3, 0, 0, null);
                     c.drawBitmap(image4, 0, 0, null);
                     c.drawBitmap(image5, 0, 0, null);
                     c.drawBitmap(image6, 0, 0, null);
                     c.drawBitmap(image7, 0, 0, null);
                     c.drawBitmap(image8, 0, 0, null);
                     c.drawBitmap(image9, 0, 0, null);
                     c.drawBitmap(image10, 0, 0, null);
                     c.drawBitmap(image11, 0, 0, null);
                     c.drawBitmap(image12, 0, 0, null);
                     c.drawBitmap(image13, 0, 0, null);
                     c.drawBitmap(image14, 0, 0, null);
                     c.drawBitmap(image15, 0, 0, null);
                     c.drawBitmap(image16, 0, 0, null);
                     c.drawBitmap(image17, 0, 0, null);
                     c.drawBitmap(image18, 0, 0, null);
                     c.drawBitmap(image19, 0, 0, null);
                     c.drawBitmap(image20, 0, 0, null);
                }
            } finally 
            {
                if (c != null) holder.unlockCanvasAndPost(c);
            }
        }
    }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多