小编Dan*_*edo的帖子

测量在Canvas(Android)上绘制的文本高度

有没有直接测量文字高度的方法?我现在这样做的方法是使用Paint measureText()来获取宽度,然后通过试验和错误找到一个值来获得近似高度.我也一直在搞乱FontMetrics,但所有这些似乎都是近似的方法.

我正在尝试扩展不同分辨率的东西.我可以做到,但我最终得到了令人难以置信的冗长代码,并通过大量计算来确定相对大小.我讨厌它!一定有更好的方法.

graphics android view android-canvas

119
推荐指数
4
解决办法
9万
查看次数

在OOP中,在课堂上使用"this"的最佳做法是什么?

我一直想知道的事情; 在一个类中,你可以通过使用'this.[NAME]'或简单地[NAME]来引用一个成员,这是首选?

例如在Java中:

public class foo {
    public int bars = 0;
    private void incrementBars(){
        bars++;
    }
}   
Run Code Online (Sandbox Code Playgroud)

public class foo {
    public int bars = 0;
    private void incrementBars(){
        this.bars++;
    }
}
Run Code Online (Sandbox Code Playgroud)

"似乎"具有相同的效果.

在我实例化类foo的多个实例的情况下,到目前为止,我做了类似的事情:

for (foo f : listOfFoos){
    f.incrementBars();
}
Run Code Online (Sandbox Code Playgroud)

它似乎仍然有效.

它在技术上是不明确的,如果是这样,有一种首选方式吗?

java oop coding-style

10
推荐指数
2
解决办法
2302
查看次数

Xcode持续集成 - "iOS模拟器无法安装应用程序"

遇到一个奇怪的问题:集成有时会失败:

测试目标[...]遇到错误(iOS模拟器无法安装应用程序.)

我们使用两个模拟器7.0和7.1进行测试.

我尝试在服务器上打开模拟器并通过ui清除它们的内容.我还试图删除〜/ Library/Application Support/iPhone/Simulator/7.xx/Applications数据而没有结果.

令人沮丧的是整合过程工作了几个小时,然后打破了上面提到的失败消息,然后工作.

我看过原木,但没有吸烟枪,但我可能错过了什么.

我应该在哪里调试这个?

如果这只是关于iOS模拟器无法安装应用程序的所有其他问题的特殊情况,那么我想我需要能够运行清理脚本.如何挂钩整合过程?

更新:我在每次集成之前手动运行此命令:

rm -rfv ~/Library/Application\ Support/iPhone\ Simulator/;
Run Code Online (Sandbox Code Playgroud)

结果相同.我有时会得到"iOS模拟器无法安装......"

我也尝试通过ui手动清除模拟器.我仍然遇到了这个问题.

xcode continuous-integration ios ios-simulator

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

Javascript屏幕宽度/高度到PHP

我知道它没有任何意义,但有没有办法在客户端上运行javascript,找到活动浏览器的屏幕宽度/高度,然后将这些变量传递给PHP脚本?

所有的常识通常都是PHP >> Javascript,我从不相信客户端,我现在找不到办法.

这是一个.php文件,所以很容易阻塞,但我似乎无法反过来.

我正在创建一个JSON对象,但后来意识到我还有同样的墙要爬.

谢谢.

我发现技术之间的相互作用作为一个业余爱好者有点挑战,但它让我感到强大.也许很快我就能用手停止例外.好吧,矩阵引用失败了,因为这是人们在第二层文字级别上所做的事情.

javascript php browser json

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

UIScrollView - 将视图移动到前面,但在滚动指示器下面

我正在使用从UIScrollView继承的自定义视图.我遇到的问题是添加一个应该在其他视图前面的"顶部"显示的UILabel.它很有效,但不幸的是它也掩盖了滚动指示器.

在此输入图像描述

如您所见,滚动指示器被遮挡.我不想禁用滚动指示器.

我将视图直接添加到UIScrollView:

UILabel *subsection = [[UILabel alloc] initWithFrame:CGRectMake(0, y * h, 
    [self totalContentWidth], [tableViewDelegate rowHeight])];
[subsection setText:subsectionName];
[subsection setTextAlignment:NSTextAlignmentCenter];

[subSectionRows setValue:subsection forKey:key];

[self addSubview:subsection];
Run Code Online (Sandbox Code Playgroud)

然后把它们带到前面,哪个

- (void) bringSubsectionsToFront {   
    for (UIView* row in [self.subSectionRows allValues]) {
        [self bringSubviewToFront:row];
    }
}
Run Code Online (Sandbox Code Playgroud)

这种行为让我感到困惑.如果我查看UIView.layer.zPosition所有UIScrollView的子视图,它们都是一样的.

如果我调整bringSubsectionsToFront方法而不是在包含网格线的视图前移动标签,则行为是相同的.

查看一些行为有效的内部视图类,看起来好像它们被添加到滚动视图中: [self insertSubview:cell atIndex:0];

我在这里错过了什么?

解决方案: verec评论说,如果我真的想要,我可以找到这些酒吧.所以我在适当的时候迭代了子视图列表,果然,他们在那里.对象的顺序如下:

CustomCell
...
UIImageView
UIImageView
CustomBorderView
UILabel
UILabel
Run Code Online (Sandbox Code Playgroud)

假设这是z排序,难怪我的标签总是排在最前面.

解决方案变得简单 在CustomCells之后添加UILabel.此解决方案仅适用,因为自定义表在索引0处添加了CustomCells,我相信在CustomCells之后会出现滚动指示符.如果这个假设成立,我可以重新排序相对于CustomCells的其他视图,实现我想要的分层效果.

objective-c uiscrollview ios

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

Android:如何将回调传递给活动?

我正在创建一个库.它会创建一个活动,启动它,并在按下按钮后完成它.

按下按钮后,我想通过一个接口执行一些客户端代码.

也就是说,这个库的用户传入一个实现,我只是执行它.

类似的iOS代码将是:

MyViewController *vc = [[MyViewController alloc] init];
vc.callOnComplete = ...
[self presentViewController:vc animated:YES completion:nil];
Run Code Online (Sandbox Code Playgroud)

所需的代码是:

public interface SaveStuff {
    void save();
}
Run Code Online (Sandbox Code Playgroud)

在我的图书馆的活动中:

private SaveStuff saveStuff;
public void onButtonClicked(View v) {
    saveStuff.save() // client passes in saveStuff obj
    finish();
}
Run Code Online (Sandbox Code Playgroud)

我尝试过序列化.我创建了一个实现接口并且也实现了的类Serializable,并尝试将其传递并使用它进行提取getSerializableExtra.我最终获得了一个非序列化的异常.据我所知,这可能不是一个可行的解决方案,因为它意味着客户端必须在其实现中仅使用可序列化的类.如果我错了,请纠正我.在我的试验中,客户端活动显示在非序列化异常中.

我尝试过使用静态引用.基本上是全球州/单身人士.事实证明,根据诸如此类的各种答案:Java静态变量变为空,我不能依赖任何静态状态,并且任何与静态一起工作的解决方案只是巧合.

我没有尝试过简单地启动活动startActivityForResult,因为这需要我将我们接受的上下文作为参数投射到Activity.活动启动里面有这个库:

private void startNewActivity(int newVersion) {
    Intent i = new Intent(context, MyActivity.class);
    i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

    context.startActivity(i); // context variable is passed in by the client
}
Run Code Online (Sandbox Code Playgroud)

如您所见,客户端传递上下文.我可以将上下文强制转换为一个Activity来调用 …

java android callback android-activity

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

Javascript DOM:通过类型精确定位“输入”元素?

我需要<input type="checkbox">从表格中查找和操作。目前我有一个非常斯巴达的功能:

function testAjaxCheckBoxes() {
    var table = document.getElementById("ajax_output");
    var nodeList = table.getElementsByTagName("input");
}
Run Code Online (Sandbox Code Playgroud)

这就是我目前所知道的一切。我有 的nodeList所有标签的对象<input>,但我不知道如何检查每个标签的类型或属性。

我想更普遍的问题是如何通过 DOM 查看和操作任何类型的属性?

javascript dom

3
推荐指数
1
解决办法
2万
查看次数

从UIWebView打印PDF会产生未缩放的页面

我正在将一个NSF的pdf文件加载到webview中:

[webView loadData:pdf MIMEType:@"application/pdf" textEncodingName:@"utf-8" baseURL:nil];
Run Code Online (Sandbox Code Playgroud)

它在UIWebView中显示精美,并正确显示pdf的页数.

然而,当我尝试打印时,我得到整个页面,然后是一个左上页,可能是单个pdf页面的最后十分之一.换句话说,我没有一对一的通信.它似乎没有缩小内容.

如何缩放打印输出?我用这个片段打印:

UIPrintInteractionController *pic = 
     [UIPrintInteractionController sharedPrintController];

UIPrintInfo *printInfo = [UIPrintInfo printInfo];
printInfo.outputType = UIPrintInfoOutputGeneral;
printInfo.jobName = printName;
printInfo.duplex = UIPrintInfoDuplexNone;

pic.printInfo = printInfo;

pic.printFormatter = [webView viewPrintFormatter];

pic.showsPageRange = YES;
Run Code Online (Sandbox Code Playgroud)

这个问题描述了一种涉及缩放输入的方法,但我希望存在更简单的东西.

问候,戴恩

objective-c ios airprint

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

需要对这个反复出现的问题有一些了解,ANR keyDispatchingTimedOut

我有一个应用程序,一直在一个特定组件中获得ANR,我无法弄清楚是什么占用了cpu时间.最近我得到了两种ANR,原生和等待.

 DALVIK THREADS:
"main" prio=5 tid=1 NATIVE
  | group="main" sCount=1 dsCount=0 s=N obj=0x4001d8c0 self=0xccc8
  | sysTid=10569 nice=0 sched=0/0 cgrp=default handle=-1345017816
  | schedstat=( 9041503981 6690216078 17225 )
  at android.view.Surface.lockCanvasNative(Native Method)
  at android.view.Surface.lockCanvas(Surface.java:314)
  at android.view.SurfaceView$3.internalLockCanvas(SurfaceView.java:773)
  at android.view.SurfaceView$3.lockCanvas(SurfaceView.java:756)
  at com.dane.hud.Surfaceview$DrawThread.run(Surfaceview.java:776)
  at com.dane.hud.Surfaceview.onTouchEvent(Surfaceview.java:322)
  at android.view.View.dispatchTouchEvent(View.java:3766)
  at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:936)
  at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:936)
  at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:936)
  at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:936)
  at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:936)
  at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:1671)
  at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1107)
  at android.app.Activity.dispatchTouchEvent(Activity.java:2086)
  at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:1655)
  at android.view.ViewRoot.handleMessage(ViewRoot.java:1785)
  at android.os.Handler.dispatchMessage(Handler.java:99)
  at android.os.Looper.loop(Looper.java:123)
  at android.app.ActivityThread.main(ActivityThread.java:4627)
  at java.lang.reflect.Method.invokeNative(Native Method)
  at java.lang.reflect.Method.invoke(Method.java:521)
  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:858)
  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
  at dalvik.system.NativeStart.main(Native Method)

"Binder …
Run Code Online (Sandbox Code Playgroud)

android surfaceview android-anr-dialog

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