[android]仿360状态,类流量监控桌面浮动显示

前两天看到部分音频播放器可以实现在桌面上显示歌词,360那个浮动的桌面提示,想不到怎么实现。然后查了些资料大致了解了下,比想象的简单多了。先看效果图吧。

白色的字体是我加入进去的,此时是可以允许切换背景的。且按住白色背景可以拖动。

其实主要就是注册一个view到windowsManager上去,然后对它的参数配置成可显示到桌面上的参数就可以了。

下面是代码

activity

就是简单的一个按钮 layout就不写了

package com.cfuture.desktop;

import android.app.Activity;

import android.content.Intent;

import android.os.Bundle;

import android.view.View;

public class AndroidDesktopActivity extends Activity {

//一个有只有一个按钮的activity

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

}

public void funClick(View v){

//按钮被点击

this.startService(new Intent(this,Mser.class));

// new TableShowView(this).fun(); 如果只是在activity中启动

// 当activity跑去后台的时候[暂停态,或者销毁态] 我们设置的显示到桌面的view也会消失

// 所以这里采用的是启动一个服务,服务中创建我们需要显示到table上的view,并将其注册到windowManager上

this.finish();

}

}

然后是一个服务

package com.cfuture.desktop;

import android.app.Service;

import android.content.Intent;

import android.os.IBinder;

public class Mser extends Service {

//服务

//这个类纯蛋疼用 只是为了在activity点击button后 在开启一个service

@Override

public IBinder onBind(Intent intent) {

// TODO Auto-generated method stub

return null;

}

public void onCreate() {

//创建service时一个 实例化一个TableShowView对象并且调用他的fun()方法把它注册到windowManager上

super.onCreate();

new TableShowView(this).fun();

}

@Override

public int onStartCommand(Intent intent, int flags, int startId) {

// TODO Auto-generated method stub

return super.onStartCommand(intent, flags, startId);

}

}

最后是一个复写的view其实不复写view 也行 总之是能传入context对象就可以的了 不过如果想要实现歌词那种或者可以动态改变内容的 就要复写view分支的类了。

TableShowView

package com.cfuture.desktop;

import android.content.Context;

import android.view.LayoutInflater;

import android.view.MotionEvent;

import android.view.View;

import android.view.WindowManager;

public class TableShowView extends View {

//如果是想显示歌词则继承TextView并复写ondraw方法。

//开启一个线程不断的调用ondraw方法去更改你所写的继承自TextView的内容

//这里随便写了个集成自view的= =这个不是重点

Context c;

WindowManager mWM;//WindowManager

WindowManager.LayoutParams mWMParams;//WindowManager参数

public TableShowView(Context context) {

// TODO Auto-generated constructor stub

super(context);

c = context;

}

public void fun() {

//设置载入view WindowManager参数

mWM = (WindowManager) c.getSystemService(Context.WINDOW_SERVICE);

final View win = LayoutInflater.from(c).inflate(R.layout.ctrl_window,

null);

//这里是随便载入的一个布局文件

win.setOnTouchListener(new OnTouchListener() {

//触屏监听

float lastX, lastY;

public boolean onTouch(View v, MotionEvent event) {

final int action = event.getAction();

float x = event.getX();

float y = event.getY();

if (action == MotionEvent.ACTION_DOWN) {

lastX = x;

lastY = y;

} else if (action == MotionEvent.ACTION_MOVE) {

mWMParams.x += (int) (x - lastX);

mWMParams.y += (int) (y - lastY);

mWM.updateViewLayout(win, mWMParams);

}

return true;

}

});

WindowManager wm = mWM;

WindowManager.LayoutParams wmParams = new WindowManager.LayoutParams();

mWMParams = wmParams;

wmParams.type = 2003; // type是关键,这里的2002表示系统级窗口,你也可以试试2003。

wmParams.flags = 40;// 这句设置桌面可控

wmParams.width = 300;

wmParams.height = 200;

wm.addView(win, wmParams);//这句是重点 给WindowManager中丢入刚才设置的值 只有addview后才能显示到页面上去。

//注册到WindowManager win是要刚才随便载入的layout,wmParams是刚才设置的WindowManager参数集

//效果是将win注册到WindowManager中并且它的参数是wmParams中设置饿

}

}

写的很杂 就酱子吧

android流量显示插件,[android]仿360状态,种流量监控桌面浮动显示相关推荐

  1. w8如何把计算机图标移到桌面,Win8如何在桌面上显示“我的电脑”图标,详细教您Win8如何在桌面上显示我的电脑...

    有一定的使用电脑年龄的用户,就知道之前win7系统,xp系统都有"我的电脑"图标,而升级到win8系统的用户却意外的发现win8系统桌面却没有.这样会给我们操作带来一定的影响,下面 ...

  2. win8r桌面的计算机图在哪调 出来,Win8如何在桌面上显示“我的电脑”图标,手把手教你Win8如何在桌面上显示我的电脑...

    随着Windows XP光荣退役,最近很多电脑用户都将系统升级到了Win8.1系统.不过Win8.1系统令不少小白摸不着头脑,当装好win8系统后,进入桌面后,会发现桌面上只有一个回收站图标,那些熟悉 ...

  3. Android平板时间插件,Android 实时显示时间控件

    原生代码已经提供了显示实时时间的控件,因此只需要添加进去即可,不需要另外构造定时器去不断的刷新. 如图: 代码如下: android:layout_width="match_parent&q ...

  4. android切环境插件,Android Studio 2.0 - 插件太旧,请更新到更新版本,或设置ANDROID_DAILY_OVERRIDE环境变量...

    Android Studio 2.0 - 插件太旧,请更新到更新版本,或设置ANDROID_DAILY_OVERRIDE环境变量 我更新了Android Studio 2.0版并正常使用. 当我今天创 ...

  5. android studio lambda插件,Android Studio Lambda插件(gradle-retrolambda)安装

    1.前言 java jdk升级到1.8以上以后就可以使用lambda表达式了,其优点就是 高逼格 更简洁, 需要注意的是 使不使用lambda 要看项目需求是否允许. 本文简单介绍 Android S ...

  6. android studio单元测试插件,Android Studio单元测试插件下载

    Android Studio单元测试插件是一款可以解决testcompile依赖问题的Android Studio插件,可以帮助用户们在Android Studio进行单元测试,有需要的朋友就来IT猫 ...

  7. android多语言插件,Android 7.0多语言适配,填坑日记(附多语言插件)

    背景 最近项目在适配7.0系统的时候发现一些问题,其中也有多语言适配的问题,就拿出来说说,记记笔记,填填坑. 问题1 因为刚接手项目不久,发现一些奇奇怪怪的bug总是让人头疼,最近发现了在华为荣耀7. ...

  8. android多渠道打包插件,Android几种多渠道打包的步骤详解

    1.什么是多渠道打包 在不同的应用市场可能有不同的统计需求,需要为每个应用市场发布一个安装包,这里就引出了Android的多渠道打包.在安装包中添加不同的标识,以此区分各个渠道,方便统计app在市场的 ...

  9. jquery 日期显示插件_8+ jQuery 360度图像显示插件

    jquery 日期显示插件 就像"全景"一样,这些jQuery 360度图像显示插件惊人地可以从各个角度显示对象/风景的360度视图 . (嘿–从各个角度看东西肯定会更有趣!). ...

最新文章

  1. NAR:psRobot-植物小RNA分析系统
  2. 2015年下半年计划
  3. 混合商业模式解决方案-----多种电子商务模式的融合与创新
  4. 使用 Oracle GoldenGate 进行实时数据集成
  5. 机器学习笔记:高斯判别分析
  6. boost::mpl::abs相关的测试程序
  7. lwuit ---一些细节疑难杂症整理笔记
  8. python代码画皮卡丘_程序员式优雅表白,教你用python代码画爱心
  9. ssh源码编译安装mysql_总结源码编译安装mysql
  10. Oracle 空间查询, 数据类型为 sdo_geometry
  11. iOS 中delegate的理解与使用(传值)
  12. linux各个目录作用详解,linux各个目录作用
  13. matlab3维b样条曲线_MATLAB-3次B样条
  14. 如何在计算机设置鼠标宏,游戏鼠标宏设置是什么?怎么设置游戏鼠标宏?
  15. CSS基础——简单的文字样式
  16. 项目管理模型总结---原型模型、迭代模型
  17. 身在北京,都有故事:九位北漂的心酸故事,只有经历过才有体会!
  18. on后面使用and和where的区别
  19. 基于labview开发平台的声音信号采集及处理系统设计(任务书+lunwen+翻译及原文+vi源文件+查重报告)
  20. 智能手机平台:TI,Intel,Moto

热门文章

  1. go语言实战_字节跳动年薪50W抢Go开发人才,你还在问该不该学?
  2. linux入门 适合初学者_【推荐】适合初学者临摹的国画|国画基础入门教学视频教程!...
  3. linux 相关系统参数调优(特别针对网络传输,大量TIME_WAIT 的TCP状态的情况)
  4. 基于微型计算机系统的实时时钟设计,基于51单片机的实时时钟设计报告.doc
  5. sql实现寻找中位数(使用sign、case、自定义变量等)
  6. 推荐一款代码神器,代码量至少省一半! 1
  7. Nodejs 安装 on centos7
  8. Hadoop_10_HDFS 的 DataNode工作机制
  9. Flume架构以及应用介绍[转]
  10. 第 197 章 Unity