让我们说这是一个以屏幕为中心的弹出窗口。
首先想到的是在弹出窗口之前拍摄活动截图(UI),用快速模糊模糊位图并设置背景。
然而,我放弃了我的项目的想法,因为捕获屏幕需要活动参考。
RecyclerView的项目(嵌入在片段中)触发弹出窗口。 onClick方法绑定在其适配器中。当触发弹出窗口时,onClick必须执行捕获屏幕的操作。但是,它拒绝做这项工作。
item.setOnClickListener(new OnClickListener{
// Capture screen, blur it, set it to the background of popup window
});
项目正在使用dataBinding,因此以这种方式调用适配器:
@BindingAdapter("bind:data")
public static void setData(RecyclerView recyclerView, List<ItemData> data){
if (data != null) {
recyclerView.setLayoutManager(new LinearLayoutManager(recyclerView.getContext(), LinearLayoutManager.HORIZONTAL, false));
recyclerView.setAdapter(new ItemsAdapter(recyclerView.getContext(), data));
}
}
现在你知道为什么无法捕获屏幕,因为没有办法传递活动参考。 顺便说一句,即使有方法,我也不认为将活动引用传递给适配器是个好主意,这可能会导致OOM。
后来,我尝试了很多方法来模糊弹出窗口的背景。他们刚刚失败了。我发现Instagram有这个功能(Android版)。这就是我想要的。
我想知道是否需要重新构建我的项目只是为了公开适配器并让它将一个活动作为参数。
或者有一些不错的方式来做这种工作,而不仅仅是捕捉屏幕。