精华内容
下载资源
问答
  • 看到有些手机酷炫的动态壁纸,有没有好奇过他们是如何实现的,其实我们自己也可以实现。 一、动态壁纸原理 如果你了解使用过SurfaceView的话,那么开发一款动态壁纸对你来说其实非常简单。 动态壁纸的本质其实就是...
  • Android自定义动态壁纸开发

    万次阅读 多人点赞 2019-01-06 18:35:47
    看到有些手机酷炫的动态壁纸,有没有好奇过他们是如何实现的,其实我们自己也可以实现。 一、动态壁纸原理 如果你了解使用过SurfaceView的话,那么开发一款动态壁纸对你来说其实非常简单。 动态壁纸的本质其实...

    看到有些手机酷炫的动态壁纸,有没有好奇过他们是如何实现的,其实我们自己也可以实现。

    一、动态壁纸原理

    如果你了解使用过SurfaceView的话,那么开发一款动态壁纸对你来说其实非常简单。

    动态壁纸的本质其实就是一个服务在维护一个动态壁纸引擎Engine,所以我们看到的动态效果其实是通过这个引擎画出来的。而维护这个引擎的服务,就是WallpaperService。本篇文章并不讨论内部实现原理,只是让大家知道如何去实现动态壁纸,所以就不详细说了。

     

    二、实现动态壁纸

    大体上可分为三个步骤:

    1. 创建自定义WallpaperService继承WallpaperService
    2. 在Manifest中注册该Service并添加相关属性
    3. 创建所需要的xml文件

    1.创建自定义WallpaperService

    public class MyLwp extends WallpaperService {
        @Override
        public Engine onCreateEngine() {
            return new MyEngine();
        }
    
        class MyEngine extends  Engine{
            @Override
            public SurfaceHolder getSurfaceHolder() {
                return super.getSurfaceHolder();
            }
    
            @Override
            public void onCreate(SurfaceHolder surfaceHolder) {
                super.onCreate(surfaceHolder);
            }
    
            @Override
            public void onDestroy() {
                super.onDestroy();
            }
    
            @Override
            public void onSurfaceChanged(SurfaceHolder holder, int format, int width, int height) {
                super.onSurfaceChanged(holder, format, width, height);
            }
    
            @Override
            public void onSurfaceCreated(SurfaceHolder holder) {
                super.onSurfaceCreated(holder);
            }
    
            @Override
            public void onSurfaceDestroyed(SurfaceHolder holder) {
                super.onSurfaceDestroyed(holder);
            }
        }
    }

    2.Manifest注册

            <service
                android:name=".MyLwp"
                android:enabled="true"
    
                android:permission="android.permission.BIND_WALLPAPER">
                <intent-filter>
                    <action android:name="android.service.wallpaper.WallpaperService" />
                </intent-filter>
                <meta-data
                    android:name="android.service.wallpaper"
                    android:resource="@xml/livewallpapervideo" />
            </service>

    一定要添加的几个地方:permission、intent-filter、meta-data。

    3.创建需要的xml文件

    这个xml文件就是Manifest中meta-data中的resource需要的文件:

    <?xml version="1.0" encoding="utf-8"?>
    <wallpaper xmlns:android="http://schemas.android.com/apk/res/android"
        android:description="@string/app_name"
        android:settingsActivity="ASD"
        android:thumbnail="@mipmap/ic_launcher"/>

    需要注意第二个属性:settingsActivity,这个属性可以设置也可以不设置,他是启动一个设置动态壁纸的界面,一般情况下其实用不到这个界面,我们一般会使用PreferenceActivity去实现。下面是添加该属性和不添加该属性的区别:

    完成这些之后,就是我们设计动态壁纸的时候了。回到自定义的Wallpaper类中:

    我们当时在类中自定义了一个内部类MyEngine继承自Engine。这个Engine就是用来绘制的。关于Engine的几个主要方法如下:

        class MyEngine extends  Engine{
            //获取SurfaceHolder时调用
            @Override
            public SurfaceHolder getSurfaceHolder() {
                return super.getSurfaceHolder();
            }
    
            //手势移动时回调
            @Override
            public void onOffsetsChanged(float xOffset, float yOffset, float xOffsetStep, float yOffsetStep, int xPixelOffset, int yPixelOffset) {
                super.onOffsetsChanged(xOffset, yOffset, xOffsetStep, yOffsetStep, xPixelOffset, yPixelOffset);
            }
    
            //Surface创建时回调
            @Override
            public void onSurfaceCreated(SurfaceHolder holder) {
                super.onSurfaceCreated(holder);
            }
    
            //Surface销毁时回调
            @Override
            public void onSurfaceDestroyed(SurfaceHolder holder) {
                super.onSurfaceDestroyed(holder);
            }
        }

    onOffsetsChanged要注意一下,还记得有的手机滑动桌面时候背景图片会跟着左右移动吗,这个方法就可以实现这个效果,在手势滑动的每一帧都会回调依次。一下是个人理解的参数的含义:

    xOffset:x方向滑动的百分比(与桌面分页数有关)

    yOffset:y方向滑动百分比(一般用不到)

    xOffsetStep:x方向每个分页所占的百分比(1 / xOffsetStep = 桌面的分页数)

    yOffsetStep:同

    xPixelOffset:x放下像素偏移量

    y。。。。。

     

    4.绘制。

    实现绘制的方式,就跟SurfaceView的绘制一样了:

            @Override
            public void onSurfaceCreated(SurfaceHolder holder) {
                super.onSurfaceCreated(holder);
                Canvas canvas = holder.lockCanvas();
                canvas.drawColor(Color.RED);
                holder.unlockCanvasAndPost(canvas);
            }

    我只是简单的话了一个红色背景,效果如下:

    当然可以实现很多不同的效果,这个就根据不同的需求去实现了。

    展开全文
  • 看到有些手机酷炫的动态壁纸,有没有好奇过他们是如何实现的,其实我们自己也可以实现。一、动态壁纸原理如果你了解使用过SurfaceView的话,那么开发一款动态壁纸对你来说其实非常简单。动态壁纸的本质其实就是一个...

    看到有些手机酷炫的动态壁纸,有没有好奇过他们是如何实现的,其实我们自己也可以实现。

    一、动态壁纸原理

    如果你了解使用过SurfaceView的话,那么开发一款动态壁纸对你来说其实非常简单。

    动态壁纸的本质其实就是一个服务在维护一个动态壁纸引擎Engine,所以我们看到的动态效果其实是通过这个引擎画出来的。而维护这个引擎的服务,就是WallpaperService。本篇文章并不讨论内部实现原理,只是让大家知道如何去实现动态壁纸,所以就不详细说了。

    二、实现动态壁纸

    大体上可分为三个步骤:

    创建自定义WallpaperService继承WallpaperService

    在Manifest中注册该Service并添加相关属性

    创建所需要的xml文件

    1.创建自定义WallpaperService

    public class MyLwp extends WallpaperService {

    @Override

    public Engine onCreateEngine() {

    return new MyEngine();

    }

    class MyEngine extends Engine{

    @Override

    public SurfaceHolder getSurfaceHolder() {

    return super.getSurfaceHolder();

    }

    @Override

    public void onCreate(SurfaceHolder surfaceHolder) {

    super.onCreate(surfaceHolder);

    }

    @Override

    public void onDestroy() {

    super.onDestroy();

    }

    @Override

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

    super.onSurfaceChanged(holder, format, width, height);

    }

    @Override

    public void onSurfaceCreated(SurfaceHolder holder) {

    super.onSurfaceCreated(holder);

    }

    @Override

    public void onSurfaceDestroyed(SurfaceHolder holder) {

    super.onSurfaceDestroyed(holder);

    }

    }

    }

    2.Manifest注册

    android:name=".MyLwp"

    android:enabled="true"

    android:permission="android.permission.BIND_WALLPAPER">

    android:name="android.service.wallpaper"

    android:resource="@xml/livewallpapervideo" />

    一定要添加的几个地方:permission、intent-filter、meta-data。

    3.创建需要的xml文件

    这个xml文件就是Manifest中meta-data中的resource需要的文件:

    android:description="@string/app_name"

    android:settingsActivity="ASD"

    android:thumbnail="@mipmap/ic_launcher"/>

    需要注意第二个属性:settingsActivity,这个属性可以设置也可以不设置,他是启动一个设置动态壁纸的界面,一般情况下其实用不到这个界面,我们一般会使用PreferenceActivity去实现。下面是添加该属性和不添加该属性的区别:

    完成这些之后,就是我们设计动态壁纸的时候了。回到自定义的Wallpaper类中:

    我们当时在类中自定义了一个内部类MyEngine继承自Engine。这个Engine就是用来绘制的。关于Engine的几个主要方法如下:

    class MyEngine extends Engine{

    //获取SurfaceHolder时调用

    @Override

    public SurfaceHolder getSurfaceHolder() {

    return super.getSurfaceHolder();

    }

    //手势移动时回调

    @Override

    public void onOffsetsChanged(float xOffset, float yOffset, float xOffsetStep, float yOffsetStep, int xPixelOffset, int yPixelOffset) {

    super.onOffsetsChanged(xOffset, yOffset, xOffsetStep, yOffsetStep, xPixelOffset, yPixelOffset);

    }

    //Surface创建时回调

    @Override

    public void onSurfaceCreated(SurfaceHolder holder) {

    super.onSurfaceCreated(holder);

    }

    //Surface销毁时回调

    @Override

    public void onSurfaceDestroyed(SurfaceHolder holder) {

    super.onSurfaceDestroyed(holder);

    }

    }

    onOffsetsChanged要注意一下,还记得有的手机滑动桌面时候背景图片会跟着左右移动吗,这个方法就可以实现这个效果,在手势滑动的每一帧都会回调依次。一下是个人理解的参数的含义:

    xOffset:x方向滑动的百分比(与桌面分页数有关)

    yOffset:y方向滑动百分比(一般用不到)

    xOffsetStep:x方向每个分页所占的百分比(1 / xOffsetStep = 桌面的分页数)

    yOffsetStep:同

    xPixelOffset:x放下像素偏移量

    y。。。。。

    4.绘制。

    实现绘制的方式,就跟SurfaceView的绘制一样了:

    @Override

    public void onSurfaceCreated(SurfaceHolder holder) {

    super.onSurfaceCreated(holder);

    Canvas canvas = holder.lockCanvas();

    canvas.drawColor(Color.RED);

    holder.unlockCanvasAndPost(canvas);

    }

    我只是简单的话了一个红色背景,效果如下:

    当然可以实现很多不同的效果,这个就根据不同的需求去实现了。

    以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

    本文标题: Android自定义动态壁纸开发详解

    本文地址: http://www.cppcns.com/ruanjian/android/249254.html

    展开全文
  • 看到有些手机酷炫的动态壁纸,有没有好奇过他们是如何实现的,其实我们自己也可以实现。 先看效果 上图是动态壁纸钟的一个时钟。 我们先来看看 Livewallpaper(即动态墙纸)的实现,Android的动态墙纸并不是GIF...
  • 手机桌面、锁屏壁纸,估计每个人都会不定时的进行更换,换成自己喜欢的爱豆或动漫,能让自己的...最近抖音上有个红人费启鸣,很多迷妹迷上他后,纷纷把他的抖音视频设置成了苹果手机动态壁纸。那么相信就有同学...

    手机桌面、锁屏壁纸,估计每个人都会不定时的进行更换,换成自己喜欢的爱豆或动漫,能让自己的手机与众不同,又能让自己的心情愉悦。虽然说现在手机的桌面或者是锁屏壁纸系统都会不定时的进行更新,但是想要找到一款适合自己,自己又喜欢的桌面或锁屏壁纸也不简单,自定义桌面或锁屏壁纸这个时候就发挥了很大的作用。

    最近抖音上有个红人费启鸣,很多迷妹迷上他后,纷纷把他的抖音视频设置成了苹果手机的动态壁纸。那么相信就有同学问了,这是怎么设置的呢?其实很简单,下面小编就通过自定义拍照的方式教大家把照片设置成苹果手机的live动态锁屏壁纸吧。

    苹果手机在新系统中带来了一个新的功能,live photo功能,这个功能直接翻译过来就是实况照片,这个live photo其实就是一个长3s,能够记录拍照时的动作以及声音信息的小视频,是一张活的照片,拍摄后的照片可以直接设置成壁纸或锁屏壁纸。

    那么这个功能到底怎么用呢?下面小编就来教一下大家苹果手机自制live动态壁纸的方法,还不会的同学可以赶快学起来了。具体的操作以iPhone7为例。

    苹果live photo的拍摄方法:

    1. 首先需要你打开手机,然后在桌面图片中,找到【相机】并打开。

    2. 打开相机后,我们看一下相机最上角的一些图标,其中最中间的圆形图标就是实况照片,系统默认这个开关是打开的,如果你的图标不是黄色的而是白色的,那么代表你的实况照片功能没有开启,点击打开就可以了。

    3. 打开实况开关后,你就可以拍摄照片了,随便拍一张你喜欢的照片或者爱豆的照片就可以了,如果想要听到声音,你可以自己用手机放一段音乐,拍摄照片的同时手机会自动记录音频信息哦。

    4. 照片拍摄完毕后,是不是发现好像和普通的图片没什么区别?是的,单单看是没看出来这个照片和普通照片的区别,但是你可以注意一下照片左上角,照片是live photo的话,左上角会有一个标志,小编这里手机上显示的是实况,说明这个照片就是live photo。

    如何查看照片拍摄时记录的动作和视频呢?这个时候只需要将你的手指放到屏幕上按住,看看照片是不是就变成动态的照片了?

    5. 这时候我们就要把刚才拍的照片设置成锁屏壁纸了,首先需要点击图片左下角的第一个图标。

    6. 在这里我们可以把刚才拍摄的照片分享给其他人,或者是用做壁纸,这里以设置成锁屏壁纸为例,需要我们选择【用作壁纸】。

    7. 选择完成后,我们就到了设置页面,这时我们看到图片下方会有三个选项,分别是是【静态】、【透视】和【实况照片】,这里我们选择【实况照片】,然后点击【设定】。

    8. 点击【设定】以后,还需要我们来选择图片设置的位置,这里我们选择【设定锁定屏幕】,然后稍等一会后,设定就完成了。

    9. 设置完成后,我们把手机上锁,来看看锁屏界面吧。

    10. 是不是感觉还是普通照片,没有动啊?其实这个苹果live动态壁纸的效果和我们刚才拍摄完照片查看照片的拍摄动作一样,需要我们用手指按住屏幕,才能看到照片的live效果,下面就和小编一起来操作吧。

    图片是不是变成了live动态的壁纸了?拍摄设置方法有没有很简单呢?

    当然,你也可以直接使用苹果手机系统中的实况照片用作锁屏壁纸,一切都按照自己的喜好来就可以了。其实每次手机系统升级都可能给我们带来一些新的功能,只不过我们没有及时发现而已,发现了新功能后是不是觉得科技感满满呢?

    展开全文
  • 但是,有很多用户想要修改但不知道如何修改手机中的设置,因此今天我将与大家分享改变华为手机中设置主题动态壁纸的方法. 有兴趣的朋友不妨一起看看下面的教程,希望对大家有所帮助.1. 第一步,单击进入手机的应用...

    01ba4d569a431c6ac725af2324cb.jpg

    许多智能手机现在可以设置动态桌面墙纸,您还可以选择自己喜欢的桌面主题. 很多用户经常使用系统随附的主题界面后会感到呆板,因此他们想自己设置一些不同的主题界面,还可以自定义一些动态锁屏墙纸. 但是,有很多用户想要修改但不知道如何修改手机中的设置,因此今天我将与大家分享改变华为手机中设置主题动态壁纸的方法. 有兴趣的朋友不妨一起看看下面的教程,希望对大家有所帮助.

    2e216aaa7881cc69b593bc945ca43d9e.png

    15eeba943a99a86dd7e68005994123ac.png

    1. 第一步,单击进入手机的应用界面,在界面中找到设置图标,单击进入手机的功能设置界面怎样在手机上弄主题,然后在设置界面中选择墙纸和字体.

    b35803bde0a469d20581feaae083402d.png

    0ebd6d6ca2476242df489780d4658850.png

    2. 输入墙纸和字体设置后,我们在界面的动态墙纸选项中单击自定义,然后将跳至手机主题商店中的推荐墙纸界面,然后在下一个中找到我们喜欢的墙纸步. 单击该墙纸.

    69a2178783316f1c72ce6e2a811ba5e4.png

    4e14a4101bbac72ab9fd79c0b45ae130.png

    3. 单击所选动态壁纸的主题后,您可以在手机上预览效果. 如果预览效果令人满意,我们可以单击左下角的应用程序按钮以启动应用程序.

    8f798874cdada8c4c3bb81d844c596c7.png

    b692fc2000c64fc12f6beb311658da63.png

    4. 等待操作完成后,我们的手机桌面和锁屏界面将成为我们之前选择的主题动态壁纸.

    a43f7972ee56ee1b2f6de0a11bb57658.png

    以上是在华为手机中设置主题动态壁纸的步骤. 许多使用智能手机的用户喜欢将手机的主题或壁纸更改为动态怎样在手机上弄主题,因此它看起来既更新又漂亮,如果不了解,请执行本教程中的方法.

    本文来自电脑杂谈,转载请注明本文网址:

    http://www.pc-fly.com/a/ruanjian/article-228643-1.html

    展开全文
  • android开发资料大全

    热门讨论 2013-04-07 15:51:23
    Android源码之动态壁纸引擎 动态桌面实现 android控件的抖动效果 很漂亮的ListView android 图像处理滤镜 照亮边缘特效 无闪烁启动画面 Android实现《天女散花》效果--(带源码) 天天动听 半透明Menu效果 Android ...
  • 16.6 应用更华丽——动态壁纸 435 16.7 小结 441 第三部分 高级篇 第17章 HTML5与移动Web开发 444 17.1 HTML5简介 444 17.2 HTML5精彩效果演示 445 17.3 HTML5在Android中的应用 447 17.4 HTML5的画布...
  • 16.6 应用更华丽——动态壁纸 435 16.7 小结 441 第三部分 高级篇 第17章 HTML5与移动Web开发 444 17.1 HTML5简介 444 17.2 HTML5精彩效果演示 445 17.3 HTML5在Android中的应用 447 17.4 HTML5的画布...
  •  实例073 使用正则表达式验证手机号 89  实例074 使用正则表达式验证身份证号 90  实例075 使用正则表达式验证两位小数 91  实例076 使用正则表达式验证一年的12个月份 92  实例077 使用正则表达式验证一个...
  • 实例189 在程序中使用自定义文件格式 242 实例190 简单的文件加密解密 244 5.7 其他 246 实例191 在DELPHI中控制Word 246 实例192 带日志的程序 247 实例193 获取窗口文本 248 实例194 判断文件是否...
  • 实例073 使用正则表达式验证手机号 实例074 使用正则表达式验证身份证号 实例075 使用正则表达式验证两位小数 实例076 使用正则表达式验证一年的12个月份 实例077 使用正则表达式验证一个月的31天 实例078 ...
  • 实例073 使用正则表达式验证手机号 实例074 使用正则表达式验证身份证号 实例075 使用正则表达式验证两位小数 实例076 使用正则表达式验证一年的12个月份 实例077 使用正则表达式验证一个月的31天 实例078 ...
  • 实例073 使用正则表达式验证手机号 实例074 使用正则表达式验证身份证号 实例075 使用正则表达式验证两位小数 实例076 使用正则表达式验证一年的12个月份 实例077 使用正则表达式验证一个月的31天 实例078 ...
  • 实例073 使用正则表达式验证手机号 89 实例074 使用正则表达式验证身份证号 90 实例075 使用正则表达式验证两位小数 91 实例076 使用正则表达式验证一年的12个月份 92 实例077 使用正则表达式验证一个月的31天 93 ...
  • vc++ 应用源码包_1

    热门讨论 2012-09-15 14:22:12
    内部包含了atl控件的开发以及如何应用,演示了COM的包容与集合、自动化、事件和连接点、枚举器和集合以及线程管理等等。 ATL实现的CDHtmlDialog模板类v1.03 使用了六个类五个模块类演示了atl的调用方法 ...
  • vc++ 应用源码包_2

    热门讨论 2012-09-15 14:27:40
    内部包含了atl控件的开发以及如何应用,演示了COM的包容与集合、自动化、事件和连接点、枚举器和集合以及线程管理等等。 ATL实现的CDHtmlDialog模板类v1.03 使用了六个类五个模块类演示了atl的调用方法 ...
  • vc++ 应用源码包_6

    热门讨论 2012-09-15 14:59:46
    内部包含了atl控件的开发以及如何应用,演示了COM的包容与集合、自动化、事件和连接点、枚举器和集合以及线程管理等等。 ATL实现的CDHtmlDialog模板类v1.03 使用了六个类五个模块类演示了atl的调用方法 ...
  • vc++ 应用源码包_5

    热门讨论 2012-09-15 14:45:16
    内部包含了atl控件的开发以及如何应用,演示了COM的包容与集合、自动化、事件和连接点、枚举器和集合以及线程管理等等。 ATL实现的CDHtmlDialog模板类v1.03 使用了六个类五个模块类演示了atl的调用方法 ...
  • vc++ 应用源码包_4

    热门讨论 2012-09-15 14:38:35
    内部包含了atl控件的开发以及如何应用,演示了COM的包容与集合、自动化、事件和连接点、枚举器和集合以及线程管理等等。 ATL实现的CDHtmlDialog模板类v1.03 使用了六个类五个模块类演示了atl的调用方法 ...
  • vc++ 应用源码包_3

    热门讨论 2012-09-15 14:33:15
    内部包含了atl控件的开发以及如何应用,演示了COM的包容与集合、自动化、事件和连接点、枚举器和集合以及线程管理等等。 ATL实现的CDHtmlDialog模板类v1.03 使用了六个类五个模块类演示了atl的调用方法 ...
  • 实例172 随机更换壁纸程序 243 实例173 屏幕保护 244 实例174 模拟石英钟 247 实例175 生肖速查 249 第5章 多媒体技术 251 5.1 CD、VCD播放 252 实例176 播放指定的avi-mid-wav文件 252 实例177 获取多媒体详细信息...
  • 程序开发范例宝典>>

    2012-10-24 10:41:28
    实例172 随机更换壁纸程序 243 实例173 屏幕保护 244 实例174 模拟石英钟 247 实例175 生肖速查 249 第5章 多媒体技术 251 5.1 CD、VCD播放 252 实例176 播放指定的avi-mid-wav文件 252 实例...
  • C#程序开发范例宝典(第2版).part02

    热门讨论 2012-11-12 07:55:11
    实例172 随机更换壁纸程序 243 实例173 屏幕保护 244 实例174 模拟石英钟 247 实例175 生肖速查 249 第5章 多媒体技术 251 5.1 CD、VCD播放 252 实例176 播放指定的avi-mid-wav文件 252 实例177 获取多媒体...
  • C#程序开发范例宝典(第2版).part13

    热门讨论 2012-11-12 20:17:14
    实例172 随机更换壁纸程序 243 实例173 屏幕保护 244 实例174 模拟石英钟 247 实例175 生肖速查 249 第5章 多媒体技术 251 5.1 CD、VCD播放 252 实例176 播放指定的avi-mid-wav文件 252 实例177 获取多媒体...
  • 实例172 随机更换壁纸程序 243 实例173 屏幕保护 244 实例174 模拟石英钟 247 实例175 生肖速查 249 第5章 多媒体技术 251 5.1 CD、VCD播放 252 实例176 播放指定的avi-mid-wav文件 252 实例177 获取多媒体...
  • 实例172 随机更换壁纸程序 243 实例173 屏幕保护 244 实例174 模拟石英钟 247 实例175 生肖速查 249 第5章 多媒体技术 251 5.1 CD、VCD播放 252 实例176 播放指定的avi-mid-wav文件 252 实例177 获取多媒体...
  • 实例172 随机更换壁纸程序 243 实例173 屏幕保护 244 实例174 模拟石英钟 247 实例175 生肖速查 249 第5章 多媒体技术 251 5.1 CD、VCD播放 252 实例176 播放指定的avi-mid-wav文件 252 实例177 ...
  • 实例172 随机更换壁纸程序 243 实例173 屏幕保护 244 实例174 模拟石英钟 247 实例175 生肖速查 249 第5章 多媒体技术 251 5.1 CD、VCD播放 252 实例176 播放指定的avi-mid-wav文件 252 实例177 ...

空空如也

空空如也

1 2
收藏数 30
精华内容 12
关键字:

如何自定义手机动态壁纸