我有一个透明的线性布局,现在我正在寻找一种方法给它一个模糊效果,所以它下面的东西会变得模糊。就像 Windows 7 Aero 的外观一样(见屏幕截图)。
我知道你可以做这样的模糊效果:
getWindow().addFlags(WindowManager.LayoutParams.FLAG_BLUR_BEHIND);
但这仅适用于出现对话框时模糊背景。
我已经用谷歌搜索了将近一个小时,但我找不到任何东西。有人对如何做到这一点有任何建议吗?
谢谢
最佳答案
在 android 上实时模糊仍然是一个障碍。以下是一些可行机制之间的综合比较:
StackBlur (already listed in the answer by
Onurunder the monikerfastBlur):
外观(半径 20 处):
生成每个BitmapDrawable的记录时间(毫秒):
I/(10266): Total time taken: 35
I/(10266): Total time taken: 54
I/(10266): Total time taken: 48
I/(10266): Total time taken: 36
I/(10266): Total time taken: 48
I/(10266): Total time taken: 39
I/(10266): Total time taken: 49
I/(10266): Total time taken: 50
I/(10266): Total time taken: 35
I/(10266): Total time taken: 47
平均 => ~ 44.1 毫秒 => 每秒 22 个可绘制对象
RenderScript:
ScriptIntrinsicBlur 提供始终如一的快速模糊。它使用支持库提供的 api 8 及更高版本。
它的样子(在半径 20 处):
生成每个BitmapDrawable的记录时间(毫秒):
I/(9342): Total time taken: 14
I/(9342): Total time taken: 16
I/(9342): Total time taken: 13
I/(9342): Total time taken: 28
I/(9342): Total time taken: 14
I/(9342): Total time taken: 12
I/(9342): Total time taken: 14
I/(9342): Total time taken: 19
I/(9342): Total time taken: 13
I/(9342): Total time taken: 13
平均 => ~ 15.6 毫秒 => 每秒 64 个可绘制对象
RenderScript (radius = 3) + Scaling (20%):
这是获得体面(?)但快速模糊的另一种方式。我们所做的是将位图缩放到其大小的一小部分——比如 20%——并将模糊算法应用于缩小的版本。完成后,我们将位图缩放到其原始大小。结果不如在原版上使用模糊算法,但还算过得去。另请注意,半径值不应太高,否则生成的位图将难以辨认。
它的样子:
生成每个BitmapDrawable的记录时间(毫秒):
I/(11631): Total time taken: 5
I/(11631): Total time taken: 19
I/(11631): Total time taken: 3
I/(11631): Total time taken: 7
I/(11631): Total time taken: 7
I/(11631): Total time taken: 5
I/(11631): Total time taken: 7
I/(11631): Total time taken: 17
I/(11631): Total time taken: 5
I/(11631): Total time taken: 4
平均 => ~ 7.9 毫秒 => 每秒 126 个可绘制对象
StackBlur (radius = 3) + Scaling (20%):
与上述#3 相同的概念。将尺寸减小到 20% 并在缩放的位图上应用 stackblur。
I/(12690): Total time taken: 4
I/(12690): Total time taken: 20
I/(12690): Total time taken: 4
I/(12690): Total time taken: 4
I/(12690): Total time taken: 5
I/(12690): Total time taken: 5
I/(12690): Total time taken: 4
I/(12690): Total time taken: 21
I/(12690): Total time taken: 3
I/(12690): Total time taken: 4
平均 => ~ 7.4 毫秒 => 每秒 135 个可绘制对象
在 Nex4 上进行的测试。 位图大小 - 200px x 200px
另一个提示:方法 buildDrawingCache() 和 getDrawingCache() 本身需要很长时间。另一种方法是使用您需要模糊的 View 尺寸创建位图:
Bitmap toDrawOn = Bitmap.createBitmap(viewWidth, viewHeight, Bitmap.Config.ARGB_8888);
// Create a canvas - assign `toDrawOn` as an offscreen bitmap to it
Canvas holdingCanvas = new Canvas(toDrawOn);
// Now, let the view draw itself on this canvas
yourView.draw(holdingCanvas);
View 现在在 toDrawOn 上绘制,您可以随意使用它。
根据我的经验,这比生成和访问 View 的绘图缓存要快得多。
如果您在实现上述 4 种方法中的任何一种时需要帮助,请在评论中告诉我。
请记住,上面的 GIF 已被缩小等等。如果您想查看原始屏幕捕获 (mp4) 文件 - 请查看 Link .
关于java - 透明的模糊 View ,模糊了下面的布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14780006/
我需要从一个View访问多个模型。以前,我的links_controller仅用于提供以不同方式排序的链接资源。现在我想包括一个部分(我假设)显示按分数排序的顶级用户(@users=User.all.sort_by(&:score))我知道我可以将此代码插入每个链接操作并从View访问它,但这似乎不是“ruby方式”,我将需要在不久的将来访问更多模型。这可能会变得很脏,是否有针对这种情况的任何技术?注意事项:我认为我的应用程序正朝着单一格式和动态页面内容的方向发展,本质上是一个典型的网络应用程序。我知道before_filter但考虑到我希望应用程序进入的方向,这似乎很麻烦。最终从任何
我想要做的是有2个不同的Controller,client和test_client。客户端Controller已经构建,我想创建一个test_clientController,我可以使用它来玩弄客户端的UI并根据需要进行调整。我主要是想绕过我在客户端中内置的验证及其对加载数据的管理Controller的依赖。所以我希望test_clientController加载示例数据集,然后呈现客户端Controller的索引View,以便我可以调整客户端UI。就是这样。我在test_clients索引方法中试过这个:classTestClientdefindexrender:template=>
我真的很习惯使用Ruby编写以下代码:my_hash={}my_hash['test']=1Java中对应的数据结构是什么? 最佳答案 HashMapmap=newHashMap();map.put("test",1);我假设? 关于java-等价于Java中的RubyHash,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/22737685/
我是一个Rails初学者,但我想从我的RailsView(html.haml文件)中查看Ruby变量的内容。我试图在ruby中打印出变量(认为它会在终端中出现),但没有得到任何结果。有什么建议吗?我知道Rails调试器,但更喜欢使用inspect来打印我的变量。 最佳答案 您可以在View中使用puts方法将信息输出到服务器控制台。您应该能够在View中的任何位置使用Haml执行以下操作:-puts@my_variable.inspect 关于ruby-on-rails-如何在我的R
我是rails的新手,想在form字段上应用验证。myviewsnew.html.erb.....模拟.rbclassSimulation{:in=>1..25,:message=>'Therowmustbebetween1and25'}end模拟Controller.rbclassSimulationsController我想检查模型类中row字段的整数范围,如果不在范围内则返回错误信息。我可以检查上面代码的范围,但无法返回错误消息提前致谢 最佳答案 关键是您使用的是模型表单,一种显示ActiveRecord模型实例属性的表单。c
我正在尝试使用boilerpipe来自JRuby。我看过guide从JRuby调用Java,并成功地将它与另一个Java包一起使用,但无法弄清楚为什么同样的东西不能用于boilerpipe。我正在尝试基本上从JRuby中执行与此Java等效的操作:URLurl=newURL("http://www.example.com/some-location/index.html");Stringtext=ArticleExtractor.INSTANCE.getText(url);在JRuby中试过这个:require'java'url=java.net.URL.new("http://www
是否可以为特定(或所有)项目使用多个布局?例如,我有几个项目,我想对其应用两种不同的布局。一个是绿色的,一个是蓝色的(但是)。我想将它们编译到我的输出目录中的两个不同文件夹中(例如v1和v2)。我一直在玩弄规则和编译block,但我不知道这是怎么回事。因为,每个项目在编译过程中只编译一次,我不能告诉nanoc第一次用layout1编译,第二次用layout2编译。我试过这样的东西,但它导致输出文件损坏。compile'*'doifitem.binary?#don’tfilterbinaryitemselsefilter:erblayout'layout1'layout'layout2'
我只想对我一直在思考的这个问题有其他意见,例如我有classuser_controller和classuserclassUserattr_accessor:name,:usernameendclassUserController//dosomethingaboutanythingaboutusersend问题是我的User类中是否应该有逻辑user=User.newuser.do_something(user1)oritshouldbeuser_controller=UserController.newuser_controller.do_something(user1,user2)我
什么是ruby的rack或python的Java的wsgi?还有一个路由库。 最佳答案 来自Python标准PEP333:Bycontrast,althoughJavahasjustasmanywebapplicationframeworksavailable,Java's"servlet"APImakesitpossibleforapplicationswrittenwithanyJavawebapplicationframeworktoruninanywebserverthatsupportstheservletAPI.ht
目前,Itembelongs_toCompany和has_manyItemVariants。我正在尝试使用嵌套的fields_for通过Item表单添加ItemVariant字段,但是使用:item_variants不显示该表单。只有当我使用单数时才会显示。我检查了我的关联,它们似乎是正确的,这可能与嵌套在公司下的项目有关,还是我遗漏了其他东西?提前致谢。注意:下面的代码片段中省略了不相关的代码。编辑:不知道这是否相关,但我正在使用CanCan进行身份验证。routes.rbresources:companiesdoresources:itemsenditem.rbclassItemi