Android 设置gif动态桌面
Android设置桌面主要用到了WallPaperService这个类。首先创建自己的类继承WallPaperService并重写onCreateEngine()方法,创建自己的Engine。
1、创建自己的Engine类GifEngine 继承Engine,重写里面的onSurfaceCreated方法,onVisibilityChanged方法,onSurfaceDestroy方法。在onSurfaceCreate方法中加载gif动画,这里涉及到gif动画的加载与播放,涉及到Movie类,用movie解码gif文件然后画在canvas上,并重复一帧一帧的绘制。这样就能将gif动画渲染到surfaceView上呈现到屏幕。
onVisibilityChanged方法在桌面可见不可见的时候进行回调,当屏幕可见的时候进行播放,屏幕不可见取消gif绘制。onSurfaceDestroy销毁的时候销毁操作。类如下:
public class GIfWallPaperService extends WallpaperService {private Movie movie; private Handler handler; private boolean isVisible; private int height; private int width; private int gifWidth; private int gifHeigth; @Override public Engine onCreateEngine() {return new GifEngine(); }class GifEngine extends Engine {@Override public void onSurfaceCreated(SurfaceHolder holder) {super.onSurfaceCreated(holder); handler = new Handler(); try {InputStream inputStream = getContentResolver().openInputStream(Config.filePath); movie = Movie.decodeStream(inputStream); DisplayMetrics displayMetrics = getResources().getDisplayMetrics(); height = displayMetrics.heightPixels; width = displayMetrics.widthPixels; gifWidth = movie.width(); gifHeigth = movie.height(); } catch (FileNotFoundException e) {e.printStackTrace(); }}@Override public void onVisibilityChanged(boolean visible) {if (visible) {isVisible = true; handler.post(runnable); } else {isVisible = false; handler.removeCallbacks(runnable); }}@Override public void onSurfaceDestroyed(SurfaceHolder holder) {super.onSurfaceDestroyed(holder); handler.removeCallbacks(runnable); } private Runnable runnable = new Runnable() {@Override public void run() {if (isVisible) { Canvas canvas = getSurfaceHolder().lockCanvas(); canvas.save(); canvas.scale(2 , 2 ); movie.draw(canvas, 0, 0); movie.setTime((int) (System.currentTimeMillis() % movie.duration())); canvas.restore(); getSurfaceHolder().unlockCanvasAndPost(canvas); handler.postDelayed(runnable, 50); //50ms表示每50m绘制一次 }}}; } }
2、配置AndroidMainfest.xml
<service android:name=".service.GIfWallPaperService" android:label="@string/gif_wallpaper" 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/gif_wallpaper" />
</service>
3、配置gif_wallpaper.xml
<?xml version="1.0" encoding="utf-8"?> <wallpaper xmlns:android="http://schemas.android.com/apk/res/android" android:thumbnail="@mipmap/ic_launcher" android:description="@string/gif_description" />
4、配置strings.xml
<string name="gif_description">gif动态壁纸</string>
5、配置权限
<uses-permission android:name="android.permission.SET_WALLPAPER" />
6、启动GifService
Intent intent = new Intent(WallpaperManager.ACTION_CHANGE_LIVE_WALLPAPER); intent.putExtra(WallpaperManager.EXTRA_LIVE_WALLPAPER_COMPONENT,new ComponentName(context, GIfWallPaperService.class)); startActivity(intent);
这样就可以实现gif动画加载了
Android 设置gif动态桌面相关推荐
- android机器人酷炫壁纸,完美酷炫体验 A60动态桌面小应用实测
一直以来,HTC Sense的绚丽界面让不少用户感觉到美观实用,便有不少高手开始逐步仿制提出.很高兴的是,笔者用A60进行测试,该应用效果实现非常完美,推荐给广大的A60用户. 美化桌面工具包含2个: ...
- 120帧手机动态壁纸_Win10电脑也能用动态桌面了?没错,设置方法还很简单
平时我们在使用手机时我们都知道,手机的桌面壁纸和锁屏壁纸都是可以设置为动态壁纸的.而对于平时所使用的电脑来说,电脑的壁纸就更为枯燥一些,只能使用静态的图片来作为电脑的桌面,很无聊很枯燥的. 但是,如果 ...
- win10动态壁纸怎么设置_想把我的女朋友设置为动态壁纸:看过来,教你啊
动态壁纸,最近已经越来越受用户的欢迎.炫酷的桌面效果非常动人,让人蠢蠢欲动,但有非常多的网友都不会设置win10动态桌面.所以今天小编就把设置win10动态桌面的方法告诉大家,下面就是设置win10动 ...
- DreamSceneSeven打造炫酷的动态桌面
动态桌面配置图文教程 --------------------------------------------Start Now------------------------------------ ...
- Android动态桌面,设置壁纸篇
最近要做一个动态桌面.就看了下动态桌面有关的东西. 1,通过WallpaperManager设置静态壁纸 1.1先通过以下方法获取到WallpaperManager 1.2这个WallpaperMan ...
- live2d动态壁纸android,live2dviewerex宅男自定义动态壁纸下载-live2dviewerex动态桌面2.0.4 官方安卓版下载_东坡手机下载...
live2dviewerex动态桌面是一款非常有趣的手机动态壁纸,只需要QQ便能登录,在登录界面可以看到相关信息.首次进入APP有针对APP的详细帮助说明,请首次使用的用户认真阅读,上面会解决你的大多 ...
- Android4.0 默认静、动态桌面设置
默认静态: (1) mkdir -p overlay\frameworks\base\core\res\res\drawable-xlarge-nodpi (2)并放置default_wallpape ...
- win10动态壁纸怎么设置_电脑怎么设置动态桌面
大多数电脑朋友的电脑桌面都是一张静态的图片壁纸,而很多朋友肯定不知道,桌面壁纸其实还可以是动态的,甚至是可以带有声音的动态视频,那么电脑怎么设置动态桌面?下面将会详解. 电脑怎么设置动态桌面 步骤1. ...
- win7 html 设置成桌面,教你怎样设置专属自己的windows7动态桌面
很多人都喜欢动态的桌面,但是动态桌面难免会有人不会设置,windows7动态桌面设置其实不难的,下面windows7之家小编就教大家win7动态桌面怎么设置. win7系统个性化教程分享: 1. 动态 ...
- win10动态壁纸怎么设置_教程:iPhone/Android设置动态壁纸
提示:点击"软曼网"↑免费订阅本公众号 昨天分享了一篇文章<干啥?想偷看手机?滚!>,很多网友留言不知道如何下载和设置.今天就在分享一下下载和设置方法.用动态Gif图 ...
最新文章
- MySQL 重要函数实例
- 分区报无效的参数_西门子70系列变频器55KW上电就报F002故障维修
- HTML 样式兼容不同设备类型
- vscode较详细注释的汇编语言hello world 输出程序,第一个汇编程序
- 安装JDK-- Java基础
- iUAP云运维平台v3.0全面支持基于K8s的微服务架构
- python3 csv读写_在python3中读取、更新和写入更新的CSV文件
- php最大并发数,php内置开发服务器的最大并发连接数
- python读取文件夹下所有文件的名字_一键汇总同一文件夹下所有表格,三种小技巧分享给你...
- 面向对象 —— 对类(class)的理解
- poj 匈牙利二分匹配算法2239 Selecting Courses
- 中医电脑cac处方系统 v1.3.3.8 免费
- 利用mybatis插件开发动态更改sql
- 程序员为了讨好大舅子,竟自学自动化编程
- C语言中表示温度符号,摄氏度符号怎么打(SCI论文中摄氏度°C符号的正确输法)...
- 手把手教你搭建一个你自己的语音合成系统
- 判断一个数n能否同时被3和5整除。
- 三、Eureka注册与发现之Eureka Comsumer
- 前端工程师简历怎么写才更容易进入面试呢?
- Hadoop的基本特点