是否可以将Spinner列表中的特定条目显示为已禁用?
也就是说,我想总是显示一个带有四个条目的旋转器(北,南,东和西,比方说),但是我希望能够禁用其中任何一个,这样看起来是灰色的,不可选择.
这是可能的,还是我每次都要重新创建列表,而忽略了无效的条目?
我想用以下代码绘制一个白色圆圈:
mPaint.setColor(0xFFFFFFFF);
canvas.drawCircle(x, y, radius, mPaint);
Run Code Online (Sandbox Code Playgroud)
但它显示为一个坚实的磁盘.如何将其显示为带有透明中心的圆形轮廓?
我已经看过了帮助,这对我来说没有任何意义,可能是因为我不习惯像笔画和抖动这样的绘画术语.背景和边界有什么问题,是吗?
我注意到Android开发者活动部分自我启动应用程序以来已经更新,但我仍然不清楚最简单的活动生命周期是什么.
据我所知:
onCreate,onResume和onPause是必不可少的.
在onPause之后的任何时候都可以删除该活动,因此我应该将整个应用程序状态保存到onPause文件中,而不是依赖onStop或onDestroy.此外,onSaveInstanceState在每个onPause之前都没有被调用,因此不值得使用.
而不是尝试编写大量代码来处理所有场景,为什么不在onPause结束时销毁Activity?
然后,生命周期将在onCreate和onResume处于活动状态之前,然后onPause处于非活动状态时.不需要其他方法.
我使用onCreate调用setContentView并设置视图侦听器,但其他所有内容都将放在onResume中,包括从文件加载恢复的状态?如前所述,onPause会将状态保存到文件并销毁活动.
据我所知,这方面的唯一缺点可能是当屏幕上显示弹出窗口时,活动将被删除,并且必须在弹出窗口关闭时重新创建,这意味着活动将不会在弹出窗口后面显示(尽管我没有测试过这个)
重新启动活动可能需要更长的时间,但由于系统可能在没有任何通知的情况下删除了活动,因此无论如何都必须保存整个状态.
有什么想法吗?
更新:我想我想到的是"首页"活动所谓的游戏活动.当玩家点击"播放"时,首页活动会调用游戏活动
游戏活动将在onCreate中设置其视图和监听器等,并且在onResume中它将加载包含游戏状态的文件,或者如果不存在文件则开始新游戏.
onPause游戏,它将游戏状态写入文件,然后无论游戏活动发生什么(没有,或被停止/销毁,或其他),onResume方法将始终从文件中重新加载所有数据.
那是我在想什么,如果这有道理的话?
Update2:我已经设计了一个简单的解决方案,我已在下面的答案中记录,如果有人感兴趣的话!
它不支持Android Activity Lifecycle'Paused'和'Stopped'状态.一旦它不再显示它就会自动杀死并且必须手动重启,但它会从你离开的地方继续进行!
你好,
我正在编写一个小部件,但我不确定使用什么尺寸的位图作为每个屏幕分辨率/密度的背景.
根据Android Developer App Widgets教程:
To find your minimum width and height in density-independent pixels (dp), use this formula:
(number of cells * 74) - 2
Following this formula, you should use 72 dp for a height of one cell, 294 dp and for a width of four cells
Run Code Online (Sandbox Code Playgroud)
因此,如果我的小部件是72dp x 294dp,我的ldpi,mdpi和hdpi drawables需要多大的位图?
另外,我的清单中是否需要任何特定的支持屏幕设置?
TIA,
-Frink
更新:我为每个drawable文件夹制作了各种尺寸和颜色的棋盘图案并试用了它们.这种密度的东西有点像红鲱鱼吗?
我刚刚完成了我的仿真器的屏幕抓取,运行为HVGA,中密度,320x480.我的小部件占用的大小是320x100,所以我在mdpi文件夹中创建一个320x100位图作为我的小部件的背景,它在我的模拟器和LG GT540上看起来都很完美.
对于运行为WVGA854的仿真器,高密度,480x854.我的小部件的大小是480x150.创建此大小的背景并将其放在hdpi文件夹中可在此模拟器上正确显示.我没有硬件来测试这个:-(
Update2:我想我现在可以更好地解释我的问题:-)
如果我有三个设备:
Device1, resolution 320x480, density ldpi
Device2, resolution 320x480, density mdpi
Device3, resolution 400x854, density mdpi …Run Code Online (Sandbox Code Playgroud) android bitmap android-widget android-manifest android-layout
我有一个序列化的类,我想添加一个位图,但Bitmap不支持序列化.
相反,我认为我会使用包裹,但无法让它工作.
这是使用局部变量的一些测试代码:
Parcel parcel;
Bitmap sourceBitmap;
Bitmap destinationBitmap;
parcel = Parcel.obtain();
sourceBitmap = Bitmap.createBitmap(200, 400, Config.ARGB_8888);
sourceBitmap.writeToParcel(parcel, 0);
destinationBitmap = Bitmap.CREATOR.createFromParcel(parcel);
Run Code Online (Sandbox Code Playgroud)
我在上面的最后一行收到以下错误:
09-06 21:18:20.463: DEBUG/skia(17716): Bitmap_createFromParcel unknown config: 0
09-06 21:18:20.473: DEBUG/AndroidRuntime(17716): Shutting down VM
09-06 21:18:20.483: WARN/dalvikvm(17716): threadid=3: thread exiting with uncaught exception (group=0x4001b188)
09-06 21:18:20.493: ERROR/AndroidRuntime(17716): Uncaught handler: thread main exiting due to uncaught exception
09-06 21:18:20.513: ERROR/AndroidRuntime(17716): java.lang.RuntimeException: Failed to unparcel Bitmap
09-06 21:18:20.513: ERROR/AndroidRuntime(17716): at android.graphics.Bitmap$1.createFromParcel(Bitmap.java:899)
09-06 21:18:20.513: ERROR/AndroidRuntime(17716): at android.graphics.Bitmap$1.createFromParcel(Bitmap.java:903)
Run Code Online (Sandbox Code Playgroud) 我有一个onKeyDown事件只需要处理我的应用程序中的Up和Down硬件键.对于这些,它返回true,因为它们被处理.对于其他任何东西,它返回false,我理解这意味着操作系统应该处理它们.但是,当我按下后退按钮时,我onKeyDown被调用并返回false,但没有其他效果.我希望/希望操作系统完成当前操作Activity并恢复前一个操作系统.
这是正确的行为,还是有什么东西?
更新:
干杯伙计们,我的onKeyDown例程看起来像这样,现在我遵循了CommonsWare的建议:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
super.onKeyDown(keyCode, event);
boolean handled = true;
// handle key presses
switch (keyCode) {
case KeyEvent.KEYCODE_DPAD_LEFT:
mCursorX = mCursorX - 1;
if (mCursorX < MAP_MIN_X) { mCursorX = MAP_MIN_X; }
break;
case KeyEvent.KEYCODE_DPAD_RIGHT:
mCursorX = mCursorX + 1;
if (mCursorX > MAP_MAX_X) { mCursorX = MAP_MAX_X; }
break;
default:
handled = false;
if (handled) {
redrawCursorno();
return true;
}
return super.onKeyDown(keyCode,event);
}
Run Code Online (Sandbox Code Playgroud)
我的班级看起来像: …
执行 Menubar> Project> Clean... 后,我在错误日志中收到以下错误:
Java 模型异常:Java 模型状态 [gen [在 MyApp 中] 不存在] 位于 org.eclipse.jdt.internal.core.JavaElement.newJavaModelException(JavaElement.java:502) 位于 org.eclipse.jdt.internal.core.Openable .generateInfos(Openable.java:246) 在 org.eclipse.jdt.internal.core.JavaElement.openWhenClosed(JavaElement.java:515) 在 org.eclipse.jdt.internal.core.JavaElement.getElementInfo(JavaElement.java:252) )在org.eclipse.jdt.internal.core.JavaElement.getElementInfo(JavaElement.java:238)在org.eclipse.jdt.internal.core.PackageFragmentRoot.getKind(PackageFragmentRoot.java:477)在org.eclipse.jdt。 org.eclipse.jdt.internal.ui.packageview.PackageExplorerContentProvider.handleAffectedChildren(PackageExplorerContentProvider.java:791) 在 org.eclipse.jdt.internal.ui.internal.ui.packageview.PackageExplorerContentProvider.processDelta(PackageExplorerContentProvider.java:645) 。 packageview.PackageExplorerContentProvider.processDelta(PackageExplorerContentProvider.java:734) 在 org.eclipse.jdt.internal.ui.packageview.PackageExplorerContentProvider.handleAffectedChildren(PackageExplorerContentProvider.java:791) 在 org.eclipse.jdt.internal.ui.packageview.PackageExplorerContentProvider。 processDelta(PackageExplorerContentProvider.java:734) 在 org.eclipse.jdt.internal.ui.packageview.PackageExplorerContentProvider.elementChanged(PackageExplorerContentProvider.java:124) 在 org.eclipse.jdt.internal.core.DeltaProcessor$3.run(DeltaProcessor.java :1557)在org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)在org.eclipse.jdt.internal.core.DeltaProcessor.notifyListeners(DeltaProcessor.java:1547)在org.eclipse.jdt。内部.core.DeltaProcessor.firePostChangeDelta(DeltaProcessor.java:1381)在org.eclipse.jdt.internal.core.DeltaProcessor.fire(DeltaProcessor.java:1357)在org.eclipse.jdt.internal.core.DeltaProcessor.resourceChanged( DeltaProcessor.java:1958) 在 org.eclipse.jdt.internal.core.DeltaProcessingState.resourceChanged(DeltaProcessingState.java:470) 在 org.eclipse.core.internal.events.NotificationManager$2.run(NotificationManager.java:291) org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42) 在 org.eclipse.core.internal.events.NotificationManager.notify(NotificationManager.java:285) 在 org.eclipse.core.internal.events。 NotificationManager.broadcastChanges(NotificationManager.java:149)在org.eclipse.core.internal.resources.Workspace.broadcastPostChange(Workspace.java:313)在org.eclipse.core.internal.resources.Workspace.endOperation(Workspace.java: 1022) 在 org.eclipse.core.internal.resources.InternalWorkspaceJob.run(InternalWorkspaceJob.java:45) 在 org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)
如果这是一个问题以及造成它的原因,您有什么想法吗?无论我仅清理我的项目还是所有项目,都会发生这种情况
我的开发环境是: Eclipse 3.5.2,带有 ADT 0.9.7 (2.1) 和 Java SDK 6 Update 21 64 位 Windows 7 上的 32 位 Windows XP VirtualBox VM AMD …
我有一个删除按钮,我想将其作为废纸篓图标.与按住快捷键时出现的主屏幕底部的类似.
是否可以重用Android系统图标,还是我必须自己绘制?
我有一个主要活动和一个子活动.主活动使用startActivity启动子活动,并传递intent中的对象.子活动在onCreate操作中从intent中读取对象.子活动更新对象,然后使用startActivity返回主活动,再次传回更新的对象.但是,不调用onCreate函数的主要活动,因此它包含的用于读取传递的对象的代码不会运行.
进一步调查表明onPause事件的主要活动是触发,即它仅在子活动运行时暂停,因此当子活动再次启动主活动时,它只是onResumes.
如果我将数据恢复/存储活动移动到onResume和onPause事件,有没有人知道是否会有任何缺点?我不是在使用onCreate savedInstanceState,我应该吗?
如何在不使用数据库或这些首选项的情况下在活动之间传递一组数据项?我应该使用数据库吗?我有大约20个相当个人的数据项.
任何帮助将非常感激,
我可以使用以下方式从网上下载单个文件:
$wc = New-Object System.Net.WebClient
$wc.DownloadFile("http://blah/root/somefile.ext", "C:\Downloads\www\blah\root\somefile.ext")
Run Code Online (Sandbox Code Playgroud)
但是如何下载所有文件,包括子文件夹?像下面这样的东西会很好......
$wc.DownloadFile("http://blah/root/", "C:\Downloads\www\blah\root\")
Run Code Online (Sandbox Code Playgroud)
根文件夹本身在IE中显示为目录列表,您知道,如:
[To Parent Directory]
01 July 2012 09:00 1234 somefile.ext
01 July 2012 09:01 1234 someotherfile.ext
Run Code Online (Sandbox Code Playgroud)
作为奖励,我如何只下载根文件夹中的文件,忽略子文件夹?
android ×9
bitmap ×2
back-button ×1
download ×1
java ×1
lifecycle ×1
parcel ×1
parcelable ×1
powershell ×1
webclient ×1