这次设计视频背景界面去测试一下之前自制的数据库接口。
代码下载及更多教程在我的公众号:For My Future
之前写短视频脚本时用到videoview,既然要制作视频背景,那么也需要用到这个控件。还有一个问题是我们的文本框不能够被videoview阻挡,文本,button等一些控件要显示到videoview之上,用到了elevation这个属性。
ui.layout(
<frame >
<android.widget.VideoView layout_gravity="center" id="vd" h="{{device.height}}px" w="{{device.width}}" />
<vertical elevation="1dp" padding="1sp">
<vertical >
<vertical padding="16">
<text textSize="30sp" textColor="#ff0000" gravity="center" >服务器数据查询测试</text>
</vertical>
<vertical h="auto" align="center" margin="0 50">
<linear>
<card w="*" h="500" margin="0" cardCornerRadius="15dp" cardElevation="15dp" gravity="center" alpha="0.5">
<vertical gravity="center">
<text id="t1" size="10" color="#dd000000" paddingLeft="20"/>
<input id="qq" w="*" marginRight="30" marginLeft="30" singleLine="true" hint="请输入要查询的QQ号:" inputType="number" textColorHint="#dd000000"/>
<text id="t2" size="10" color="#dd000000" marginTop="10" paddingLeft="35"/>
<text id="phone" singleLine="true" size="15" textIsSelectable="true" w="*" marginRight="30" marginLeft="30" singleLine="true" hint="查询结果显示" textColorHint="#dd000000" />
<button id="find" style="Widget.AppCompat.Button.Colored" h='70dp' gravity="center">查询</button>
</vertical>
</card>
</linear>
</vertical>
</vertical>
</vertical>
</frame>
);
并且设置全屏,
activity.window.setFlags(android.view.WindowManager.LayoutParams.FLAG_FULLSCREEN, android.view.WindowManager.LayoutParams.FLAG_FULLSCREEN);//设置全屏
添加视频地址,并重复播放
ui.vd.setVideoPath("/storage/emulated/0/pictures/QQ/luming.mp4")
ui.vd.start()
threads.start(function() {
sleep(10000)
while (true)
if (!ui.vd.isPlaying()) {
ui.vd.start()
sleep(10000);
}
})
界面展示,

在写以上代码时,遇到了一些问题,列举如下:
1.videoview设置长宽的时候,发现视频播放总不能全屏,上下会留一些白框,如下图所示,

一开始我以为是视频本身的问题,换了视频源之后依然如此,当时长宽是这样设置的:
h="{{device.height}}px" w="{{device.width}}px"
后来,我改成了
h="{{device.height}}px" w="{{device.width}}"
只是w没加px单位,竟然能够全屏了。没加px应该默认识别为虚拟像素,更容易适配不同手机。
2.text文本无法复制,加上textIsSelectable="true"即可解决。
3.视频地址设置问题,之前写img控件,src资源设置为src=“file://./1.png”,只要把1.png移动到与当前脚本同一个目录级别即可识别,但是ui.vd.setVideoPath(“file://./luming.mp4”)识别不出来,必须写视频地址的绝对路径
ui.vd.setVideoPath("/storage/emulated/0/pictures/QQ/luming.mp4")。
function receivemsg(qq){
let url="http://39.101.69.250:88/qq.php?qq="+qq;
let r=http.get(url);
let result2=r.body.string();
let result=(JSON.parse(result2)).phone
if(result!=""){
ui.phone.setText(result[0].phone)}
else{ ui.phone.setText("数据库中没有此条数据!!!")}
}
ui.find.on("click",()=> {
threads.start(function() {
let temp=ui.qq.getText();
receivemsg(temp);
})
})
效果展示:

视频演示:
【Auto.js自制数据库接口测试(视频背景)-哔哩哔哩】
https://b23.tv/A6jsdgb
代码下载及更多教程在我的公众号:For My Future
很好奇,就使用rubyonrails自动化单元测试而言,你们正在做什么?您是否创建了一个脚本来在cron中运行rake作业并将结果邮寄给您?git中的预提交Hook?只是手动调用?我完全理解测试,但想知道在错误发生之前捕获错误的最佳实践是什么。让我们理所当然地认为测试本身是完美无缺的,并且可以正常工作。下一步是什么以确保他们在正确的时间将可能有害的结果传达给您? 最佳答案 不确定您到底想听什么,但是有几个级别的自动代码库控制:在处理某项功能时,您可以使用类似autotest的内容获得关于哪些有效,哪些无效的即时反馈。要确保您的提
我有一个模型:classItem项目有一个属性“商店”基于存储的值,我希望Item对象对特定方法具有不同的行为。Rails中是否有针对此的通用设计模式?如果方法中没有大的if-else语句,这是如何干净利落地完成的? 最佳答案 通常通过Single-TableInheritance. 关于ruby-on-rails-Rails-子类化模型的设计模式是什么?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.co
我主要使用Ruby来执行此操作,但到目前为止我的攻击计划如下:使用gemsrdf、rdf-rdfa和rdf-microdata或mida来解析给定任何URI的数据。我认为最好映射到像schema.org这样的统一模式,例如使用这个yaml文件,它试图描述数据词汇表和opengraph到schema.org之间的转换:#SchemaXtoschema.orgconversion#data-vocabularyDV:name:namestreet-address:streetAddressregion:addressRegionlocality:addressLocalityphoto:i
我正在编写一个包含C扩展的gem。通常当我写一个gem时,我会遵循TDD的过程,我会写一个失败的规范,然后处理代码直到它通过,等等......在“ext/mygem/mygem.c”中我的C扩展和在gemspec的“扩展”中配置的有效extconf.rb,如何运行我的规范并仍然加载我的C扩展?当我更改C代码时,我需要采取哪些步骤来重新编译代码?这可能是个愚蠢的问题,但是从我的gem的开发源代码树中输入“bundleinstall”不会构建任何native扩展。当我手动运行rubyext/mygem/extconf.rb时,我确实得到了一个Makefile(在整个项目的根目录中),然后当
我有一个围绕一些对象的包装类,我想将这些对象用作散列中的键。包装对象和解包装对象应映射到相同的键。一个简单的例子是这样的:classAattr_reader:xdefinitialize(inner)@inner=innerenddefx;@inner.x;enddef==(other)@inner.x==other.xendenda=A.new(o)#oisjustanyobjectthatallowso.xb=A.new(o)h={a=>5}ph[a]#5ph[b]#nil,shouldbe5ph[o]#nil,shouldbe5我试过==、===、eq?并散列所有无济于事。
我有一些Ruby代码,如下所示:Something.createdo|x|x.foo=barend我想编写一个测试,它使用double代替block参数x,这样我就可以调用:x_double.should_receive(:foo).with("whatever").这可能吗? 最佳答案 specify'something'dox=doublex.should_receive(:foo=).with("whatever")Something.should_receive(:create).and_yield(x)#callthere
我将应用程序升级到Rails4,一切正常。我可以登录并转到我的编辑页面。也更新了观点。使用标准View时,用户会更新。但是当我添加例如字段:name时,它不会在表单中更新。使用devise3.1.1和gem'protected_attributes'我需要在设备或数据库上运行某种更新命令吗?我也搜索过这个地方,找到了许多不同的解决方案,但没有一个会更新我的用户字段。我没有添加任何自定义字段。 最佳答案 如果您想允许额外的参数,您可以在ApplicationController中使用beforefilter,因为Rails4将参数
所以我在关注Railscast,我注意到在html.erb文件中,ruby代码有一个微弱的背景高亮效果,以区别于其他代码HTML文档。我知道Ryan使用TextMate。我正在使用SublimeText3。我怎样才能达到同样的效果?谢谢! 最佳答案 为SublimeText安装ERB包。假设您安装了SublimeText包管理器*,只需点击cmd+shift+P即可获得命令菜单,然后键入installpackage并选择PackageControl:InstallPackage获取包管理器菜单。在该菜单中,键入ERB并在看到包时选择
Sinatra新手;我正在运行一些rspec测试,但在日志中收到了一堆不需要的噪音。如何消除日志中过多的噪音?我仔细检查了环境是否设置为:test,这意味着记录器级别应设置为WARN而不是DEBUG。spec_helper:require"./app"require"sinatra"require"rspec"require"rack/test"require"database_cleaner"require"factory_girl"set:environment,:testFactoryGirl.definition_file_paths=%w{./factories./test/
我遵循MichaelHartl的“RubyonRails教程:学习Web开发”,并创建了检查用户名和电子邮件长度有效性的测试(名称最多50个字符,电子邮件最多255个字符)。test/helpers/application_helper_test.rb的内容是:require'test_helper'classApplicationHelperTest在运行bundleexecraketest时,所有测试都通过了,但我看到以下消息在最后被标记为错误:ERROR["test_full_title_helper",ApplicationHelperTest,1.820016791]test