如何在屏幕最上层绘图? Android 4.1.2 的开发者选项有个在屏幕覆盖层显示Cpu使用的,这个是怎么做到的?如何实现类似的效果?Java或者C都行的。android屏幕覆盖层 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 用置顶的activityimport android.app.Activity;import android.graphics.PixelFormat;import android.view.Gravity;import android.view.LayoutInflater;import android.view.MotionEvent;import android.view.View;import android.view.WindowManager;import android.view.WindowManager.LayoutParams;public class FlowView { private WindowManager wm=null; private WindowManager.LayoutParams wmParams=null; protected View view = null; private float x,y,startX,startY; private int TOOL_BAR_HIGH = 0; public FlowView(int viewid,Activity act){ //获取WindowManager wm=(WindowManager)act.getApplicationContext().getSystemService("window"); //设置LayoutParams(全局变量)相关参数 wmParams = new WindowManager.LayoutParams(); wmParams.type=LayoutParams.TYPE_PHONE; //设置window type //wmParams.format=PixelFormat.RGBA_8888; //设置图片格式,效果为背景透明 //设置Window flag wmParams.flags=LayoutParams.FLAG_NOT_TOUCH_MODAL | LayoutParams.FLAG_NOT_FOCUSABLE; //以屏幕左上角为原点,设置x、y初始值 wmParams.x=0; wmParams.y=0; //设置悬浮窗口长宽数据 TOOL_BAR_HIGH = 200; wmParams.width=LayoutParams.WRAP_CONTENT; wmParams.height=LayoutParams.WRAP_CONTENT; //调整悬浮窗口 wmParams.gravity=Gravity.LEFT|Gravity.CENTER_VERTICAL; //显示myFloatView图像 view = LayoutInflater.from(act).inflate(viewid, null); wm.addView(view, wmParams); } public void destroy(){ if(view!=null){ wm.removeView(view); } } public boolean onTouchEvent(MotionEvent event) { //触摸点相对于屏幕左上角坐标 x = event.getRawX(); y = event.getRawY() - TOOL_BAR_HIGH; //Log.d(TAG, "------X: "+ x +"------Y:" + y); switch(event.getAction()) { case MotionEvent.ACTION_DOWN: startX = event.getX(); startY = event.getY(); break; case MotionEvent.ACTION_MOVE: updatePosition(); break; case MotionEvent.ACTION_UP: updatePosition(); startX = startY = 0; break; } return true; } //更新浮动窗口位置参数 private void updatePosition(){ if(view!=null){ // View的当前位置 wmParams.x = (int)( x - startX); wmParams.y = (int) (y - startY); wm.updateViewLayout(view, wmParams); } }} 注意添加权限<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/> 有个pointLocationView.java.跟你的类似.也是开发者选项里面的,你可以看看代码 AudioRecord 初始化失败求教! 自定义的一个Dialog,标题上两个圆角怎么设置 创建的新工程没有R文件 ? - 2.1的Launcher和1.6有什么不一样? 安卓3.0版以上,如何实现切换APN? android googel map v2 在模拟骑上只显示灰格,不显示地图 关于开发图书管理系统登录模块设计中的问题,求指教~~~~~~~~ android修改系统gps定位 二维码通过彩色增加存储容量可行么? android中widget分类 activityGroup 里startActivityForResult的解决 菜鸟求助,eclipse无法创建AVD
import android.app.Activity;
import android.graphics.PixelFormat;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.View;
import android.view.WindowManager;
import android.view.WindowManager.LayoutParams;public class FlowView {
private WindowManager wm=null;
private WindowManager.LayoutParams wmParams=null;
protected View view = null;
private float x,y,startX,startY;
private int TOOL_BAR_HIGH = 0;
public FlowView(int viewid,Activity act){
//获取WindowManager
wm=(WindowManager)act.getApplicationContext().getSystemService("window");
//设置LayoutParams(全局变量)相关参数
wmParams = new WindowManager.LayoutParams();
wmParams.type=LayoutParams.TYPE_PHONE; //设置window type
//wmParams.format=PixelFormat.RGBA_8888; //设置图片格式,效果为背景透明
//设置Window flag
wmParams.flags=LayoutParams.FLAG_NOT_TOUCH_MODAL
| LayoutParams.FLAG_NOT_FOCUSABLE; //以屏幕左上角为原点,设置x、y初始值
wmParams.x=0;
wmParams.y=0;
//设置悬浮窗口长宽数据
TOOL_BAR_HIGH = 200;
wmParams.width=LayoutParams.WRAP_CONTENT;
wmParams.height=LayoutParams.WRAP_CONTENT;
//调整悬浮窗口
wmParams.gravity=Gravity.LEFT|Gravity.CENTER_VERTICAL;
//显示myFloatView图像
view = LayoutInflater.from(act).inflate(viewid, null);
wm.addView(view, wmParams);
}
public void destroy(){
if(view!=null){
wm.removeView(view);
}
}
public boolean onTouchEvent(MotionEvent event) {
//触摸点相对于屏幕左上角坐标
x = event.getRawX();
y = event.getRawY() - TOOL_BAR_HIGH;
//Log.d(TAG, "------X: "+ x +"------Y:" + y);
switch(event.getAction()) {
case MotionEvent.ACTION_DOWN:
startX = event.getX();
startY = event.getY();
break;
case MotionEvent.ACTION_MOVE:
updatePosition();
break;
case MotionEvent.ACTION_UP:
updatePosition();
startX = startY = 0;
break;
}
return true;
}
//更新浮动窗口位置参数
private void updatePosition(){
if(view!=null){
// View的当前位置
wmParams.x = (int)( x - startX);
wmParams.y = (int) (y - startY);
wm.updateViewLayout(view, wmParams);
}
}}
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>