Android在其他设备上测试我的应用程序时,只有一些似乎拿起我的绘图

问题描述:

我试图用简单的动画测试我的应用程序的所有密度,但在模拟器上测试高密度和低密度手机时(Nexus One 4.2.2为hdpi,WQVGA 4.2.2为ldpi)我的位图没有绘制。我已经加倍检查了我为所有文件夹命名了相同的位图,并且适当地缩放了它们,这似乎没有任何帮助。如果有帮助,我使用此示例单独调整大小。Android在其他设备上测试我的应用程序时,只有一些似乎拿起我的绘图

DisplayMetrics metrics = new DisplayMetrics(); 
getWindowManager().getDefaultDisplay().getMetrics(metrics); 
switch(metrics.densityDpi){ 
case DisplayMetrics.DENSITY_LOW: 
      break; 
case DisplayMetrics.DENSITY_MEDIUM: 
      break; 
case DisplayMetrics.DENSITY_HIGH: 
      break; 
} 

这里是我的logcat:

07-24 03:32:53.424: E/Trace(822): error opening trace file: No such file or directory  (2) 
07-24 03:32:54.514: D/dalvikvm(822): GC_CONCURRENT freed 33K, 6% free 2774K/2932K,  paused 18ms+17ms, total 132ms 
07-24 03:32:54.574: D/dalvikvm(822): GC_FOR_ALLOC freed 6K, 6% free 2845K/2996K, paused 27ms, total 28ms 
07-24 03:32:54.584: I/dalvikvm-heap(822): Grow heap (frag case) to 3.500MB for 635812-byte allocation 
07-24 03:32:54.636: D/dalvikvm(822): GC_FOR_ALLOC freed <1K, 5% free 3466K/3620K, paused 48ms, total 48ms 
07-24 03:32:54.684: D/dalvikvm(822): GC_CONCURRENT freed 1K, 5% free 3470K/3620K, paused 18ms+5ms, total 48ms 
07-24 03:32:54.684: D/dalvikvm(822): WAIT_FOR_CONCURRENT_GC blocked 19ms 
07-24 03:32:54.694: I/dalvikvm-heap(822): Grow heap (frag case) to 4.968MB for 1536016-byte allocation 
07-24 03:32:54.744: D/dalvikvm(822): GC_FOR_ALLOC freed <1K, 4% free 4970K/5124K, paused 43ms, total 44ms 
07-24 03:32:55.405: I/Choreographer(822): Skipped 43 frames! The application may be doing too much work on its main thread. 
07-24 03:32:55.424: D/gralloc_goldfish(822): Emulator without GPU emulation detected. 
07-24 03:32:55.815: I/Choreographer(822): Skipped 64 frames! The application may be doing too much work on its main thread. 

的错误你面对的是因为你在你的主线程做的工作太多了。使用ASYNC TASKS来实现这个目的,然后在onPostExecute中显示结果。其次,如果位图或可绘制尺寸太大,则不能正确呈现,并且不会显示导致有时OutofMemory异常等。目前我在日志文件中看到的是,您在UIThread上做了太多工作,这不是一种好的做法,并阻止导致ANR的应用程序操作,即应用程序没有响应。

+0

这让我有点发笑,因为我的“动画”只是一个慢慢移过屏幕的小物件。无论如何,为了实现我所拥有的功能,我遵循了一个让我在View中创建动画的教程,并且稍后指出使用SurfaceView可能会更好。这是必要的,还是会遵循ASYNC TASKS?在一个侧面说明中,为什么它在MDPI中工作正常,尽管它的内存比HDPI少? – user3720864