小编Kus*_*hal的帖子

如何使用DPI缩放因子(float)设置边距(int)

我的Android应用程序在480x800像素分辨率下看起来很棒,但它在LDPI屏幕上突破240x400像素.我知道我可以在活动中获得屏幕的缩放因子,根据屏幕分辨率getResources().getDisplayMetrics().density可以给出确切的float值.

在我的应用程序,我已经使用RelativeLayoutImageViewS中它,并设置使用图像的边缘setMargins(),这种方法是用像素在int其顶部,左侧,底部和正确的价值观,我怎么可以设置使用DPI因素我这些价值观?(这是一个浮动).我们有Math.floor()但是我使用像素将图像定位在非常特定的位置,并且方法返回的DPI因子在小数位上具有非常特定的值,这是不可忽略的,因此转换int对我来说不起作用.

更新

另外,我lp.setMargins(100,200,0,0);用来设置边距,我将使用DPI因子从设备中获得哪些修改?

PS我知道它更像是一个数学问题,而不是编程,但我对数学很差,对不起.

compatibility android resolution fragmentation

1
推荐指数
1
解决办法
6009
查看次数

通过拖放重新排列DataView的项

我有一个带有以下模板的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)

javascript dataview drag-and-drop extjs extjs4

1
推荐指数
1
解决办法
5451
查看次数

C编译器GCC和Turbo的奇怪行为

我经历过其他类似的问题,但试图了解我所面临的情况.

所以,这是我的两行C代码.

int i=0;
printf("%d %d %d %d %d",i++,i--,++i,--i,i);
Run Code Online (Sandbox Code Playgroud)

以下是我从GCC和Turbo C编译器获得的输出.

GCC

输出:

-1 0 0 0 0
Run Code Online (Sandbox Code Playgroud)

Turbo C.

输出:

-1 0 0 -1 0
Run Code Online (Sandbox Code Playgroud)

我尝试了单独使用预增量运算符的各种实验,并且两个编译器的工作方式相似,但是当我使用上面的printf语句时,输出会有所不同.

我知道Turbo C是一个古老的编译器,现在已经过时和非标准,但仍无法弄清楚上面的代码有什么问题.

c gcc turbo-c

0
推荐指数
1
解决办法
2100
查看次数

在JavaScript中访问对象成员的有效方法

我的问题与此有关,但它仍然涉及一些关键的差异.

所以在这里,我有以下代码;

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 performance object

0
推荐指数
1
解决办法
53
查看次数