当我使用 Canvas 在我的自定义视图中绘制时,是否有一种简单的方法可以在不手动反转坐标计算的情况下为 RTL 区域设置绘制?
作为一个非常人为的例子,这是一个自定义视图,在 onDraw() 中包含以下内容:
int w = getWidth();
int h = getHeight();
canvas.save();
mPaint.setColor(Color.RED);
canvas.drawRect(0, 0, w / 2, h, mPaint);
mPaint.setColor(Color.BLUE);
canvas.drawRect(w / 2, 0, w, h, mPaint);
int size = h / 4;
mPaint.setColor(Color.GREEN);
int paddingEnd = ViewCompat.getPaddingEnd(this);
canvas.translate(-paddingEnd, getPaddingTop());
canvas.drawRect(w - size, 0, w, size, mPaint);
canvas.restore();
Run Code Online (Sandbox Code Playgroud)
它在 LTR 和 RTL 布局中看起来完全相同:
我知道您可以使用矩阵或 canvas.scale(),但是对于更复杂的场景,例如在画布上绘制文本或其他可绘制对象,这不是一个可行的选择。
在 Canvas 上完成 RTL 绘图的最佳方法是什么?我真的必须计算 X 轴坐标的倒置值吗?
Collections.max(arraylist)不起作用,常规for循环也不起作用.
我有的是:
ArrayList<Forecast> forecasts = current.getForecasts();
Run Code Online (Sandbox Code Playgroud)
Collections.max(forecast) 给我这个错误:
The method max(Collection<? extends T>) in the type Collections is
not applicable for the arguments (ArrayList<Forecast>)
Run Code Online (Sandbox Code Playgroud)
在ArrayList保持Forecast每个具有对象int字段的每一天的温度.我试图将max存储在int max中.
我想将Put和Post映射请求应用于如下所示的方法.它适用于PUT,但不适用于POST请求.我错了什么?
@RestController
@RequestMapping("/PQR")
public class XController {
@PutMapping("xyz")
@PostMapping("xyz")
public MyDomainObject createOrUpdateDAO(
HttpServletRequest request,
@RequestBody String body) throws IOException {
//...
}
}
Run Code Online (Sandbox Code Playgroud)
当我发出POST请求时,我得到一个405 HTTP状态代码:
[nio-8080-exec-3] osweb.servlet.PageNotFound:不支持请求方法'POST'
如果我看一下这个例子,同样的方法有相同的方法被映射为GET和POST请求.
@RequestMapping(value="/method3", method = { RequestMethod.POST,RequestMethod.GET })
@ResponseBody
public String method3() {
return "method3";
}
Run Code Online (Sandbox Code Playgroud) 据我所知,在 Chrome 等浏览器中,共享桌面或应用程序需要 Chrome 扩展程序才能工作,例如:
chrome.permissions.request({
permissions: ['desktopCapture'],
}
Run Code Online (Sandbox Code Playgroud)
但是为什么 Google Hangouts 不需要任何扩展来捕获桌面?
是否有任何 JavaScript 的 API 用于此?
我有一个很大的 json 文件,大小约为 40Gb。当我尝试将此对象数组文件转换为 java 对象列表时,它崩溃了。我已经使用了最大堆的所有大小xmx,但没有任何效果!
public Set<Interlocutor> readJsonInterlocutorsToPersist() {
String userHome = System.getProperty(USER_HOME);
log.debug("Read file interlocutors "+userHome);
try {
ObjectMapper mapper = new ObjectMapper();
// JSON file to Java object
Set<Interlocutor> interlocutorDeEntities = mapper.readValue(
new File(userHome + INTERLOCUTORS_TO_PERSIST),
new TypeReference<Set<Interlocutor>>() {
});
return interlocutorDeEntities;
} catch (Exception e) {
log.error("Exception while Reading InterlocutorsToPersist file.",
e.getMessage());
return null;
}
}
Run Code Online (Sandbox Code Playgroud)
有没有办法使用读取此文件BufferedReader,然后逐个对象推送?
当输入大小恰好为 2 时,我尝试插入连字符。这是我的代码
document.getElementById('numberInput').onkeypress = function() {
if (this.value.length == 2) {
this.value = this.value + '-';
}
}Run Code Online (Sandbox Code Playgroud)
<input type="text" id="numberInput">Run Code Online (Sandbox Code Playgroud)
但问题是 - 直到输入第三个字符才出现。尽管连字符放置正确,但我的意思是在两个字符之后。
输入两个字符后如何立即得到连字符?
我尝试过onkeyup,但问题是当我按退格按钮时它也会触发。当有两个字符时,会出现连字符,但此时如果我按退格键并删除连字符,它会立即返回。所以我选择onkeypress
重复以下问题:C函数冲突
嗨,在我目前的项目中,我必须使用某种接口库.函数名由这个接口给出,这个函数做的是开发人员的选择.据我所知,项目应该使用这个函数,当涉及到编译时,你可以选择lib并使用它来实现功能.我尝试做的是通过包装另一个并在mein函数中调用它来同时使用现有的lib和我的lib:
otherlib:
int function1 (int a) {
// do something
}
Run Code Online (Sandbox Code Playgroud)
MYLIB:
int function1 (int a) {
//my code here
otherlib::function1(a);
}
Run Code Online (Sandbox Code Playgroud)
问题是我没有访问其他lib,而其他lib没有任何名称空间.我已经试过了
namespace old {
#include "otherlib.h"
}
Run Code Online (Sandbox Code Playgroud)
然后在我的函数中通过old :: function1调用旧函数.只要它是唯一的头文件,这就可以工作.lib将它的符号输出回全球空间.还有类似的东西
namespace new {
function1 (int a) {
::function1(a);
}
}
Run Code Online (Sandbox Code Playgroud)
没用.最后但并非最不重要的是我尝试了ifdef和这里建议的定义
但我没有成功.
任何想法如何解决这个问题?提前致谢.
编辑:我既没有访问旧的lib也没有项目的两个库都应该使用.
EDIT2:至少旧的lib是静态的
一个多态关联类似于外键或多对一的一个关系,区别在于目标可能是多种类型(在语言班,在db表)之一.
我正在移植一个数据库设计,我已经使用了几年,从PHP到Java.在旧的代码中,我已经推出了自己的ORM,由于多种原因这不是最佳的.虽然我可能会在以后开始调整内容,也许最终会自己再次实现,现在我想在我的实体类中使用现成的ORM和JPA.
现在,关于数据库布局有一点我不知道如何在JPA中表达:
我有一个存储图形Node的Edge表格(DAG,如果重要的话).每个节点可以可选地从数据库引用另一个实体.在整个图表中可以多次引用这些entites,并且还可能存在"孤立"的entites,这对于用户来说是不可访问的,但是至少保持一段时间可能是有意义的.
这些对象在继承等方面完全没有关系,但具有自然层次结构,类似于Customer-> Site-> Floor-> Room.事实上,几年前,我开始只使用指向"父"对象的外键字段.但是,这种层次结构不够灵活,并且开始崩溃.
例如,我想允许用户将文件夹中的对象分组,某些对象可以有多个"父母",并且关系也会随着时间而变化.我需要跟踪关系是如何进行的,因此图的edegs具有与它们相关的时间跨度,从何时到何时有效.
从节点到对象的链接存储在节点表的两列中,一个在外表中携带id,一个携带其名称.例如(省略了一些列):
table Node:
+--------+-------+----------+
| ixNode | ixRef | sRefType |
+--------+-------+----------+
| 1 | NULL | NULL | <-- this is what a "folder" would look like
| 2 | 17 | Source |
| 3 | 58 | Series | <-- there's seven types of related objects so far
+--------+-------+----------+
table Source (excerpt):
+----------+--------------------+
| ixSource | sName |
+----------+--------------------+
| 16 | …Run Code Online (Sandbox Code Playgroud) 在Java中,我可以轻松地将数字转换为一个字节,例如:
System.err.println((byte) 13020);
Run Code Online (Sandbox Code Playgroud)
结果将是
-36
Run Code Online (Sandbox Code Playgroud)
现在我如何在PHP中实现相同的目标?
我正在尝试使用热键和在任务栏托盘中启动的选项来创建应用程序.
现在的问题是,this.Hide()在load事件中使用不会产生任何影响.我可以添加this.ShowInTaskbar = false,但在我再次设置为true后,为了显示窗口,它会自动禁用我的热键.
有没有其他方法可以在启动时隐藏我的表单,或者阻止我的热键取消注册?
我隐藏表单的代码:
private void frmMain_Load(object sender, EventArgs e)
{
if (StartBG())
{
this.Hide();
this.ShowInTaskbar = false;
notifyIcon.Visible = true;
notifyIcon.ShowBalloonTip(3000, "Kore screenshots", "The application is started and will run on the background.", ToolTipIcon.Info);
}
}
Run Code Online (Sandbox Code Playgroud)
在上面的代码之后,热键仍然有效,
private void showform()
{
this.Show();
this.ShowInTaskbar = true;
notifyIcon.Visible = false;
this.WindowState = FormWindowState.Normal;
}
Run Code Online (Sandbox Code Playgroud)
在此代码之后,热键被禁用.