如何在屏幕最上层绘图?

会飞的猪猪萌萌哒 2013-09-06 01:45:12
Android 4.1.2 的开发者选项有个在屏幕覆盖层显示Cpu使用的,这个是怎么做到的?如何实现类似的效果?Java或者C都行的。
...全文
297 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
这段时间忙着考研报名之类的,回复晚了抱歉。 非常感谢2楼,这个方法我在网上也查到了,但和覆盖层不一样。 谢谢4楼,我去找找,先结帖了。
凉凉二点凉 2013-09-06
  • 打赏
  • 举报
回复
有个pointLocationView.java.跟你的类似.也是开发者选项里面的,你可以看看代码
danielinbiti 2013-09-06
  • 打赏
  • 举报
回复
注意添加权限
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
danielinbiti 2013-09-06
  • 打赏
  • 举报
回复
用置顶的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);
		}
	}

}
  • 打赏
  • 举报
回复
都没人理我呜呜

80,350

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧