我一直在寻找创建风格不同的列表视图,就像许多其他人一样,我开始寻求扩展AbsListView.根据Android文档,AbsListView是:
可用于实现项目虚拟化列表的基类.列表在此处没有空间定义.例如,此类的子类可以在网格中,在轮播中,作为堆栈等显示列表的内容.
ListView控件执行的一些努力和审查后,它看起来像它可能无法延长AbsListView ListView控件的方式做,因为这两类连接器和无法访问某些包装成员.我偶然发现了这个形式的罗曼盖伊:
AbsListView和AbsSpinner旨在在框架内进行扩展.它们也可以在第三方应用程序中扩展,但我们没有故意公开所有必要的受保护字段和方法.我们希望在如何公开此类API时要非常小心,以免获得未来扩展和内部更改的内容.我们目前的建议是,您只需在应用内复制/粘贴所需的代码即可.
我开始尝试这样做,但是复制AbsListView变成了一个复制其他东西的兔子洞,它实际上似乎是一个失败的主张.我想看看是否有人成功扩展了可以共享方法的AbsListView.
[1] http://developer.android.com/reference/android/widget/AbsListView.html
[2] https://groups.google.com/forum/?fromgroups#!topic/android-developers/UhbR1tpVvF0
根据番石榴的例子,我看到我一直在寻找解决问题的优雅方案.具体来说,我喜欢这种方式Futures.addCallback(ListenableFuture, FutureCallback) ,但是我希望能够在调用FutureCallback之前的时间长度上设置超时.最佳如果违反超时只会导致调用FutureCallback的失败条件会很好.
番石榴有没有这样的东西?是不是不建议尝试将超时与回调相结合?
编辑:包括引导我到这一点的代码示例.显然,我删除了有意义的位以获得最小的例子.
@Test
public void testFuture()
{
Callable<Boolean> callable = new Callable<Boolean>()
{
@Override
public Boolean call() throws Exception
{
while(true);
}
};
ListenableFuture<Boolean> callableFuture = MoreExecutors.listeningDecorator(Executors.newSingleThreadExecutor()).submit(callable);
Futures.addCallback(callableFuture, new FutureCallback<Boolean>()
{
@Override
public void onFailure(Throwable arg0)
{
System.out.println("onFailure:"+arg0);
}
@Override
public void onSuccess(Boolean arg0)
{
System.out.println("onSuccess:"+arg0);
}
});
try
{
callableFuture.get(1000, TimeUnit.MILLISECONDS);
}catch(Throwable t)
{
System.out.println("catch:"+t);
}
}
Run Code Online (Sandbox Code Playgroud)
此代码仅打印catch:java.util.concurrent.TimeoutException.
我们正在转向s3开始为我们的网络应用程序提供一些静态生成的内容.我们一直在研究构建关于网站使用情况的度量系统的机制,我们计划通过传递要记录在内容GET请求上的其他信息来解析S3的访问日志.我们发生在开发人员指南中的以下条目中:
最佳努力服务器日志传送
服务器访问日志记录功能旨在尽最大努力.您可以预期针对正确配置用于日志记录的存储桶的大多数请求将导致传递的日志记录,并且大多数日志记录将在记录它们的几个小时内传递.
但是,服务器日志记录功能是尽力而为的.无法保证服务器日志记录的完整性和及时性.特定请求的日志记录可能在实际处理请求后很长时间内传递,或者根本不会传递.服务器日志的目的是让桶主知道他或她的桶的流量性质.它并不是对所有请求的完整记录.
我们想知道其他人在访问日志的交付方面遇到了什么?我们的替代方案是构建一个HTTP服务器并尝试使用不同的调用来自己计量度量标准,但我们认为解析日志文件可能会减少工作量.我们想知道人们是否已经看到没有进行交付的情况,以试图衡量我们希望的准确程度,因为我们收集的一些指标用于我们的一些业务流程.
我有兴趣确定用于显示HTML5内容的WebView的最佳设置.
目前我正在使用:
mWebView.setFocusable(true);
mWebView.setFocusableInTouchMode(true);
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.getSettings().setPluginsEnabled(true);
mWebView.getSettings().setRenderPriority(RenderPriority.HIGH);
mWebView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);
mWebView.getSettings().setDomStorageEnabled(true);
mWebView.getSettings().setDatabaseEnabled(true);
mWebView.getSettings().setAppCacheEnabled(true);
mWebView.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);
Run Code Online (Sandbox Code Playgroud)
通过这些设置,html5test.com上的WebView得分189(w/1奖励).我想知道是否有任何设置我应该/可以改变以进一步兼容HTML5.当然,这个列表是几个月内编译的设置的合并,所以我也很容易被告知我做错了什么.我无法控制要显示的html内容,但我正在努力支持尽可能广泛的HTML5.
我的团队正在考虑从大约二十多个颠覆回购转变为git回购.我们试图解决的是,目前,每个人都有自己的subversion repo为他们的每个产品组件.我想做的是尽量减少我们的蔓延,并帮助建立一条明确的前进道路.
我正在寻找关于如何构建回购的建议.一个关键点是如何对相关项目进行分组.我们有两种产品.每个产品都有一组Web服务代码(php),android客户端代码(java),iphone客户端代码(obj c),ipad代码(obj c)和网站客户端代码(php + js).目前,每个所有者的组件都在一个单独的svn仓库中.
我的想法是尝试将这些组件组合成一个回购,但我不知道这是否是git的一个好习惯.这是否比单独的回购提供任何真正的好处?由于共同的可见性,这似乎可以促进更好的社会契约,以确保检查的质量,但我们是否会以其他方式为此付出代价?
我注意到在运行Android 4.1的Nexus 7平板电脑上有一些填充问题.具体来说,我有一个背景绘制填充,创建一个外部笔划:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" >
<stroke
android:width="1dp"
android:color="#59000000" />
<padding
android:bottom="1dp"
android:left="1dp"
android:right="1dp"
android:top="1dp" />
</shape>
Run Code Online (Sandbox Code Playgroud)
这补充了1dp白色内部笔画.所以它应该是整个图像周围的正方形2 dp边框:
我已经在实际的nexus设备和其他几个设备以及7英寸果冻豆模拟器上进行了测试:
首先,这是4.1 7英寸仿真器的工作版本:

外围的边界是均匀的,并围绕整个图像.这就是它在我拥有的所有其他设备上的工作方式.
Nexus 7:

灰色是背景颜色,但您可以看到右侧和底部填充没有得到遵守.现在,图像遮挡了边界.
如果重要,那么这些是GridView的子代.不知道是否有人看过这些问题或有关于如何解决这些问题的想法.
Guava中有一个非常酷的Ticker概念.不幸的是,它似乎是围绕生成纳秒级聚焦秒表来设计,用于测量执行持续时间.
我想找到像这样使用的东西,因为它使测试类对时间变化更加敏感.我在使用时遇到了一个问题,System.currentTimeMillis()因为很难模拟测试中的时间流逝.我正在考虑使用与Guava相似的接口,但是以毫秒为单位测量时间,因为它匹配更多可用的库.
在我自己写之前,我想问一下是否有人看过类似的东西或有其他建议.
我正在构建一个模仿TextView但通过管理多个内部StaticLayouts支持文本换行的自定义视图.
一切都很顺利,但我在浏览一些HTML时遇到了麻烦.大多数HTML标记都被翻译为Spans via Html.fromHtml.这包括a-link元素,当我单步使用调试器时,我可以看到它们正在成为URLSpan对象.
mSpannedArticleText = Html.fromHtml(mInboundArticleText);
Run Code Online (Sandbox Code Playgroud)
在上面,mInboundArticleText是传递给setText的入站字符串,mSpannedArticleText是将传递给StaticLayout的Spanned对象.除了我看不到URLSpans之外,StaticLayout中的所有内容都呈现出色.我知道它们附加到mSpannedArticleText并且我使用以下命令创建一个新的StaticLayout:
updatedLeftColumnLayout = new StaticLayout(mSpannedArticleText, mBodyTextPaint, leftColumnWidth, Layout.Alignment.ALIGN_NORMAL, (float) 1.0, (float) 0.0, true);
Run Code Online (Sandbox Code Playgroud)
我不确定会导致这个问题的原因,但是在查看TextView的源代码之后,我似乎无法找到任何特殊的URLSpans处理,也没有在StaticLayout中看到任何异常情况.我希望有人能够详细说明我在构建跨文本时可能做错了什么或者使用我可能没有设置的URLSpans的其他要求.
我感兴趣的是为什么这段代码产生语法错误,说明ImmutableMap无法解析为一个类型:
ImmutableMap<String, String> advice = ImmutableMap<String, String>.builder()
.put(KEY1, VAL1)
.put(KEY2, VAL2)
.build();
Run Code Online (Sandbox Code Playgroud)
虽然此代码按预期工作:
ImmutableMap<String, String> advice = ImmutableMap.<String, String>builder()
.put(KEY1, VAL1)
.put(KEY2, VAL2)
.build();
Run Code Online (Sandbox Code Playgroud)
这个时期不是我的心理模型应该去的地方,我希望有人可以解释为什么这个时期的"方法方面".我正在使用Guava的ImmutableMap,但它并不完全相关我不认为.我认为它与泛型有关,但我不确定是什么,我不知道如何寻找更好的答案,因为我不知道这个概念会被称为什么.
编辑:作为参考,ImmutableMap有这一行builder()
public static <K, V> Builder<K, V> builder() {
return new Builder<K, V>();
}
Run Code Online (Sandbox Code Playgroud)