android60悬浮窗
‘壹’ 安卓手机开启无障碍功能与悬浮窗的方法
怎么开启辅助服务?
使用优Q的功能必须开服辅助服务,辅助服务是安卓官方提供的功能。
打开优Q点击【我的】点击权限设置,开启即可。如果无法快速开启,请参考如下的方法。
部分手机辅助可通过快捷键开启,优Q仍提示未开启,将辅助服务关闭一下再打开就可以了。
如果仍然无效,请先关闭优Q然后重启手机。
VIVO设置-更多设置-辅助功能-开启-优Q
OPPO设置-其他设置-辅助功能-开启-优Q
小米设置-更多设置-无障碍-开启-优Q
魅族设置-辅助功能-无障碍-开启-优Q
华为设置-高级设置-辅助功能-开启-优Q
联想设置-高级设置-辅助功能-开启-优Q
三星设置-辅助功能-开启-优Q
乐视设置-辅助功能-开启-优Q
360设置-辅助功能-开启优Q
锤子设置-全局高级设置-辅助功能-开启-优Q
一加设置-其他高级设置-无障碍-开启-优Q
怎么开启悬浮窗?
部分高版本手机打开优Q会自动跳转到悬浮窗开关。
打开优Q点击【我的】点击权限设置,开启悬浮窗即可。如果无法快速开启,请参考如下的方法。
不同的手机打开悬浮窗权限的方法不一样,常见的方法是在应用权限管理或手机管家进行设置。
VIVO
系统6.0:设置-更多设置-权限管理-优Q-开启悬浮窗系统
5.0:i管家-软件管理-悬浮窗管理-开启-"优Q
OPPO手机管家-隐私权限-悬浮窗权限管理-开启
优Q
小米安全中心-应用权限管理-优Q-允许显示悬浮窗
魅族手机管家-应用权限管理-优Q-开启桌面悬浮窗
华为设置权限管理-悬浮窗开启优Q
联想安全中心-权限管理-显示悬浮窗-
允许"优Q显示悬浮窗
三星设置-应用程序-应用程序管理器-右上角更多-
可出现在顶部的应用程序-开启优Q
乐视设置-隐私权限-应用权限管理器-应用列表
优Q-允许显示悬浮窗
360安全卫士-软件管理-权限管理-优Q-
允许显示悬浮窗
锤子设置-安全中心-应用程序权限管理-悬浮窗-
开启优Q
一加设置-应用程序-特殊访问权限-出现在其他应用上--找到优Q打开即可
三条鱼软件官网
‘贰’ 如何开启 android 手机悬浮框权限
是否给权限,是否开悬浮窗? 请在手机系统设置--应用软件--找到腾讯手机管家,给予管家悬浮窗权限。 打开腾讯手机管家——个人中心——悬浮窗——打开小火箭 在手机桌面会有一个显示内存比例的空心圆,下拉空心圆图形到手机桌面底端,会出现一个“小火箭”形状的图案,你拖 住然后释放之后,小火箭会腾空而起发射进行清理内存为手机加速。 成功发射火箭后,会弹出提示框,提示所结束的进程以及此次发射所释放的运行内存。
‘叁’ Android桌面悬浮窗效果怎么实现
可以模仿360手机卫士悬浮窗的那份代码的基础上继续开发。
打开手机卫士主界面,然后上拉,然后点击快捷设置,然后点击桌面悬浮窗,就可以将360手机卫士安卓版桌面浮窗调出来了,具体步骤如下:
1、安装最新的360手机卫士。
2、点开隐私保护,打开右上角的三个点。
3、点开卫士设置,点开悬浮窗。
4、开启内存清理悬浮窗, 选择显示样式,安仔样式或是加速球。
5、可以选择仅在桌面显示,若开启则悬浮窗只出现在桌面,若关闭则悬浮窗会跟随打开页面一直出现。
6、可以同时开启拖动清理内存,这样直接拖动悬浮窗图标,就可以轻松清理内存了。
‘肆’ Android实现类似qq,微信消息悬浮窗通知
实现方法:(需要开启悬浮窗通知权限、允许应用在其他应用上显示)
悬挂式Notification,他是5.0中新增的,也就是API中的Headsup的Notification,可以在不打断用户操作的时候,给用户通知
注意:在某些rom下使用headsup并不会显示桌面悬浮窗,而是直接跳转到相应的界面,亲测华为,小米都是这种情况,这种情况下需要自己实现悬浮窗
具体实现:
‘伍’ android java 怎么设置悬浮窗(悬浮窗是一个activity)上组件的属性,和按钮的点击
@Override
public void onClick(View v) {
final EditText et = new EditText(context) ;
new AlertDialog.Builder(context)
.setTitle("说明")
.setMessage("单个页卡内按钮事件测试")
.setView(et)
.setPositiveButton("确定",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(context, "单击确定按钮", Toast.LENGTH_LONG).show() ;
}
}).setNegativeButton("取消",null).show();
}
‘陆’ Android桌面悬浮窗效果怎么实现
可以根据项目需要改变其相应布局。
package com.zk.me;
import java.util.List;
import android.app.Activity;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.content.pm.PackageManager.NameNotFoundException;
import android.content.pm.ResolveInfo;
import android.os.Bundle;
import android.view.Gravity;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.view.WindowManager;
import android.widget.ImageView;
import android.widget.Toast;
public class MainActivity extends Activity implements OnClickListener {
private WindowManager windowManager = null;
private WindowManager.LayoutParams windowManagerParams = null;
private MyFloatView floatView = null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);// 取消标题栏
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);// 全屏
setContentView(R.layout.activity_main);
createView();
}
public void onDestroy() {
super.onDestroy();
// 在程序退出(Activity销毁)时销毁悬浮窗口
}
private void createView() {
floatView = new MyFloatView(getApplicationContext());
floatView.setOnClickListener(this);
ImageView view = new ImageView(this);
view.setImageResource(R.drawable.ic_launcher);
floatView.addView(view); // 这里简单的用自带的icon来做演示
windowManager = (WindowManager) getApplicationContext()
.getSystemService("window");
// 设置LayoutParams(全局变量)相关参数
windowManagerParams = ((FloatApplication) getApplication())
.getWindowParams();
windowManagerParams.type = 2003; // 设置window type
// windowManagerParams.format = PixelFormat.RGBA_8888; // 设置图片格式,效果为背景透明
// 设置Window flag
windowManagerParams.flags = 40;
windowManagerParams.format = 1;
// 调整悬浮窗口至左上角,便于调整坐标
windowManagerParams.gravity = Gravity.LEFT | Gravity.TOP;
// 以屏幕左上角为原点,设置x、y初始值
windowManagerParams.x = 0;
windowManagerParams.y = 0;
// 设置悬浮窗口长宽数据
windowManagerParams.width = 40;
windowManagerParams.height = 40;
// 显示myFloatView图像
windowManager.addView(floatView, windowManagerParams);
}
public void onClick(View v) {
Toast.makeText(this, "Clicked", Toast.LENGTH_SHORT).show();
openCLD("com.jovian.android.pqgl", getApplicationContext());
}
public static void openCLD(String packageName, Context context) {// 打开移动警务应用
PackageManager packageManager = context.getPackageManager();
PackageInfo pi = null;
try {
pi = packageManager.getPackageInfo(packageName, 0);
} catch (NameNotFoundException e) {
}
Intent resolveIntent = new Intent(Intent.ACTION_MAIN, null);
resolveIntent.addCategory(Intent.CATEGORY_LAUNCHER);
resolveIntent.setPackage(packageName);
List<ResolveInfo> apps = packageManager.queryIntentActivities(
resolveIntent, 0);
ResolveInfo resolveinfo = apps.iterator().next();
if (resolveinfo != null) {
String className = resolveinfo.activityInfo.name;
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_LAUNCHER);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
ComponentName cn = new ComponentName(packageName, className);
intent.setComponent(cn);
context.startActivity(intent);
}
}
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onRestoreInstanceState(savedInstanceState);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
}
package com.zk.me;
import android.content.Context;
import android.graphics.Rect;
import android.util.Log;
import android.view.Gravity;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.WindowManager;
import android.widget.LinearLayout;
public class MyFloatView extends LinearLayout {
private float mTouchX;
private float mTouchY;
private float x;
private float y;
private float mStartX;
private float mStartY;
private OnClickListener mClickListener;
private WindowManager windowManager = (WindowManager) getContext()
.getApplicationContext().getSystemService("window");
// 此windowManagerParams变量为获取的全局变量,用以保存悬浮窗口的属性
private WindowManager.LayoutParams windowManagerParams = ((FloatApplication) getContext()
.getApplicationContext()).getWindowParams();
public MyFloatView(Context context) {
super(context);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
// 获取到状态栏的高度
Rect frame = new Rect();
getWindowVisibleDisplayFrame(frame);
int statusBarHeight = frame.top;
System.out.println("statusBarHeight:" + statusBarHeight);
// 获取相对屏幕的坐标,即以屏幕左上角为原点
x = event.getRawX();
y = event.getRawY() - statusBarHeight; // statusBarHeight是系统状态栏的高度
Log.i("tag", "currX" + x + "====currY" + y);
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN: // 捕获手指触摸按下动作
// 获取相对View的坐标,即以此View左上角为原点
mTouchX = event.getX();
mTouchY = event.getY();
mStartX = x;
mStartY = y;
Log.i("tag", "startX" + mTouchX + "====startY" + mTouchY);
break;
case MotionEvent.ACTION_MOVE: // 捕获手指触摸移动动作
updateViewPosition();
break;
case MotionEvent.ACTION_UP: // 捕获手指触摸离开动作
updateViewPosition();
mTouchX = mTouchY = 0;
if ((x - mStartX) < 5 && (y - mStartY) < 5) {
if (mClickListener != null) {
mClickListener.onClick(this);
}
}
break;
}
return true;
}
@Override
public void setOnClickListener(OnClickListener l) {
this.mClickListener = l;
}
private void updateViewPosition() {
// 更新浮动窗口位置参数
windowManagerParams.x = (int) (x - mTouchX);
windowManagerParams.y = (int) (y - mTouchY);
windowManager.updateViewLayout(this, windowManagerParams); // 刷新显示
}
}