设为首页 加入收藏

TOP

Launcher知识的demo,手机管家小伙家与悬浮窗(一)
2015-07-20 17:30:30 来源: 作者: 【 】 浏览:14
Tags:Launcher 知识 demo 手机 管家 小伙 悬浮

Launcher知识的demo,主要仿的手机管家小伙家与悬浮窗的效果。东西比较简单,直接贴代码

主要用到了windowManager 中的更新updateViewLayout(view,params),和 添加windowManager.addView()和删除windowManager.removeView()

移动launcher主要是updateViewLayout(view,params),中的params来实现

贴几个主要类,全部源码请自己下载


package com.pzf.flow;

import java.util.Timer;
import java.util.TimerTask;

import android.app.Service;
import android.content.Context;
import android.content.Intent;
import android.os.Handler;
import android.os.IBinder;
import android.util.Log;
/**
 * 开启服务,用来判断是否是主页面,如果在主页面则显示悬浮窗,否则隐藏悬浮框
 * @author pangzf
 * @time 2014年10月11日 上午11:19:42
 */
public class MyService extends Service {
	private Timer timer;
	private Handler mHandler = new Handler();

	public MyService() {
	}

	@Override
	public IBinder onBind(Intent intent) {
		return null;
	}

	@Override
	public void onCreate() {

		super.onCreate();
	}

	@Override
	public int onStartCommand(Intent intent, int flags, int startId) {
		// 开启定时器
		// 判断是否在主页面,如果在主页面同事small没有显示,则显示small
		// 开启定时器,每隔0.5秒刷新一次
		if (timer == null) {
			timer = new Timer();
			timer.scheduleAtFixedRate(new MyTimerTask(), 0, 500);
		}
		return super.onStartCommand(intent, flags, startId);
	}

	private class MyTimerTask extends TimerTask {

		@Override
		public void run() {
			showWindow();
		}

	}

	/**
	 * 判断是否在主页面,如果在主页面同事small没有显示,则显示small
	 */
	private void showWindow() {
		if (MyWindowManager.isHome(getApplicationContext()) && !MyWindowManager.isWindowShowing()) {
			mHandler.post(new Runnable() {

				@Override
				public void run() {
					MyWindowManager.createSmallWindow(getApplicationContext());
				}
			});

		} else if (!MyWindowManager.isHome(getApplicationContext()) && MyWindowManager.isWindowShowing()) {
			// 如果不是主页,但是已经有窗口了,关掉之前的窗口
			mHandler.post(new Runnable() {

				@Override
				public void run() {
					MyWindowManager.removeSmallWindow(getApplicationContext());

				}
			});
		} else if (MyWindowManager.isHome(getApplicationContext()) && MyWindowManager.isWindowShowing()) {
			mHandler.post(new Runnable() {

				@Override
				public void run() {
					 MyWindowManager.updatePercent(getApplicationContext());
				}
			});
		}
	}

	@Override
	public void onDestroy() {
		if (timer != null) {
			timer.cancel();
			timer = null;
		}
		super.onDestroy();
	}

}

package com.pzf.flow;

import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.util.ArrayList;
import java.util.List;

import android.app.ActivityManager;
import android.app.ActivityManager.MemoryInfo;
import android.app.ActivityManager.RunningTaskInfo;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
import android.graphics.PixelFormat;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.WindowManager;
import android.view.WindowManager.LayoutParams;
import android.widget.TextView;
/**
 * 管理类,1.用来创建launcher 2.删除launcher 3.更新launcher 4.改变火箭发射台的背景图 5.判断是否主页 6.界面是否存在悬浮框 7。获得运行内存等
 * @author pangzf
 * @time 2014年10月11日 上午11:20:37
 */
public class MyWindowManager {
	private static Window
首页 上一页 1 2 3 4 5 6 下一页 尾页 1/6/6
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇UVA 10452 Marcus, help!( DFS ) 下一篇Cannot generate texture from bi..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·每日一道面试题-多线 (2025-12-26 06:20:17)
·java项目中哪些地方 (2025-12-26 06:20:14)
·Java真的是要没落了 (2025-12-26 06:20:12)
·C++ Lambda表达式保 (2025-12-26 05:49:45)
·C++ Lambda表达式的 (2025-12-26 05:49:42)