我正在制作一个简单的地址簿应用程序(目标4.2),它采用名称,地址,城市,州,邮编和电话.
我想将电话号码输入格式化为电话号码(XXX)XXX-XXXX,但我需要将值作为字符串拉出来,以便在保存时将其存储在我的数据库中.我怎样才能做到这一点??我将EditText设置为"电话号码"输入,但显然不会做太多.
我正在使用谷歌DrawerLayout.
单击某个项目后,抽屉将平稳关闭并Activity启动.将这些活动转变为Fragments 不是一种选择.因此,启动活动然后关闭抽屉也不是一种选择.关闭抽屉并同时启动活动将使关闭动画口吃.
鉴于我希望首先顺利关闭它,然后启动活动,我遇到了用户点击抽屉项目和他们看到他们想要去的活动之间的延迟问题.
这就是每个项目的点击监听器的样子.
final View.OnClickListener mainItemClickListener = new View.OnClickListener() {
@Override
public void onClick(final View v) {
mViewToLaunch = v;
mDrawerLayout.closeDrawers();
}
};
Run Code Online (Sandbox Code Playgroud)
我的活动也是DrawerListener,它的onDrawerClosed方法如下:
@Override
public synchronized void onDrawerClosed(final View view) {
if (mViewToLaunch != null) {
onDrawerItemSelection(mViewToLaunch);
mViewToLaunch = null;
}
}
Run Code Online (Sandbox Code Playgroud)
onDrawerItemSelection 刚刚启动五项活动之一.
我就没事onPause的DrawerActivity.
我正在检测它,从onClick调用的那一刻开始平均需要500-650ms,直到onDrawerClosed结束.
一旦抽屉关闭,在相应的活动开始之前,存在明显的滞后.
我意识到发生了一些事情:
结束动画发生,就在那里几毫秒(比方说300).
然后,抽屉在视觉上关闭和听众被解雇之间可能存在一些延迟.我试图通过查看DrawerLayout来源确切地弄清楚这有多少发生但尚未弄明白.
然后是启动的活动执行其启动生命周期方法所需的时间,包括onResume.我还没有对此进行检测,但估计大约200-300毫秒.
这似乎是一个问题,走错路是非常昂贵的,所以我想确保我完全理解它.
一个解决方案是跳过关闭动画,但我希望保持它.
如何尽可能减少过渡时间?
如何终止在模拟器中运行的应用程序?我的意思是手动而不是通过代码.
设置 - >应用程序 - >运行选项卡不显示我的应用程序和开发工具 - >运行进程列出我的应用程序,但我没有看到如何终止该过程.我在adb中看不到杀死进程的任何选项.
有没有办法总是显示垂直滚动条ListView?
我觉得我错过了一些非常简单的东西,但我试图理解标记和扫描垃圾收集每个Andrew Appel的现代编译器实现在ML书中,并且Mark和Sweep部分中有一个标题为Pointer Reversal(270)的小段落.
在这一点上,我想我明白它是如何工作的.简而言之,当您遍历图形时,您可以翻转所有指针,以便您的前任位于您的字段集中.然后,当您完成给定元素后,将指针向后翻转,使它们再次指向正确的位置.
如果这是正确的,它究竟是什么给你买的?Appel试图解释这一点,但我并没有完全理解他的措辞.
我的应用只能在Android 4.0/API 14或更高版本上运行(即minSdkVersion ="14",targetSdkVersion ="17").
在这种情况下使用ActionBarSherlock有什么好处吗?
我想在我的dimens.xml文件中添加一个浮点数.
我正在阅读以下SO答案.当我尝试解决方案时,我得到了评论中描述的异常.我想弄清楚,为什么这会抛出异常.
为了完整性,这里是XML:
<item name="zoom_level" format="float" type="dimen">15.0</item>
Run Code Online (Sandbox Code Playgroud)
这是爆炸的代码:
final float zoom = this.getResources().getDimension(R.dimen.zoom_level);
Run Code Online (Sandbox Code Playgroud)
我跳进了Android源代码,这里是getDimension的方法定义:
public float getDimension(int id) throws NotFoundException {
synchronized (mTmpValue) {
TypedValue value = mTmpValue;
getValue(id, value, true);
if (value.type == TypedValue.TYPE_DIMENSION) {
return TypedValue.complexToDimension(value.data, mMetrics);
}
throw new NotFoundException(
"Resource ID #0x" + Integer.toHexString(id) + " type #0x"
+ Integer.toHexString(value.type) + " is not valid");
}
}
Run Code Online (Sandbox Code Playgroud)
无论出于何种原因value.type != TypedValue.TYPE_DIMENSION.我没有完全设置我的Android源代码,因此我无法Log.w("YARIAN", "value type is " + value.type)'在那里轻松添加语句. …
使用emacs -nw file1 file2我可以一次打开多个文件.但是,emacs将以水平分割打开它们.有没有办法将默认拆分行为设置为垂直?我看过:
如果我可以让emacs每次打开多个文件时自动调用,这样就可以完成我想要的工作.
我也看了这篇SO帖子.
他们加入的建议(setq split-height-threshold nil),并(setq split-width-threshold 0)在~/.emacs没有为我工作.我已经分别和他们一起试过了.
我有一个加密算法(AES)接受转换为数组字节的文件并加密它.由于我要处理非常大的文件,JVM可能会耗尽内存.我计划读取多个字节数组中的文件,每个数组包含文件的某些部分.然后我迭代地提供算法.最后,我将它们合并以生成加密文件.
所以我的问题是:有没有办法将文件逐个读取到多个字节数组?
我以为我可以使用以下内容将文件读取为字节数组:
IOUtils.toByteArray(InputStream input).
Run Code Online (Sandbox Code Playgroud)
然后使用以下命令将数组拆分为多个字节:
Arrays.copyOfRange()
Run Code Online (Sandbox Code Playgroud)
但我担心读取文件的代码ByteArray会使JVM内存不足.
我只是重构了一个脚本,其中包含大约十二个,几乎相同的单行,一个使用反射来动态地将静态方法绑定到类.
我的问题是:这看起来是否过度设计?我是否在追逐一些实际的学术优雅,比明显的方式更糟糕?重构的形式更短(约70行),更"美丽"(对于一些定义的美的概念),但新手程序员可能根本不理解它.