android6.0版本中怎么实现一个悬浮窗口

  介绍

这篇文章将为大家详细讲解有关android6.0版本中怎么实现一个悬浮窗口,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

代码如下:

public  class  MainActivity  extends  AppCompatActivity  {   private 才能static  final  int  ALERT_WINDOW_PERMISSION_CODE =, 100;   private 才能;Button  start_float;      @Override才能   protected 才能;void  onCreate (Bundle  savedInstanceState), {   ,,,super.onCreate (savedInstanceState);   ,,,setContentView (R.layout.activity_main);   ,,,start_float =,(按钮),findViewById (R.id.start_float);   ,,,this.start_float.setOnClickListener (new  View.OnClickListener (), {   ,,,,@Override   ,,,,,public  void  onClick (View 视图),{   ,,,,,,,if  (Build.VERSION.SDK_INT 祝辞,22),{   ,,,,,,,,,sdk23Permission ();   ,,,,,,,},{else    ,,,,,,,,,startService (new 意图(MainActivity.this, FloatService.class));   ,,,,,,,,,完成();   ,,,,,,,}   ,,,,,}   ,,,});   ,,}      ,/* *   ,,*,@description 安卓6.0下权限处理   ,,*,@author  ldm   ,,*,@time  2017/3/20  15:00   ,,*/public 才能;void  sdk23Permission (), {   ,,,if  (! Settings.canDrawOverlays(这),{   ,,,,,Toast.makeText (MainActivity.this,,“当前无权限使用悬浮窗,请授权!“,,Toast.LENGTH_SHORT),告诉();   ,,,,,Intent  Intent =, new 意图(Settings.ACTION_MANAGE_OVERLAY_PERMISSION,   ,,,,,,,,,Uri.parse(“包:“,+,getPackageName ()));   ,,,,,startActivityForResult(意图,,ALERT_WINDOW_PERMISSION_CODE);   ,,,},{else    ,,,,,startService (new 意图(MainActivity.this, FloatService.class));   ,,,,,完成();   ,,,}   ,,}      ,/* *   ,,*,用户返回   ,,*/protected 才能;void  onActivityResult (int  requestCode, int  resultCode,, Intent 数据),{   ,,,if  (requestCode ==, ALERT_WINDOW_PERMISSION_CODE), {   ,,,,,if  (! Settings.canDrawOverlays(这),{   ,,,,,,,Toast.makeText (MainActivity.this,,“权限授予失败,无法开启悬浮窗“,,Toast.LENGTH_SHORT),告诉();   ,,,,,},{else    ,,,,,,,startService (new 意图(MainActivity.this, FloatService.class));   ,,,,,,,完成();   ,,,,,}      ,,,}   ,,}   }

对应服务:

public  class  FloatService  extends  Service  {   @Nullable才能   @Override才能   public 才能;IBinder  onBind (Intent 意图),{   ,,,return 零;   ,,}      @Override才能   public 才能;void  onCreate (), {   ,,,FloatViewUtils.getInstance(这).addFloatView ();   ,,,super.onCreate ();   ,,}   }

简单地FloatView:

public  class  FloatView  extends  View  {   public 才能static  final  int  WIDTH =, 150;   public 才能static  final  int  HEIGHT =, 150;   private 才能;Paint  circlePaint;   private 才能;Paint  textPaint;   private 才能static  final  String  text =,“50%”;      public 才能FloatView (Context 上下文),{   ,,,(上下文,null,, 0);   ,,}      public 才能;FloatView (Context 上下文,@Nullable  AttributeSet  attrs), {   ,,,(上下文,attrs,, 0);   ,,}      public 才能;FloatView (Context 上下文,@Nullable  AttributeSet  attrs,, int  defStyleAttr), {   ,,,超级(上下文,attrs, defStyleAttr);   ,,,initPaints ();   ,,}      ,/* *   ,,*,@description 初始化相关画笔颜料   ,,*,@author  ldm   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null

android6.0版本中怎么实现一个悬浮窗口