我正在创建一个需要显示在上方并与现有UI分离的组件,例如从屏幕底部滑入并保持锚定在那里,无论当前内容视图如何。我希望它是模块化和便携式的,所以预先假设FrameLayout是不现实的。
在查看Dialog和PopupWindow类的源代码时,看起来他们使用Window和WindowManager类来实现这一点,但是我无法找到关于这些类的文档的方法。
有没有一种简单的方法来完成我所描述的内容?
TYIA
答案 0 :(得分:1)
为了未来搜索者的利益:答案是使用WindowManager类。这很简单,尽管缺乏文档(无论如何我都能找到):
WindowManager.LayoutParams wlp = new WindowManager.LayoutParams();
// assign position, dimensions, and layout behavior as properties of wlp
WindowManager wm = (WindowManager) getSystemService("window");
wm.addView(someView, wlp);
答案 1 :(得分:0)
最简单的方法是使用RelativeLayout。将视图放在所需位置,然后将可见性设置为已消失。当您想要显示视图时,启动动画并将可见性设置为可见。
像这样的布局
<RelativeLayout ...>
<LinearLayout ...>
<!-- your main UI -->
</LinearLayout>
<LinearLayout
android:id="@+id/hiddenView"
android:visibility="gone">
<!-- the UI for the separate component -->
</LinearLayout>
</RelativeLayout>
在代码中
Animation someAnimation = AnimationUtils.loadAnimation(this, R.anim.some_animation);
hiddenView.startAnimation(someAnimation);
hiddenView.setVisibility(View.VISIBLE);
上面的内容很简单,但不是很通用,做一些更强大的工作意味着编写一个自定义的视图或ViewGroup,不幸的是,这些东西的深入教程很少见。