首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > Android >

怎么在屏幕最上层绘图

2013-10-04 
如何在屏幕最上层绘图?Android 4.1.2 的开发者选项有个在屏幕覆盖层显示Cpu使用的,这个是怎么做到的?如何

如何在屏幕最上层绘图?
Android 4.1.2 的开发者选项有个在屏幕覆盖层显示Cpu使用的,这个是怎么做到的?如何实现类似的效果?Java或者C都行的。 android 屏幕覆盖层
[解决办法]
用置顶的activity

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);
}
}

}

[解决办法]
有个pointLocationView.java.跟你的类似.也是开发者选项里面的,你可以看看代码

热点排行