我正在创建一个启动画面,在我的Android应用程序加载时会显示.我想以正确的大小创建它,以便Android不会自动向上或向下自动缩放以适应屏幕.(这是一个位图图片,一幅油画的照片,所以我不能把它变成九个补丁.)
但我至少有三种重要的屏幕尺寸:320x480,480x854(Droid)和480x800(Nexus One).
我已经阅读了有关支持多种屏幕尺寸的文档,但我仍然没有看到我应该如何为Droid/Nexus配置不同的启动屏幕(就Android而言,它们都是"hdpi"资源) ,我不知道在任何情况下我的闪屏应该有多大.(Droid的操作系统标题栏/菜单有多高?N1?)
我应该以多大的尺寸制作这些图像,如何告诉Android在给定的屏幕上使用正确的尺寸?
在Internet Explorer上,<p></p>每次按Enter键时,contentEditable DIV都会创建一个新段落(),而Firefox会创建一个<br/> 标记.
作为讨论在这里,可以使用JavaScript来拦截回车按键,并使用range.pasteHTML创建<br/>代替.但这样做打破了撤销菜单; 一旦你按Enter键,你就不能再撤消该点了.
如何强制contentEditable元素在Enter上创建单个换行符而不会破坏撤消?
当服务工作者更新时,它不会正确控制页面; 它进入"等待"状态,等待激活.
令人惊讶的是,更新后的服务工作人员在刷新页面后甚至无法控制选项卡.谷歌解释说:
https://developers.google.com/web/fundamentals/instant-and-offline/service-worker/lifecycle
即使您只有一个标签打开演示,刷新页面也不足以让新版本接管.这是由于浏览器导航的工作原理.导航时,当前页面在收到响应标头之前不会消失,即使这样,如果响应有
Content-Disposition标题,当前页面也可能保留.由于这种重叠,当前服务工作者总是在刷新期间控制客户端.要获取更新,请使用当前服务工作人员关闭或远离所有选项卡.然后,当您再次导航到演示时,您应该看到马[更新内容].
此模式与Chrome更新的方式类似.Chrome在后台下载更新,但在Chrome重新启动后才会应用.同时,您可以继续使用当前版本而不会中断.然而,这在开发过程中是一种痛苦,但DevTools有办法让它变得更容易,我将在本文后面介绍.
在多个选项卡的情况下,此行为是有意义的.我的应用程序是一个需要自动更新的包; 我们不能混合和匹配旧捆绑的一部分和新捆绑的一部分.(在本机应用程序中,原子性是自动且有保证的.)
但是在单个选项卡的情况下,我称之为应用程序的"最后打开选项卡",这种行为不是我想要的.我想刷新最后一个打开的标签来更新我的服务人员.
(很难想象当最后一个打开的标签刷新时,任何人都希望旧的服务工作者继续运行.谷歌的"导航重叠"论证听起来像是一个不幸的错误的好借口.)
我的应用通常只在一个标签中使用.在生产中,我希望我的用户能够通过刷新页面来使用最新的代码,但这不起作用:旧的服务工作者将在刷新时保持控制.
我不想告诉用户,"要接收更新,请务必关闭或远离我的应用." 我想告诉他们,"只是刷新."
当用户刷新页面时,如何激活更新的服务工作者?
编辑:有一个答案我知道这是快速,简单和错误:skipWaiting在服务工作者的安装事件中.skipWaiting将使新服务工作程序在更新下载后立即生效,同时打开旧页面选项卡.这使得更新不安全地非原子化; 这就像在应用程序运行时替换本机应用程序包.那对我来说不行.我需要等到用户刷新上一个打开的选项卡的页面.
我正在开发一个iPhone应用程序并进行临时分发以进行beta测试.我的用户正在向我发送崩溃日志,说明:
Identifier: MyAppName
Version: ??? (???)
Code Type: ARM (Native)
Run Code Online (Sandbox Code Playgroud)
我无法理解如何用真实版本号替换这些问号.我已经将我的Info.plist配置为包含CFBundleVersion和CFBundleShortVersionString,但这没有帮助...崩溃日志仍然只包含问号而不是我期望的版本号.
如何设置我的版本以便它显示在崩溃日志中?
编辑显然,由于iPhone CrashReporter中可能存在错误,因此无法正确设置"版本".但是有解决方法吗?在崩溃日志元数据中插入版本号(例如内部版本号或SCM版本号)的其他方法是什么?
为了让iPad Pro在发布时使用全分辨率,我们必须使用启动屏幕文件.
我之前从未使用过Launch Screen XIB/Storyboard,因为我的应用程序向后兼容iOS 7.通常我使用LaunchImage资产目录为每个设备维度和启动方向定义特定的静态图像.
现在我正在尝试定义一个类似于LaunchImage资产目录的启动屏幕文件,但我很难做到这一点.特别是:
1)我没有看到根据设备的确切大小选择不同的UIImage的好方法,例如向iPhone 4S用户显示一个图像,向iPhone 5用户显示另一个图像.
2)我没有办法为iPad Portrait和iPad Landscape视图选择不同的UIImage.大小类似乎认为iPad Portrait和iPad Landscape都是"Regular"宽度和"Regular"高度,因此任何出现在iPad Portrait上的UIImage也会出现在iPad Landscape中.
我正在设计一个HTML页面,以便在Android浏览器中显示.考虑这个简单的示例页面:
<html>
<head><title>Simple!</title>
</head>
<body>
<p><img src="http://sstatic.net/so/img/logo.png"></p>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
它在标准HVGA手机(320x480)上看起来很不错,但在HDPI WVGA尺寸(480x800或480x854)上,内置浏览器会自动缩放图像.它看起来很难看.
我已经读过,我应该可以使用此标记强制浏览器停止缩放页面:
<meta name="viewport" content="width=device-width; initial-scale=1.0; maximum-scale=1.0; minimum-scale=1.0; user-scalable=0;" />
Run Code Online (Sandbox Code Playgroud)
...但所有这一切都是禁用用户缩放(缩放按钮消失); 它实际上并没有阻止浏览器缩放我的图像.调整比例因子(将它们全部设置为2.0或0.5)完全没有效果.
如何强制WVGA浏览器停止缩放图像?
将iOS应用程序提交到App Store时出现此错误.产品→存档,在Xcode 10中的管理器中单击"分发应用程序".
没有为团队"[我的团队名称]"找到App Store Connect访问权限的帐户.App Store分发需要App Store Connect访问权限.
我已经以正确的用户帐户登录App Store Connect并验证我有管理员权限.
我正在尝试编写一个Ant脚本来通过端口隧道检索URL.
当我使用密码(名字xxxx出于隐私)时,它工作得很好:
<project default="main">
<target name="main">
<sshsession host="xxxx"
username="xxxx"
password="xxxx">
<LocalTunnel lport="1080" rhost="xxxx" rport="80"/>
<sequential>
<get src="http://localhost:1080/xxxx" dest="/tmp/xxxx"/>
</sequential>
</sshsession>
</target>
</project>
Run Code Online (Sandbox Code Playgroud)
但是当我使用密钥文件时它不起作用,如下所示:
<sshsession host="xxxx"
username="xxxx"
keyfile="/Users/xxxx/.ssh/id_dsa"
passphrase="xxxx">
<LocalTunnel lport="1080" rhost="xxxx" rport="80"/>
<sequential>
<get src="http://localhost:1080/xxxx" dest="/tmp/xxxx"/>
</sequential>
</sshsession>
Run Code Online (Sandbox Code Playgroud)
我得到这个例外:
/tmp/build.xml:8: com.jcraft.jsch.JSchException: Auth cancel
at com.jcraft.jsch.Session.connect(Session.java:451)
at com.jcraft.jsch.Session.connect(Session.java:150)
at org.apache.tools.ant.taskdefs.optional.ssh.SSHBase.openSession(SSHBase.java:223)
Run Code Online (Sandbox Code Playgroud)
这个错误的原因是什么,我该怎么办呢?
我偶尔会从Market开发者控制台获得这个堆栈跟踪; 我找不到任何方法来重现错误.在应用程序首次加载时显示启动画面ImageView时会发生这种情况,但堆栈跟踪没有任何代码.我甚至认为我的活动甚至没有达到onCreate,尽管没有日志很难说.
实际上,我从未在代码中的任何地方使用过Bitmap.我对图像的唯一引用是在我的layout.xml中.
<ImageView android:id="@+id/splashScreen"
android:layout_height="fill_parent"
android:layout_width="fill_parent"
android:src="@drawable/splashscreen"
android:scaleType="fitXY"
/>
Run Code Online (Sandbox Code Playgroud)
我对这个ImageView做的唯一事情是设置它GONE在我完成启动时的可见性.
我能做些什么吗?
java.lang.RuntimeException: Canvas: trying to use a recycled bitmap android.graphics.Bitmap@4721ec18
at android.graphics.Canvas.throwIfRecycled(Canvas.java:955)
at android.graphics.Canvas.drawBitmap(Canvas.java:1044)
at android.graphics.drawable.BitmapDrawable.draw(BitmapDrawable.java:323)
at android.widget.ImageView.onDraw(ImageView.java:923)
at android.view.View.draw(View.java:6761)
at android.view.ViewGroup.drawChild(ViewGroup.java:1663)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1390)
at android.view.View.buildDrawingCache(View.java:6517)
at android.view.View.getDrawingCache(View.java:6305)
at android.view.ViewGroup.drawChild(ViewGroup.java:1588)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1390)
at android.view.ViewGroup.drawChild(ViewGroup.java:1661)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1409)
at android.view.View.draw(View.java:6764)
at android.widget.FrameLayout.draw(FrameLayout.java:352)
at android.view.ViewGroup.drawChild(ViewGroup.java:1663)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1390)
at android.view.ViewGroup.drawChild(ViewGroup.java:1661)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1390)
at android.view.ViewGroup.drawChild(ViewGroup.java:1661)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1390)
at android.view.View.draw(View.java:6764)
at android.widget.FrameLayout.draw(FrameLayout.java:352)
at android.view.ViewGroup.drawChild(ViewGroup.java:1663)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1390)
at android.view.ViewGroup.drawChild(ViewGroup.java:1661)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1390)
at …Run Code Online (Sandbox Code Playgroud)