我的Android应用程序在480x800像素分辨率下看起来很棒,但它在LDPI屏幕上突破240x400像素.我知道我可以在活动中获得屏幕的缩放因子,根据屏幕分辨率getResources().getDisplayMetrics().density可以给出确切的float值.
在我的应用程序,我已经使用RelativeLayout和ImageViewS中它,并设置使用图像的边缘setMargins(),这种方法是用像素在int其顶部,左侧,底部和正确的价值观,我怎么可以设置使用DPI因素我这些价值观?(这是一个浮动).我们有Math.floor()但是我使用像素将图像定位在非常特定的位置,并且方法返回的DPI因子在小数位上具有非常特定的值,这是不可忽略的,因此转换int对我来说不起作用.
更新
另外,我lp.setMargins(100,200,0,0);用来设置边距,我将使用DPI因子从设备中获得哪些修改?
PS我知道它更像是一个数学问题,而不是编程,但我对数学很差,对不起.
我有一个带有以下模板的ExtJS DataView:
<ul>
<tpl for=".">
<li class="report-field" id="{listId}">
{[this.getReorderLinks(values, xindex, xcount)]}
<span class="field-title small" data-qtip="{displayName}">{displayName}</span>
<i class="field-remove" title="' + deleteLabel + '"></i>
</li>
</tpl>
</ul>
Run Code Online (Sandbox Code Playgroud)
这使得每个项目列表如下所示:

用户可以在其中单击不同的图标并执行相关操作,依次向上/向下移动并删除。
请注意,这些项目是通过拖放操作添加到dataview的,这里还有另一个源dataview容器,我可以从中拖动这些项目并添加到此处。虽然这些向上/向下箭头可以很好地对它们进行重新排序,但我想在内部使用拖放功能对这些项目进行重新排序。
因此,为了使每个项目都可在同一区域中拖放,我使用refreshdataview事件和在此处注册的DND如下:
listeners: {
'refresh': function(dataview, eOpts) {
var fieldsList = Ext.query('.added-field');
// Iterate over the list and make each item draggable/droppable.
Ext.each(fieldsList,function(field){
var dragSource,
fieldId;
fieldId = field.id;
dragSource = new Ext.dd.DragSource(field, {
isTarget : false
});
dropZone = new Ext.dd.DropTarget(field);
dragSource.dragData = {
record: me.viewStore.findRecord('listId', fieldId),
fieldId: fieldId
}; …Run Code Online (Sandbox Code Playgroud) 我经历过其他类似的问题,但试图了解我所面临的情况.
所以,这是我的两行C代码.
int i=0;
printf("%d %d %d %d %d",i++,i--,++i,--i,i);
Run Code Online (Sandbox Code Playgroud)
以下是我从GCC和Turbo C编译器获得的输出.
输出:
-1 0 0 0 0
Run Code Online (Sandbox Code Playgroud)
输出:
-1 0 0 -1 0
Run Code Online (Sandbox Code Playgroud)
我尝试了单独使用预增量运算符的各种实验,并且两个编译器的工作方式相似,但是当我使用上面的printf语句时,输出会有所不同.
我知道Turbo C是一个古老的编译器,现在已经过时和非标准,但仍无法弄清楚上面的代码有什么问题.
我的问题与此有关,但它仍然涉及一些关键的差异.
所以在这里,我有以下代码;
for(var i = 0; i < someObj.children[1].listItems.length; i++)
{
doSomething(someObj.children[1].listItems[i]);
console.log(someObj.children[1].listItems[i]);
}
Run Code Online (Sandbox Code Playgroud)
与
var i = 0,
itemLength = someObj.children[1].listItems.length,
item;
for(; i < itemLength; i++)
{
item = someObj.children[1].listItems[i];
doSomething(item);
console.log(item);
}
Run Code Online (Sandbox Code Playgroud)
现在,这是我在ExtJS中制作的企业Web应用程序中处理的代码的一个非常小的示例部分.现在在上面的代码中,与第一个示例相比,第二个示例显然更具可读性和清晰度. 但是当我以类似的方式减少对象查找次数时,是否有任何性能提升?
我问这个场景,在循环中会有更多的代码访问对象深处的成员,并且迭代本身将发生~1000次,浏览器从IE8变为最新的Chrome.
javascript ×2
android ×1
c ×1
dataview ×1
extjs ×1
extjs4 ×1
gcc ×1
object ×1
performance ×1
resolution ×1
turbo-c ×1