所以我们从许多其他帖子中知道我们应该在Android中使用sp而不是dp来处理文本,我们知道这样做的原因是尊重"用户的偏好".
但究竟这些偏好是什么?用户如何更改此设置?
我无法通过手机上的设置找到任何参考(我希望在"辅助功能"或"显示"中有所体现).那么什么是用户设置?它只是通过像"大字体"这样的应用程序来完成的吗?
假设它(由大字体设置) - 我使用Google Docs和其他一些字体设置为130%的Google应用程序.虽然大多数布局保持良好,但有些布局有点切断且无法读取(这是在大屏蔽的SGS2上).那么,使用'sp'开发具有文本大小的应用程序的方法是什么?我们是否确保它可以100%缩放,然后忽略其他设置 - 将其称为用户可以担心的特殊情况,或者我们是否竭尽全力确保事物扩展或可滚动,以防文本溢出?
一个论点是我们应该使用'dp'来保证用户有机会看到文本(即使他们必须使用放大镜)
思想/评论?
我正在努力研究绑定服务是否适合在我的应用程序中进行后台工作.要求是各种应用程序组件可以通过它以不同的优先级发出Web请求.(因此,服务必须保持某种队列,并能够取消它对其他更高优先级的持续请求).我希望该服务对用户来说相对不显眼,以至于他们在完成应用程序后没有发现它正在运行 - 如果我想做一些更重要的事情,那么在应用程序关闭时我会继续使用startForeground( )在此过程中发送通知.
解决方案第一个:从活动绑定
因此,对于给定的应用程序组件,它应该能够绑定到服务以完成工作.但似乎存在一个众所周知的问题,即如果活动正在进行绑定,则在配置更改(旋转)期间绑定将丢失,因为活动将被关闭.
所以,我在想我可以使用另一个我创建的上下文(new Context())并从中绑定到服务,然后使用非UI片段来维护这个上下文的配置更改,直到我认为我已完成它.我只能在配置更改期间执行此操作,或者作为绑定活动的永久替代方法.(我应该指出,这是在配置更改中维护实例的标准和推荐方法)
解决方案数字2:
我看到的主要替代方案是我可以使用应用程序上下文来进行绑定 - 但这可能会持续太长时间吗?和/或应用程序上下文和服务之间是否存在某种循环关系,从而阻止服务和应用程序上下文被破坏?
问题:
所以我试图回答自己的问题是:我应该使用第一种方法(具有临时上下文的活动)吗?或者第二个(只是绑定服务到应用程序上下文)?
我是否正确认为应用程序上下文可以多次绑定到服务,然后从中取消绑定相同的次数?(即你可以有多个有效的绑定PER上下文)?
可以new Context()在第一个解决方案中使用我自己的context()会导致任何问题吗?
编辑
找到了更多信息:https://groups.google.com/forum/#!topic/android-Developers/Nb58dOQ8Xfw
似乎很难"任意"创建一个上下文,因此解决方案1和2的组合似乎是合适的,其中跨配置的服务连接保持变化,但绑定是应用程序上下文.我仍然担心从应用程序上下文解除绑定两次的可能性.保持绑定的计数本身似乎是不必要的 - 任何人都可以确认/否认绑定是每个连接而不是每个上下文?
java android android-service android-background android-service-binding
我正在使用min SDK 7开发一个针对SDK 8的应用程序,该SDK使用摄像头视图.
显然有一个旋转相机肖像的问题,已经有相当多的讨论.我目前有以下修复程序将SDK 7和8+分开:
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.FROYO){
theCamera.setDisplayOrientation(90);
} else {
parameters.set("orientation", "portrait");
parameters.set("rotation",90);
}
Run Code Online (Sandbox Code Playgroud)
这适用于2.1update1设备和我拥有的SGS2(运行ICS).
我的问题是,这些解决方案在各种设备上具有何种可靠性?我已经看到了'pre-froyo'情况的一些解决方案,所以我怀疑这个解决方案适用于所有设备.我也想知道'setdisplayorientation'在不同的设备上有多尊重......
听到其他人的经验,我真的很感激.
所以更多信息:如何正确设置Android相机方向? 这解释了这些方法在某些时候起作用.那么从什么点(SDK版本)setDisplayOrientation开始工作的所有时间的进一步问题?
根据这个诺基亚开发者的页面,您可以使用SubscribeForMessage方法读取NFC标签:http://www.developer.nokia.com/Community/Wiki/Use_NFC_tags_with_Windows_Phone_8
读取标记代码下方有一个"提示":
警告:要接收消息,必须在触发ProximityDevice.DeviceArrived事件之前执行订阅,或者用户必须删除标记并重复操作.
这是否意味着您无法使用Windows Phone 8多次从NFC设备读取?
如前所述这里 Android的API中,一些NFC设备可以用于例如密钥生成,所以可以进行多次读取和写入卡有用.
我试图preservesSuperviewLayoutMargins通过嵌套的视图层次结构使用,但是在UIKit遇到了很多问题,并想知道我做错了什么(或者这是否是一个真正的错误).
我试图布置一些视图(一些在彼此的旁边,一些在彼此之上),如下:
// Various combinations here will create different visual results (it will either work or won't)
let i1 = ImageView()
//let i1 = LabelView()
let i2 = ImageView()
//let i2 = LabelView()
let i3 = ImageView()
//let i3 = LabelView()
let view = LeftRight(left: i1, right: TopBottom(top: i2, bottom: i3))
//let view = LeftRight(left: TopBottom(top: i2, bottom: i3), right: i1)
Run Code Online (Sandbox Code Playgroud)
有了一些布局,我可以让它工作,如下所示.您可以看到右侧的图像正确缩进绿色视图,而绿色视图又正确地缩进白色视图.
但与其他人一起,我正在努力:
在应用程序中运行与此类似的代码我可以获得完整的锁定和内存失控.
缩进是这样完成的layoutMargins:
let masterView = UIView(frame: CGRect(x: 0, y: 0, width: 500, height: …Run Code Online (Sandbox Code Playgroud) 在 iOS 11 上,由于标签明显误报了其内在内容大小,我们的许多布局都被破坏了。
当 UILabel 被包装在另一个试图实现intrinsicContentSize自身的视图中时,该错误似乎表现得最糟糕。像这样(简化和人为的例子):
class LabelView: UIView {
let label = UILabel()
override init(frame: CGRect) {
super.init(frame: frame)
self.setup()
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
private func setup() {
self.label.textColor = .black
self.label.backgroundColor = .green
self.backgroundColor = .red
self.label.numberOfLines = 0
self.addSubview(self.label)
self.label.translatesAutoresizingMaskIntoConstraints = false
self.label.leadingAnchor.constraint(equalTo: self.leadingAnchor).isActive = true
self.label.trailingAnchor.constraint(lessThanOrEqualTo: self.trailingAnchor).isActive = true
self.label.topAnchor.constraint(equalTo: self.topAnchor).isActive = true
self.label.bottomAnchor.constraint(equalTo: self.bottomAnchor).isActive = true
}
override var intrinsicContentSize: CGSize {
let size …Run Code Online (Sandbox Code Playgroud) 所以,我正在尝试使用SWIG将C库(libnfc)移植到Java.
我已经到了编译共享库的地步,并且基本的"nfc_version()"方法调用将起作用.但是,调用"nfc_init()"进行设置会导致SIGSEGV错误.直接调用nfc库很好.
我用来生成共享库的命令:
swig -java -I../libnfc/include nfclib.i
gcc -c -I/usr/lib/jvm/java-7-openjdk-i386/include/ -I/usr/lib/jvm/java-7-openjdk-i386/include/linux nfclib_wrap.c
gcc -shared nfclib_wrap.o ../build/libnfc/libnfc.so libnfc_wrap.so
Run Code Online (Sandbox Code Playgroud)
libnfc.i文件:
%module nfc
%{
#include <nfc/nfc.h>
#include <nfc/nfc-types.h>
#include <nfc/nfc-emulation.h>
%}
%include <nfc/nfc.h>
%include <nfc/nfc-types.h>
%include <nfc/nfc-emulation.h>
Run Code Online (Sandbox Code Playgroud)
即它应该包括libnfc提供的所有方法.
这是我得到的错误日志:http://openetherpad.org/AyVDsO4XTg
显然,可能无法从我提供的信息中获得特定的解决方案.但任何有关尝试的事情的建议都会非常感激(我的知识就在这里).
我从服务器返回JSON,我想针对JSON Schema验证它(可能是草案V3,但可以改变).
我想也许NSDictionary会有功能,但似乎没有,这是我的尝试:
[self.dictionary ]
(dictionaryNSDictionary 在哪里)
没有任何方法可以验证NSDictionary我能找到的JSON模式.我该怎么做呢?
请注意,您可以在objective-c中编写C和C++,因此这些标记存在于问题中.
我有一个可选值,我想用它来索引字典。
我怎样才能做到这一点而不必用if let/ '弄脏'我的代码else?
例如
if
let key = type(of: self).notificationValueKeys[notification.name],
let value = notification.userInfo?[key] {
self.value = value
} else {
self.value = nil
}
Run Code Online (Sandbox Code Playgroud)