动态桌面程序框架
来源:互联网 发布:优化政府组织结构 编辑:程序博客网 时间:2024/05/01 23:42
0.简介
参照动态桌面官方范例源代码 —— CubeWallpaper可以快速开发自己的动态桌面,但实际上一个完整的程序还需要其他的资源文件,在这里以准备用的BallWallpaper为例子贴出所有代码。
1.源文件(不需要Activity,只有一个BallWallpaper.java)
package com.tobe;import android.graphics.*;import android.os.Handler;import android.service.wallpaper.WallpaperService;import android.view.MotionEvent;import android.view.SurfaceHolder;public class BallWallpaper extends WallpaperService {@Overridepublic Engine onCreateEngine() {return new BallEngine();}class BallEngine extends Engine {private boolean isVisible;private float xTouch = -1;private float yTouch = -1;private float xBall = 15;private float yBall = 20;private Paint paint = new Paint();Handler mHandler = new Handler();private final Runnable drawTarget = new Runnable() {public void run() {draw();}};@Overridepublic void onCreate(SurfaceHolder surfaceHolder) {super.onCreate(surfaceHolder);paint.setColor(0xffffffff);paint.setAntiAlias(true);paint.setStrokeWidth(2);paint.setStrokeCap(Paint.Cap.ROUND);paint.setStyle(Paint.Style.STROKE);setTouchEventsEnabled(true);}@Overridepublic void onDestroy() {super.onDestroy();mHandler.removeCallbacks(drawTarget);}@Overridepublic void onVisibilityChanged(boolean visible) {isVisible = visible;if (visible) {draw();} else {mHandler.removeCallbacks(drawTarget);}}@Overridepublic void onOffsetsChanged(float xOffset, float yOffset, float xStep,float yStep, int xPixels, int yPixels) {draw();}@Overridepublic void onTouchEvent(MotionEvent event) {if (event.getAction() == MotionEvent.ACTION_MOVE) {xTouch = event.getX();yTouch = event.getY();} else {xTouch = -1;yTouch = -1;}super.onTouchEvent(event);}private void logic(){}private void draw() {final SurfaceHolder holder = getSurfaceHolder();Canvas c = null;try {c = holder.lockCanvas();if (c != null) {c.save();c.drawColor(0xff000000);drawTouchPoint(c);c.drawCircle(xBall, yBall, 80, paint);c.restore();}} finally {if (c != null)holder.unlockCanvasAndPost(c);}mHandler.removeCallbacks(drawTarget);if (isVisible) {xBall += 15;yBall += 20;if (xBall > 320)xBall = 15;if (yBall > 400)yBall= 20;mHandler.postDelayed(drawTarget, 100);}}private void drawTouchPoint(Canvas c) {if (xTouch >= 0 && yTouch >= 0) {c.drawCircle(xTouch, yTouch, 40, paint);}}}}
2.res文件(可以自己导入icon,还有xml文件夹下的ballwallpaper.xml)
<?xml version="1.0" encoding="utf-8"?><wallpaper xmlns:android="http://schemas.android.com/apk/res/android"/>
3.配置文件(修改AndroidManifest.xml)
<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.tobe" android:versionCode="1" android:versionName="1.0"><applicationandroid:icon="@drawable/ic_ball"android:label="@string/app_name"><service android:label="@string/app_name"android:name=".BallWallpaper"android:permission="android.permission.BIND_WALLPAPER"><intent-filter><actionandroid:name="android.service.wallpaper.WallpaperService" /></intent-filter><meta-data android:name="android.service.wallpaper"android:resource="@xml/ballwallpaper" /></service></application></manifest>
4.Done
- 动态桌面程序框架
- 关于动态桌面
- 免费动态桌面
- 12款动态桌面
- 手机动态桌面壁纸源码
- C#实现动态桌面背景图片切换
- ubuntu下实现动态桌面壁纸
- Android视频桌面,动态桌面开发
- ubuntu 动态桌面xml文件生成脚本
- 动态桌面官方范例源代码 —— CubeWallpaper
- 用C#实现动态桌面墙纸(转)
- Android4.0 默认静、动态桌面设置
- Android4.0 默认静、动态桌面设置
- UBUNTU动态桌面墙纸配置文件脚本,配置步骤
- Ubuntu 10.04下实现动态桌面壁纸
- DreamSceneSeven打造炫酷的动态桌面
- win7设置动态桌面,将视频设为桌面
- 接口与程序框架
- android adb常用指令
- 我决定学习一门汇编
- Zen Cart下拉size属性改成全部展示的效果
- Struts2中实现文件上传
- 10种构建J2EE方法让架构设计师快速成为专家
- 动态桌面程序框架
- qml入门学习小结
- java开发注意事项
- net下获取app.config参数/web.config的参数方法汇总;
- 几道经典的SQL笔试题目(有答案)
- Windows下系统分析和调试工具
- VS插件(支持vs2010可用)Visual AssistX 10.6.1837安装包和破解补丁下载
- 几个主流的Java连接池
- Qt :非window子窗体的透明度设置