我正在做一个自定义的android构建,我的服务在每个应用程序的顶部添加一个View.使用以下代码:
WindowManager mWM = (WindowManager)mContext.getSystemService(Context.WINDOW_SERVICE);
LayoutInflater inflater = (LayoutInflater)mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);WindowManager.LayoutParams mParams = new WindowManager.LayoutParams();
mParams = new WindowManager.LayoutParams(
WindowManager.LayoutParams.TYPE_PHONE,
WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL| WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH | WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,
PixelFormat.TRANSLUCENT);
mParams.height = 117;
mParams.width = 366;
View myView = inflater.inflate(R.layout.myView,null);
mWM.addView(myView, mParams);
Run Code Online (Sandbox Code Playgroud)
我能够成功添加视图.我正在使用动画制作视图
PropertyValuesHolder pvhX = PropertyValuesHolder.ofFloat("x", 300);
ObjectAnimator.ofPropertyValuesHolder(myView, pvhX).start();
Run Code Online (Sandbox Code Playgroud)
我看到视图有生气,但不是窗口.以前视图所在的透明窗口不是动画.这与Android Property Animation中描述的行为相同
视图动画系统的另一个缺点是它只修改了绘制视图的位置,而不是实际的视图本身.例如,如果您设置了一个按钮以在屏幕上移动,则该按钮会正确绘制,但您可以单击该按钮的实际位置不会更改,因此您必须实现自己的逻辑来处理此问题.
如何使窗口与视图一起设置动画?
谢谢
您可以通过从窗口参数中删除高度和宽度来使窗口填充整个屏幕。如果您想控制视图大小,请在布局中进行设置。
否则,您可以使用 aValueAnimator并重复调用WindowManagers updateViewLayout:
ValueAnimator va = ValueAnimator.ofInt(mParams.x, 300);
va.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
public void onAnimationUpdate(ValueAnimator animation) {
Integer value = (Integer) animation.getAnimatedValue();
mParams.x = value.intValue();
mWM.updateViewLayout(myView, mParams);
}
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
883 次 |
| 最近记录: |