读书人

android动态壁纸一初步框架(有背

发布时间: 2013-11-02 19:41:10 作者: rapoo

android动态壁纸1——初步框架(有背景,能使用)
<application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <service android:name="com.mywallpaper.service.MyWallpaperService" android:enabled="true" android:icon="@drawable/icon" android:label="@string/app_name" android:permission="android.permission.BIND_WALLPAPER" > <intent-filter android:priority="1" > <action android:name="android.service.wallpaper.WallpaperService" /> </intent-filter> <meta-data android:name="android.service.wallpaper" android:resource="@xml/mywallpaper" /> </service> </application>

?? 4.壁纸信息实现:在res目录下创建文件夹xml,添加xml文件mywallpaper.xml如下内容:

其中android:description是描述;后面两行信息可以不用

<wallpaper     xmlns:android="http://schemas.android.com/apk/res/android"      android:thumbnail="@drawable/icon"     android:description="@string/description"/>

?? 5.MyWallPaperService的实现:

???? 5.1 继承WallPaperService并实现其方法

?

?

?

??? ?5.2 创建内部类MyEngine并继承Engine;

?

???? 5.3 提供初始化图片的方法

/** * 初始图片 */public void initImg() {backgound = BitmapFactory.decodeResource(this.getResources(),R.drawable.backgound);}

?? ?5.4 提供绘画的方法

/** * 绘画的方法 */private void draw(){SurfaceHolder holder = engine.getSurfaceHolder();Canvas canvas = holder.lockCanvas(null);if (canvas != null) {canvas.drawBitmap(backgound, 0, 0, null);}holder.unlockCanvasAndPost(canvas);}

?

????? 5.5 engine中创建时初始化图片

private final Paint paint = new Paint(); // 创建画笔@Overridepublic void onCreate(SurfaceHolder surfaceHolder) {super.onCreate(surfaceHolder);paint.setAntiAlias(true);// 打开抗锯齿initImg();// 初始化位图资源}}

?

???? 5.6 surface被创建时绘图

/** * 该方法是应用程序第一次创建时要调用。可在这个方法里调用父类对应方法。 * 该方法执行完毕后系统会立即调用onSurfaceChanged方法 */@Overridepublic void onSurfaceCreated(SurfaceHolder holder) {// TODO Auto-generated method stubsuper.onSurfaceCreated(holder);draw();}

?? 6.至此即可运行:



android动态壁纸一——初步框架(有背景,能使用)
?
?

读书人网 >Android

热点推荐