自学动态壁纸

         什么话都不多说,直接上主题

         最近突发奇想,想学习一下动态壁纸,在网上也看了很多的资料,自己也照着写了一个小例子,现在把我自己看到的步骤写一下,记录下来。

         一、动态壁纸

                   它是一个service,它继承自WallpaperService类,实现了public void oncreate(),public Engine onCreateEngine(),public void onDestory()方法。

         重点来了,第二个方法,public Engine onCrreateEngine()方法,它返回的是一个Engine引擎(return new SimpleEngine()),现在我们就来看看这个SimpleEngine类。

         二、SimpleEngine类

                   继承自WallpaperService.Engine类,实现了Engine中的

                   public voidonCreate(SurfaceHolder surfaceHolder){... setTouchEventEnabled(true)};//设为可触碰

    public void onDestroy(){...}

   

    public void onVisibilityChanged(boolean visible)    //当界面完全被覆盖(重新显示的时候)的时候会调用此方法

   {
     if(visible)//如果可见
     {
         ...
     }
     else//如果不可见
     {

         ...
     }

    public void onSurfaceCreated(SurfaceHolderholder) //重写onSurfaceCreated方法
   {
     super.onSurfaceCreated(holder);//调用父类对应方法
   }

    public void onSurfaceChanged(SurfaceHolder holder, int format, int width,int height)

   {

      ...

   }

                   public oid onSurfaceDestoryed(SurfaceHolderholder)

                   {

                            super.onSurfaceDestoryed(holder);

                            mVidibily = false;

                            mHandler.removeCallbacks(mRunnable);
                   }

                   public void onOffsetChanged(....){}//位移有变化时调用该方法

                   我自己写了一个private void draw()方法,在这个方法中进行界面的绘制

                   需要用到SurfaceHolder。

         三、SurfaceHolder类

                   在draw()方法中需要用到,

                   SurfaceHolderholder = getSurfaceHolder();

                   canvas = holder.lockCanvas();

                   canvas.drawColor(Color.WHITE);

                            ...

                            ...

                   holder.unlockCanvasAndPost(canvas);

                   mHandler.removeCallbacks(mRunnable);

                   if(mVisible){mHandler.postDelayed(mRunnable,1000);}                  

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值