android动态壁纸1——初步框架(有背景,能使用,仿可爱宝贝)

可爱宝贝下载链接

一、简介:

        正如别人所说的一样:动态壁纸是一个Android应用程序,包括一个服务(WallpaperService)。该服务必须包括一个引擎(WallpaperService.Engine)。该引擎是连接用户、桌面、系统之间的桥梁。它也可以绘制桌面壁纸。动态壁纸是一个apk应用,但是不同的是这个在我们实现的时候可以不用activity

二、权限与声明:

        在AndroidManifest.xml中添加权限android:permission="android.permission.BIND_WALLPAPER",否则该壁纸只能预览,不能被实际应用

        在AndroidManifest.xml中添加声明android:name="android.service.wallpaper.WallpaperService"以便系统识别(后面代码中可见)

三、操作:

  1.创建一个android工程(没有activity和布局文件的空工程)——MyWallPaper

  2.在src下创建包com.mywallpaper.service,并创建一个服务类-MyWallPaperService

  3.在AndroidManifest.xml中配置服务的信息

其中android:name是你的service的包类路径;

android:icon是在动画壁纸列表中显示的图标(相当于应用列表中的图标)

android:label:壁纸的标签,相当于一个应用的名称

android:resource="@xml/mywallpaper"是其信息,接下来实现。

<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(); // 创建画笔

		@Override
		public void onCreate(SurfaceHolder surfaceHolder) {
			super.onCreate(surfaceHolder);
			paint.setAntiAlias(true);// 打开抗锯齿
			initImg();// 初始化位图资源
		}
	}

     5.6 surface被创建时绘图

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

   6.至此即可运行:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ActivityManager是Android系统中非常重要的一个组件,负责管理系统中所有Activity的生命周期、进程管理、任务管理等。在本篇文章中,我们将深入了解ActivityManager框架的实现原理。 ## Activity的启动过程 在Android系统中,Activity是应用程序中最基本的界面单元。当用户点击应用程序的图标时,ActivityManager会负责启动应用程序并启动相应的Activity。下面是Activity的启动过程: 1. 应用程序进程启动:ActivityManager会创建一个新的进程来运行应用程序。 2. 应用程序的Application对象创建:在应用程序进程启动之后,ActivityManager会负责创建应用程序的Application对象。 3. Activity对象创建:当用户点击应用程序的图标并选择启动Activity时,ActivityManager会负责创建相应的Activity对象。 4. Activity的onCreate方法调用:ActivityManager会调用Activity对象的onCreate方法,完成Activity的初始化工作。 5. Activity的onStart方法调用:ActivityManager会调用Activity对象的onStart方法,将Activity显示给用户。 6. Activity的onResume方法调用:ActivityManager会调用Activity对象的onResume方法,让Activity成为用户交互的焦点。 7. Activity的生命周期结束:当用户退出Activity时,ActivityManager会负责销毁Activity对象。 ## 进程管理 在Android系统中,每个应用程序都运行在一个独立的进程中。ActivityManager负责管理所有进程,以确保系统的稳定和性能。 当应用程序被启动时,ActivityManager会为其创建一个新的进程并分配一定的内存资源。如果此时系统内存不足,ActivityManager会根据一定的策略来回收一些进程内存,以确保系统正常运行。 ActivityManager还负责监控进程的CPU使用情况和内存使用情况。如果一个进程的CPU使用率过高或者内存使用量过大,ActivityManager会考虑回收该进程的资源,以避免系统崩溃。 ## 任务管理 在Android系统中,任务是指一组相关的Activity。当用户启动一个应用程序时,ActivityManager会创建一个新的任务,并将应用程序的第一个Activity加入到该任务中。 当用户从一个Activity切换到另一个Activity时,ActivityManager会将前一个Activity加入到任务的后台,并将新的Activity显示给用户。当用户点击返回键时,ActivityManager会将当前Activity从任务中移除,并将前一个Activity重新显示给用户。 需要注意的是,当应用程序中的所有Activity都被销毁时,该应用程序的任务也会被销毁。这是因为Android系统中的Activity都是基于任务的,一个应用程序的所有Activity都属于同一个任务。 ## 总结 ActivityManager是Android系统中非常重要的一个组件,它负责管理系统中所有Activity的生命周期、进程管理、任务管理等。在本篇文章中,我们深入了解了ActivityManager的实现原理。熟悉ActivityManager的工作原理对于开发高质量的Android应用程序非常重要。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值