提示:以下是本篇文章正文内容,下面案例可供参考
一、WindowManager 一般用法
1.简单使用
代码如下(示例):
private WindowManager mWindowManager; //…… mWindowManager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE); mLayoutParams = (WindowManager.LayoutParams) mRootView.getLayoutParams(); if (mLayoutParams == null) { //层级类型 不用这么高 此处举例 int type = WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY; int layoutParamFlags = WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL; mLayoutParams = new WindowManager.LayoutParams(WIDTH, HEIGHT, type, layoutParamFlags, PixelFormat.RGBA_8888); mLayoutParams.gravity = Gravity.LEFT | Gravity.BOTTOM; mLayoutParams.x = POINT_X; mLayoutParams.y = POINT_Y; } //……更新位置方式 一般都是 mWindowManager.updateViewLayout(mRootView, mLayoutParams);
2.隐藏平移动画
代码如下(示例):
WindowManager中原有的是不可以直接引用的,我们可以自定义一个
@UnsupportedAppUsage
@TestApi
public static final int PRIVATE_FLAG_NO_MOVE_ANIMATION = 0x00000040;
private void dismissAnimations() {
try {
int currentFlags = (Integer) mLayoutParams.getClass().getField("privateFlags").get(mLayoutParams);
mLayoutParams.getClass().getField("privateFlags").set(mLayoutParams, PRIVATE_FLAG_NO_MOVE_ANIMATION); //currentFlags 如果需要的话也可以和PRIVATE_FLAG_NO_MOVE_ANIMATION一起传
//.set(mLayoutParams, currentFlags | PRIVATE_FLAG_NO_MOVE_ANIMATION);
} catch (Exception e) {
//……
}
}
总结
帮忙请顶一下,给迷失的孩子照亮回家的路。