资讯专栏INFORMATION COLUMN

android中自定义动态壁纸

YanceyOfficial / 2907人阅读

摘要:用于表示当前壁纸的缩略图,一般在或者设置中设置动态壁纸的时候会显示。继承类这个类没有太多的接口功能供我们调用,最重要的方法是我们必须在这个方法中返回一个壁纸的引擎,我们所有的绘制任务都需要在这个引擎中完成。

在android中我们一般设置静态壁纸,使用WallpaperManager可以轻松达到目的,但是使用WallpaperManager是不能够设置动态壁纸的,为此android提供了一个WallpaperService专门用来设置动态壁纸,那么我们就用几个简单的步骤来说明一下如何简单的定义一个动态壁纸。

1.新建一个资源文件wallpaper.xml

首先在xml目录下面新建一个wallpaper.xml的资源描述文件.


这个xml的标签必须是wallpaper,description用于对当前壁纸的描述,可选。thumbnail用于表示当前壁纸的缩略图,一般在launcher或者设置中设置动态壁纸的时候会显示。

2.继承WallpaperService类
public class MyWallpaperService extends WallpaperService {

    @Override
    public Engine onCreateEngine() {
        return new MyEngine();
    }


    private class MyEngine extends Engine {

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

        @Override
        public void onSurfaceCreated(SurfaceHolder holder) {
            super.onSurfaceCreated(holder);
            Canvas canvas = holder.lockCanvas();
            Paint p = new Paint(Paint.ANTI_ALIAS_FLAG);
            p.setStrokeWidth(10);
            p.setColor(Color.BLUE);
            canvas.drawLine(0, 0, 100, 100, p);
            holder.unlockCanvasAndPost(canvas);

        }

        @Override
        public void onVisibilityChanged(boolean visible) {
            super.onVisibilityChanged(visible);
        }

        @Override
        public void onSurfaceDestroyed(SurfaceHolder holder) {
            super.onSurfaceDestroyed(holder);
        }

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

WallpaperService这个类没有太多的接口功能供我们调用,最重要的方法是onCreateEngine,我们必须在这个方法中返回一个壁纸的引擎,我们所有的绘制任务都需要在这个引擎中完成。返回的Engine对象是WallpaperService的一个内部类,在这个方法中有大量的回调方法用来帮助我们完成我们的绘制逻辑,最重要的方法包括onSurfaceCreatedonVisibilityChangedonSurfaceDestroyed等,这些回调方法的功能还是很好理解的,在这里我们在壁纸层的surface创建之后绘制一个直线,无须赘述。

3.声明androidmanifest.xml

WallpaperService也是一个service,所以也需要在清单文件中声明,这里声明需要注意permission和meta-data的声明,格式比较固定,所以也不用多说了。




    
    

    

    
        
            
                

                
            
        

        
            
                
            
            
        
    

4.启动

一般这样就可以在launcher或者设置中启动了,这里我们使用一个Activity来启动到设置的界面

  Intent localIntent = new Intent();
        localIntent.setAction(WallpaperManager.ACTION_CHANGE_LIVE_WALLPAPER);//android.service.wallpaper.CHANGE_LIVE_WALLPAPER
        localIntent.putExtra(WallpaperManager.EXTRA_LIVE_WALLPAPER_COMPONENT
                , new ComponentName(this.getApplicationContext().getPackageName()
                        , MyWallpaperService.class.getCanonicalName()));
        this.startActivity(localIntent);

设置完成之后,桌面就显示了~

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/14397.html

相关文章

  • Android launcher 壁纸 wallpaper

    摘要:壁纸分为动态和静态两种如果只需要修改默认静态壁纸替换即可或者在源码中修改对应地址修改动态壁纸在目录找到文件最后一行有定义将其修改为对应的的启动即可。壁纸分为动态和静态两种: 如果只需要修改默认静态壁纸,替换frameworks/base/core/res/res/drawable/default_wallpaper.jpg即可,或者在源码中修改对应default_wallpaper地址.修改...

    JellyBool 评论0 收藏0
  • Android】用Cubism 2制作自己的Live2D——来制作动态壁纸吧!

    摘要:类的函数用来读取文件。更新时,调用函数,把参数应用在模型上。下面就是我自己尝试的结果了前言- Andorid SDK下载  baidu云 提取码:19jm 这次我们就来研究一下官方的例子之一的liveWallPaper,也就是开发Android的动态壁纸 先来看看这个例子运行的结果: 还是蛮可爱的嘛,那么开始吧!     项目的目录- framework中是live2d要用的必须的类 ...

    gself 评论0 收藏0
  • 实现一个Android锁屏App的难点总结

    摘要:自定义一个漂亮实用的锁屏,如果能赢得用户的认可,替换系统自带的锁屏,绝对是一个不小的日活入口。这段时间正好总结一下最近调研的平台的锁屏开发中的难点。一前言锁屏的大概实现原理都很简单。 自定义一个漂亮实用的锁屏app,如果能赢得用户的认可,替换系统自带的锁屏,绝对是一个不小的日活入口。这段时间正好总结一下最近调研的Android平台的锁屏app开发中的难点。 一、前言 锁屏的大概实现原理...

    luzhuqun 评论0 收藏0
  • 45个下班时间从入门到发布 时空壁纸 APP

    摘要:下班时间可以用来干嘛呢对于开发者来说,都愿意学习一些新的知识。市场时空壁纸酷安市场时空壁纸应用宝搜时空交换机或者时空壁纸即可。框架参考使用了以下开源产品原文地址个下班时间从入门到发布时空壁纸我的博客时空路由器 下班时间可以用来干嘛呢???对于开发者来说,都愿意学习一些新的知识。我尝试学习 MVP 项目,这是我一直想啃但是总是半途而废的计划,终于有一个机会,从 Github 上参考了一个...

    Coding01 评论0 收藏0
  • 安卓实战项目-动态桌面-简单实现

    摘要:先上效果图准备,桌面是一个小视频,要求,符合手机尺寸,最好不要超过,我这个只有几,开发环境,由于没后更新。 先上效果图showImg(https://segmentfault.com/img/bVWrXZ?w=315&h=588); 准备:1,桌面是一个小视频,要求,符合手机尺寸,最好不要超过100M,我这个只有几M 2,开发环境,由于没后更新。使用的还是Android studio...

    Tonny 评论0 收藏0

发表评论

0条评论

YanceyOfficial

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<