Android中为WindowManager添加的View添加动画

今天在做一个小功能模块的时候,需要对WindowManager添加一个view且需要动画来平滑过渡。但是尝试对view添加动画,发现该动画不work。在StackOverFlow上面也有很多人遇到此问题,也没用得到解答。后面通过采用不断更新View的方式来解决此问题。如果大家有什么好的解决方案,麻烦告知一下,谢谢。

1、首先创建该View

suspendView = LayoutInflater.from(this).inflate(R.layout.tap, null);

2、添加LayoutParams

suspendLayoutParams = new LayoutParams();
suspendLayoutParams.type = LayoutParams.TYPE_PHONE; // 悬浮窗的类型,一般设为2002,表示在所有应用程序之上,但在状态栏之下
suspendLayoutParams.format = PixelFormat.RGBA_8888;
suspendLayoutParams.flags = LayoutParams.FLAG_NOT_TOUCH_MODAL| LayoutParams.FLAG_NOT_FOCUSABLE; // 悬浮窗的行为,比如说不可聚焦,非模态对话框等等
suspendLayoutParams.gravity = Gravity.TOP; // 悬浮窗的对齐方式
suspendLayoutParams.alpha = 0.0f;
suspendLayoutParams.width
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
要实现在 Android WindowManager添加 View 并对该 View 进行等比放大缩小,您可以按照以下步骤进行: 1. 创建一个自定义的 View,并实现对应的逻辑,例如等比放大缩小的逻辑。 2. 创建一个 WindowManager.LayoutParams 对象,用于设置添加View 的属性,如宽度、高度、位置等。 3. 调用 WindowManager.addView() 方法将 View 添加WindowManager 中。 下面是一个简单的示例代码,仅供参考: ``` // 创建一个自定义的 View MyView myView = new MyView(context); // 创建 WindowManager.LayoutParams 对象 WindowManager.LayoutParams params = new WindowManager.LayoutParams(); params.width = WindowManager.LayoutParams.WRAP_CONTENT; params.height = WindowManager.LayoutParams.WRAP_CONTENT; params.gravity = Gravity.TOP | Gravity.LEFT; params.x = 100; params.y = 100; // 将 View 添加WindowManagerWindowManager windowManager = (WindowManager) getSystemService(WINDOW_SERVICE); windowManager.addView(myView, params); ``` 在自定义的 View 中,您可以通过重写 onDraw() 方法实现等比放大缩小的逻辑。例如,可以在 onDraw() 方法中使用 Canvas.scale() 方法对 View 进行缩放: ``` @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); canvas.save(); canvas.scale(scaleFactor, scaleFactor, getWidth() / 2, getHeight() / 2); // 绘制 View 的内容 canvas.restore(); } ``` 在这个示例中,scaleFactor 变量表示缩放比例,getWidth() 和 getHeight() 方法获取 View 的宽度和高度。通过调用 Canvas.scale() 方法,可以对 View 进行等比缩放。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值