1 桌面宠物APP需求分析
1.1 项目简介
使用安卓开发实现一个类似QQ宠物的桌面宠物APP。
1.2 灵感来源
之前看到360安全卫士在安卓桌面实现悬浮窗的功能,我想利用悬浮窗这个想法来实现一个全局安卓桌面宠物APP。
1.3 实现功能
• 宠物成长功能:根据手机使用时长实现宠物进化升级的功能,主要是宠物形态的变化;
• 随意移动宠物;
• 点击宠物打开功能菜单:包括照相、购物和回家功能;
• 打开APP首页;
• 打开淘宝首页;
• 打开照相机;
• 未完待续。
2 桌面宠物APP实现分析
2.1 悬浮窗的实现
基于Android开发四大组件之一的Service实现悬浮窗。
• 定义PetWindowService类继承Service类
1 | public class PetWindowService extends Service{...} |
• 用WindowManager类来实现悬浮窗的窗体参数的设置。
1 | wm = (WindowManager) getSystemService(Context.WINDOW_SERVICE); |
1 | private void showPetView() { |
• 实现宠物拖拽。
1 | // 实现拖拽宠物 |
2.2 宠物功能菜单栏的实现
• 实现功能菜单栏,主要是ImageView的监听事件
实现菜单开关:使用count计数来判断奇数单击还是偶数单击对应打开菜单和关闭菜单。
控制菜单可见方法:ImageView控件的setVisibility方法包括三个属性:VISIBLE、GONE、INVISIBLE,分别表示控件可见、不可见且不占位、不可见且占位。
1 | // 实现单击打开菜单,第二次关闭菜单 |
• 跳转到APP主页,从Service跳转到Activity需要设置intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);,跳转到其他APP也要用到这行代码。
1 | // 点击imgHome打开主页面 |
• 跳转到相机。
1 | // 点击imgCamera打开相机 |
• 跳转到淘宝。
1 | // 点击imgCart打开淘宝 |
2.3 APP主页显示宠物信息
主页实现功能主要包括:宠物取名,选择宠物类型,领养新宠物,选择已有宠物进行展示,宠物名字展示,宠物类型展示,宠物年龄展示,释放宠物,收回宠物,删除宠物。
• 第一部分:创建宠物
选择宠物类型,Spinner控件监听事件。
1 | // 选择宠物类型 |
创建宠物类型,Button控件监听事件,将宠物名字一并记录。
1 | // 创建宠物 |
• 第二部分:展示宠物信息
首先从数据库中选择已有宠物进行展示。
1 | // 从数据库中选择一只宠物 |
释放宠物,即生成悬浮窗。
1 | // 释放宠物 |
收回宠物。
1 | // 收回宠物 |
删除宠物:删除适配器和数据库对应宠物。
1 | public void removePet(String name) { |
详细代码见github。