网上有很多牛人研究 Launcher,说的都不错,但是个人还是觉得在技术方面还是各抒己见的为好,毕竟每个人研究的面不一样,借此,也想为自己做个笔记。
本博客主要是基于 android2.3.7 的源码研究 Launcher,开发工具依然使用 Eclipse(见过很多大牛直接使用文本编辑器,抛弃IDE),编译测试环境选择 ubuntu ,测试效果采用模拟器。
关于 Launcher 的初步介绍以及 Launcher 源码结构,建议大家动手动眼去搜搜、看看,这里不再赘述!
看过基本的知识之后,大家就可以下载源码,博客http://blog.csdn.net/androidbluetooth/article/details/6538254说了如何下载 android2.3.7 的源码,然后就可以编译源码。
注意:源码开发,你首先需要编译源码,然后才可以编译某一个模块比如 Launcher。
长按 Home 可以弹出下面的 Dialog(图 1)
其中有一项就是选择 “壁纸”,当选择之后,出现一个选择器(不是 Dialog)哟!(图 2)
这个时候,你可以选择是一般的壁纸,还是比较炫的动态壁纸或者是从设备中寻找存在的照片(如果没有还可以照相)等。
那麽代码是如何调用的呢?看下图:
调用关系不算复杂,当然我们还可以使用菜单来启用添加选项,最终还是调用
方法。
那麽在这个方法中,到底发生什么呢?研究源码。
原来如此,其实是根据 Intent 调用相关的 Activity。
首先,你得搞清楚Intent.ACTION_SET_WALLPAPER 表示什么含义以及它的真实值,这查看 API 文档就会明白。
该 Intent 常量是一个 String,表示启用设置壁纸的 Activity,也就是说只要我们的系统中有这样的 Activity(action 为
android.intent.action.SET_WALLPAPER)就可以出现在选择器中。
那麽,原生的 android 系统中有三个(从图2可以看出)这样的 Activity,下面细细说来!
1.WallpaperChooser.java
这是 Launcher 中的一个类,主要是选择壁纸的操作,和 Launcher.java 在一个包下面。通过 Launcher 的 Manifest.xml 文件就可以看到答案:
2.LiveWallpaperListActivity.java
位于 /packages/wallpapers/LivePicker/src/com/android/wallpaper/livepicker 下面,主要是选择动态壁纸。其 Manifest.xml 文件:
3.Photographs.java
在以前的版本中,android 使用的是Gallery,现在改变为Gallery3D,位于/packages/apps/Gallery3D/src/com/cooliris/media,对应的 Manifest.xml 文件可自行查阅。
至此,明白了选择壁纸所发生的故事了。
接下来,你可以按照android opensource: 源码开发基础改变代码运行试一试了,实践最重要!好运!
推荐几篇好文章:
Android原理揭秘系列之一动态墙纸
Launcher修改默认壁纸(default_wallpaper)
分享到:
相关推荐
a20_hummingbird_v4.5_v1.0_csi01_2ov7670_rtl8188eus 20150918 1830 JNI.7z 无法打开USB Wifi rtl8188eus.txt 配置前后ov7670双摄像头 JNI调用读写一次之后就会出现内核出错,系统死机。 有可能与系统为android...
动画参考: : :camera_with_flash: 屏幕截图您可以在观看该应用程序的视频主要的选择持续时间计时器运行 :eyes: 预览运行执照Copyright 2020 The Android Open Source ProjectLicensed under the Apache License, ...
# Copyright (C) 2008 The Android Open Source Project # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may ...
https://sites.google.com/a/android.com/opensource/release-features Android Android Android Android 盈利模式 Android 的 App Market 模式,软件开发者获得 7 成收入, 3 成用于系统维护。难点在于位置营销。 ...
Android ICS源代码的Launcher 2的编译版本 这个程序不是没有错误。 添加小部件将使应用程序崩溃(因为它使用系统级权限。如果您通过root用户安装,它将起作用)。 克里斯蒂安·莱恩(Kristjan Laane)修复了缩放...
这是一个完全从头开始构建的Android设备开源启动程序项目。 该启动器的主要目标是在定制和简单之间找到一个健康的中介。 在这一点上,它实现了典型启动器所需的大多数功能,但可以从一些常规的改进中受益匪浅。 如果...
This an open source Android launcher project, started from scratch. We aim to create a powerful and community driven launcher for Android. Please go to the OpenLauncher Wiki for more information. ...
Welcome to my Open Source, easy to use Weather app, built using Android Studio for Android 4.1 Get it on Google Play and F-Droid: Changelog: (Version 4.0) Added App Shortcuts for Launcher Icon ...
Simple-App-Launcher:用于收藏应用程序的简单支架,可快速,轻松地管理应用程序启动器图标
下载管理器 一个库,用于处理长时间运行的下载,处理网络交互并在失败后自动重试下载。 客户端可以批量请求下载,在分配完成后,可以收到分配给批处理的所有文件的单个通知,同时可以检索单个文件... ic_launcher_round
开源android应用程序启动器 ADWLauncher的源代码,希望对有需要的朋友有帮助。
一种将手机界面替换为更大、更简单和更友好的界面的平台。 ...秃头手机 文档 安装手册 pdf (希伯来语) 贡献 完整版 Beta apk (用于测试目的的最新版本) 第二版 注意:Google Play 版本不包含最近通话功能。...