【问题标题】:Android: How to add a layer on top no matter how many activities started?Android:无论有多少活动开始,如何在顶部添加一层?
【发布时间】:2017-01-18 08:22:03
【问题描述】:

我想播放一个 gif 动画,这个视图每秒都会在屏幕上移动,但是如果我开始一个活动,我需要再次添加这个视图,并且位置会改变。

请参阅下面的附图。我需要在每个视图上坚持这一点。有什么办法吗?

【问题讨论】:

  • 你能发布一些你真正想做的java代码或图像吗
  • 你试过使用Android内置动画吗?
  • 我可以播放 gif。但我需要这个 gif 视图始终保持在 Z 方向的顶部。
  • 你指的是导航抽屉吗?喜欢这个链接? Navigation Bar
  • 没有。即使我开始一项活动,我也需要一个 gif 图像。

标签: java android layer


【解决方案1】:

为应用中的所有 Activity 创建一个 BaseActivity 以显示 Overlay View 或 Layout。 你可以在其他Activity上继承BaseActivity

您可以添加支持 gif 的视图或布局 例如,我在 showOverlay 方法中添加了 overlay_layout。 您可以在要显示的任何位置调用 showOverlay 方法,并且可以使用带有条件的 removeOverlay 删除。 请注意 showOverlay 和 removeOverlay 应该在 BaseActivity 中

void showOverlay(){
LayoutInflater inflater = activity.getLayoutInflater();
layout = inflater.inflate(R.layout.overlay_layout, null);
WindowManager.LayoutParams params = new WindowManager.LayoutParams();
params.gravity = Gravity.BOTTOM;
params.height = WindowManager.LayoutParams.WRAP_CONTENT;
params.width = WindowManager.LayoutParams.WRAP_CONTENT;
params.type = WindowManager.LayoutParams.TYPE_APPLICATION;
final WindowManager mWindowManager = (WindowManager);
activity.getApplicationContext().getSystemService(Context.WINDOW_SERVICE);
            mWindowManager.addView(layout, params);
}
void removeOverlay(){
windowManager.removeView(view);
}

【讨论】:

  • 我已经找到了实现这一点的方法。它与您的答案很快相似,但它正在使用服务。无论如何,谢谢你的帮助。
【解决方案2】:

将此视图设置为WindowManager,它将始终显示在顶部

【讨论】:

  • 你能解释更多吗?
猜你喜欢
  • 2023-02-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-21
  • 1970-01-01
相关资源
最近更新 更多