Android桌面全局跑马灯广告|IPTV电视跑马灯|全局滚动文字|滚动文字插件|在第三方app上插入广告|全局状态栏广告

目录标题

      • 一、功能需求
      • 二、采坑记录
      • 三、希望的曙光
      • 四、完整代码

一、功能需求


       最近遇到一个需求,一下把我愣住了,在IPTV电视系统上实现一个全局跑马灯广告效果,简单说就是后台定时或手动推送广告文字,电视端要能实时显示,要求是无论当前打开的是第三方的软件还是网页等,都要及时显示滚动文字,并要求不影响系统的正常操作。

二、采坑记录


       拿到需求后管他三七二十一,撸起袖子就是干,一开始想的是用Dialog来实现,反正桌面都是自己的,直接跳过进程保活,当收到后台推送后强行加载Dialog即可。
       此处跳过一万个mmp后决定用WindowManager来实现,直接调整window的层级范围为系统window不就可以了。

三、希望的曙光


       重点了重点了重点了,应用window的层级范围:1-99,子window的层级范围:1000-1999,系统window的层级范围:2000-2999。

设置window层级

	WindowManager.LayoutParams.TYPE_SYSTEM_ERROR;  

加载悬浮窗

	    WindowManager mWindowManager = (WindowManager) getApplicationContext().getSystemService(Context.WINDOW_SERVICE);
        mImageView = new ImageView(this);
        mImageView.setBackgroundResource(R.mipmap.ic_launcher);
        WindowManager.LayoutParams mLayoutParams = new WindowManager.LayoutParams(
                WindowManager.LayoutParams.WRAP_CONTENT, WindowManager.LayoutParams.WRAP_CONTENT, 2099,
                WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL
                        | WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE
                        | WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED,
                PixelFormat.TRANSPARENT);
        mLayoutParams.type = WindowManager.LayoutParams.TYPE_SYSTEM_ERROR;
        mLayoutParams.gravity = Gravity.TOP | Gravity.LEFT;
        mLayoutParams.x = 0;
        mLayoutParams.y = 300;
        mImageView.setOnTouchListener(this);
        mWindowManager.addView(mImageView, mLayoutParams);

悬浮窗权限


四、完整代码


		WindowManager mWindowManager = (WindowManager) context
				.getSystemService(Context.WINDOW_SERVICE);
		WindowManager.LayoutParams param = new WindowManager.LayoutParams();
		param = new LayoutParams();
		param.type = WindowManager.LayoutParams.TYPE_SYSTEM_ERROR; 
		param.format = PixelFormat.RGBA_8888;
		param.flags = LayoutParams.FLAG_NOT_TOUCH_MODAL
				| LayoutParams.FLAG_NOT_FOCUSABLE
				| LayoutParams.FLAG_FULLSCREEN
				| LayoutParams.FLAG_LAYOUT_IN_SCREEN;
				
        // 调整悬浮窗口至左上角
		param.gravity = Gravity.CENTER | Gravity.TOP; 
		param.x = 0;
		param.y = 0;

		// 设置悬浮窗口长宽数据
		param.width = LayoutParams.MATCH_PARENT;
		param.height = 70;
		mWindowManager.addView(view(你自己的view), param);

       其实并不难、是你太悲观,想要跑马灯代码的朋友记得下边留言我发给你哈。

你可能感兴趣的:(前端,全局跑马灯,滚动文字,电视跑马灯广告,玉念聿辉,大丑村)