介绍
这篇文章将为大家详细讲解有关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 nullandroid6.0版本中怎么实现一个悬浮窗口