I just wrote a quick test app that uses a single drawable folder named
drawable-nodpi. Android 1.5-2.0.1 all read from it fine.

You are usually supposed to use version qualifiers along with the
screens support qualifiers to prevent Android 1.5 from reading folders
with them. I suppose not doing so helps reduce the amount of duplicate
copies needed in this case.

Even ignoring that, though, worst case you'd just have to put copies
in additional hdpi/ldpi folders instead of an additional nodpi folder.
The unqualified folder counts as medium, so none of the three
densities would try to scale a drawable from a different one with that
setup.

On Dec 23, 2:12 am, greg1x <gre...@yahoo.com> wrote:
> The essecnce of supporting all resolutions was to move all drawables
> to drawable-nodpi, so my app scales everything.
> If I duplicate all of the drawables for 1.5 (in the original drawable
> dir), how will 1.6-2.0.1 know that it has to touch the nodpi folder
> and not the original drawable folder?
> It seems to me that it is not possible to support 1.5-2.0.1 in native
> resolution in one app version.
> Do you still think it is possible?
>
> Thank you for your time!
>
> On Dec 23, 6:33 am, Lance Nanek <lna...@gmail.com> wrote:
>
> > Exception looks like you are trying to use a drawable that exists only
> > in a drawable directory that Android 1.5 decides not to use.
>
> > On Dec 22, 9:07 am,greg1x<gre...@yahoo.com> wrote:
>
> > > Thank you Dianne!
>
> > > Now I got it to work from 1.6 to 2.0 on all screen sizes.
> > > Except it doesn't work on 1.5 anymore. minSdkVersion is 3, so it
> > > starts in the 1.5 AVD, but force closes when it tries to load a
> > > reasource.
> > > It worked before from 1.0 to 2.0.1, it only had resolution scaling
> > > issues. I did not implement any 1.6 specific features since then, just
> > > re-created the project from existing source with 1.6 target &
> > > minSdk=3.
>
> > > LogCat shows:
>
> > > 12-22 14:57:15.044: WARN/dalvikvm(725): threadid=3: thread exiting
> > > with uncaught exception (group=0x4000fe70)
> > > 12-22 14:57:15.044: ERROR/AndroidRuntime(725): Uncaught handler:
> > > thread main exiting due to uncaught exception
> > > 12-22 14:57:15.075: ERROR/AndroidRuntime(725):
> > > android.content.res.Resources$NotFoundException: File res/drawable-
> > > nodpi/brick.png from drawable resource ID #0x7f020005
> > > 12-22 14:57:15.075: ERROR/AndroidRuntime(725):     at
> > > android.content.res.Resources.loadDrawable(Resources.java:1641)
> > > 12-22 14:57:15.075: ERROR/AndroidRuntime(725):     at
> > > android.content.res.Resources.getDrawable(Resources.java:535)
> > > 12-22 14:57:15.075: ERROR/AndroidRuntime(725):     at
> > > com.g1x.bgame.BGameView$BGameThread.setSurfaceSize(BGameView.java:394)
> > > 12-22 14:57:15.075: ERROR/AndroidRuntime(725):     at
> > > com.g1x.bgame.BGameView.surfaceChanged(BGameView.java:1456)
> > > 12-22 14:57:15.075: ERROR/AndroidRuntime(725):     at
> > > android.view.SurfaceView.updateWindow(SurfaceView.java:358)
> > > 12-22 14:57:15.075: ERROR/AndroidRuntime(725):     at
> > > android.view.SurfaceView.dispatchDraw(SurfaceView.java:259)
> > > 12-22 14:57:15.075: ERROR/AndroidRuntime(725):     at
> > > android.view.ViewGroup.drawChild(ViewGroup.java:1484)
> > > 12-22 14:57:15.075: ERROR/AndroidRuntime(725):     at
> > > android.view.ViewGroup.dispatchDraw(ViewGroup.java:1228)
> > > 12-22 14:57:15.075: ERROR/AndroidRuntime(725):     at
> > > android.view.ViewGroup.drawChild(ViewGroup.java:1484)
> > > 12-22 14:57:15.075: ERROR/AndroidRuntime(725):     at
> > > android.view.ViewGroup.dispatchDraw(ViewGroup.java:1228)
> > > 12-22 14:57:15.075: ERROR/AndroidRuntime(725):     at
> > > android.view.View.draw(View.java:5841)
> > > 12-22 14:57:15.075: ERROR/AndroidRuntime(725):     at
> > > android.widget.FrameLayout.draw(FrameLayout.java:352)
> > > 12-22 14:57:15.075: ERROR/AndroidRuntime(725):     at
> > > android.view.ViewGroup.drawChild(ViewGroup.java:1486)
> > > 12-22 14:57:15.075: ERROR/AndroidRuntime(725):     at
> > > android.view.ViewGroup.dispatchDraw(ViewGroup.java:1228)
> > > 12-22 14:57:15.075: ERROR/AndroidRuntime(725):     at
> > > android.view.View.draw(View.java:5841)
> > > 12-22 14:57:15.075: ERROR/AndroidRuntime(725):     at
> > > android.widget.FrameLayout.draw(FrameLayout.java:352)
> > > 12-22 14:57:15.075: ERROR/AndroidRuntime(725):     at
> > > com.android.internal.policy.impl.PhoneWindow$DecorView.draw
> > > (PhoneWindow.java:1847)
> > > 12-22 14:57:15.075: ERROR/AndroidRuntime(725):     at
> > > android.view.ViewRoot.draw(ViewRoot.java:1217)
> > > 12-22 14:57:15.075: ERROR/AndroidRuntime(725):     at
> > > android.view.ViewRoot.performTraversals(ViewRoot.java:1030)
> > > 12-22 14:57:15.075: ERROR/AndroidRuntime(725):     at
> > > android.view.ViewRoot.handleMessage(ViewRoot.java:1482)
> > > 12-22 14:57:15.075: ERROR/AndroidRuntime(725):     at
> > > android.os.Handler.dispatchMessage(Handler.java:99)
> > > 12-22 14:57:15.075: ERROR/AndroidRuntime(725):     at
> > > android.os.Looper.loop(Looper.java:123)
> > > 12-22 14:57:15.075: ERROR/AndroidRuntime(725):     at
> > > android.app.ActivityThread.main(ActivityThread.java:3948)
> > > 12-22 14:57:15.075: ERROR/AndroidRuntime(725):     at
> > > java.lang.reflect.Method.invokeNative(Native Method)
> > > 12-22 14:57:15.075: ERROR/AndroidRuntime(725):     at
> > > java.lang.reflect.Method.invoke(Method.java:521)
> > > 12-22 14:57:15.075: ERROR/AndroidRuntime(725):     at
> > > com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run
> > > (ZygoteInit.java:782)
> > > 12-22 14:57:15.075: ERROR/AndroidRuntime(725):     at
> > > com.android.internal.os.ZygoteInit.main(ZygoteInit.java:540)
> > > 12-22 14:57:15.075: ERROR/AndroidRuntime(725):     at
> > > dalvik.system.NativeStart.main(Native Method)
> > > 12-22 14:57:15.075: ERROR/AndroidRuntime(725): Caused by:
> > > java.lang.IllegalArgumentException: width and height must be > 0
> > > 12-22 14:57:15.075: ERROR/AndroidRuntime(725):     at
> > > android.graphics.Bitmap.nativeCreate(Native Method)
> > > 12-22 14:57:15.075: ERROR/AndroidRuntime(725):     at
> > > android.graphics.Bitmap.createBitmap(Bitmap.java:483)
> > > 12-22 14:57:15.075: ERROR/AndroidRuntime(725):     at
> > > android.graphics.Bitmap.createBitmap(Bitmap.java:451)
> > > 12-22 14:57:15.075: ERROR/AndroidRuntime(725):     at
> > > android.graphics.Bitmap.createScaledBitmap(Bitmap.java:359)
> > > 12-22 14:57:15.075: ERROR/AndroidRuntime(725):     at
> > > android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:233)
> > > 12-22 14:57:15.075: ERROR/AndroidRuntime(725):     at
> > > android.graphics.drawable.Drawable.createFromResourceStream
> > > (Drawable.java:663)
> > > 12-22 14:57:15.075: ERROR/AndroidRuntime(725):     at
> > > android.content.res.Resources.loadDrawable(Resources.java:1637)
> > > 12-22 14:57:15.075: ERROR/AndroidRuntime(725):     ... 27 more
>
> > > Is there anything I can do about it to support 1.5?
>
> > > Thank you!
>
> > > On Dec 20, 11:17 pm, Dianne Hackborn <hack...@android.com> wrote:
>
> > > > Build against 1.6 (or a later version of the platform that has the APIs 
> > > > you
> > > > need), be careful about how you use newer APIs, set the minSdkVersion 
> > > > to 3,
> > > > and make sure your app works on 1.5.
>
> > > > Just building against a newer platform doesn't mean it won't work on an
> > > > older one; you just need to be careful about what you do.
>
> > > > On Sun, Dec 20, 2009 at 11:08 AM,greg1x<gre...@yahoo.com> wrote:
> > > > > I was planning to support 1.5 too, since it has 27.7% on the platform
> > > > > version pie here:
>
> > > > >http://developer.android.com/intl/zh-CN/resources/dashboard/platform-...
>
> > > > > So, I have to choose between high resolution on Droid or 27.7% of
> > > > > users?
> > > > > The only way is to build a specific version just because 1.5?
>
> > > > > Thank you Lance!
>
> > > > > On Dec 20, 2:19 pm, Lance Nanek <lna...@gmail.com> wrote:
> > > > > > The build target in the project properties has to be set to Android
> > > > > > 1.6 or higher to use that.
>
> > > > > > On Dec 20, 3:59 am,greg1x<gre...@yahoo.com> wrote:
>
> > > > > > > Thank you!
>
> > > > > > > I'm trying to specify the screen size support, but I'm getting 
> > > > > > > these
> > > > > > > errors in the manifest:
>
> > > > > > > ERROR No resource identifier found for attribute 'anyDensity' in
> > > > > > > package 'android'
>
> > > > > > > Here is my manifest:
>
> > > > > > > <?xml version="1.0" encoding="utf-8"?>
> > > > > > > <manifest 
> > > > > > > xmlns:android="http://schemas.android.com/apk/res/android";
> > > > > > >       package="com.aaaa.bbb"
> > > > > > >       android:versionCode="1"
> > > > > > >       android:versionName="1.0.0">
>
> > > > > > >           <supports-screens
> > > > > > >                   android:anyDensity="true" />
>
> > > > > > >     <application ....>
> > > > > > >     ....
> > > > > > >     </application>
> > > > > > > </manifest>
>
> > > > > > > If i remove versionCode and versionName (or mofify to anything
> > > > > > > higher), nothing changes.
>
> > > > > > > What should I change? I haven't read anywhere a specific resource
> > > > > > > qualifier for anyDensity="true".
>
> > > > > > > Thank you for your time.
>
> > > > > > > On Dec 20, 4:44 am, Lance Nanek <lna...@gmail.com> wrote:
>
> > > > > > > > Your application is being run in compatibility mode. You can 
> > > > > > > > read
> > > > > > > > about that and how to avoid it here:
> > > > >http://developer.android.com/intl/zh-CN/guide/practices/screens_suppo...
>
> > > > > > > > On Dec 19, 8:57 am,greg1x<gre...@yahoo.com> wrote:
>
> > > > > > > > > Hi!
>
> > > > > > > > > I'm developing a 2D game I started on Android 1.0/1.1. It 
> > > > > > > > > scales
> > > > > > > > > itself to the actual surface size, so I had nothing to change
> > > > > because
> > > > > > > > > of the newer higher-resolution devices.I have a G1, but I'd 
> > > > > > > > > like to
> > > > > > > > > test it on a Droid too, so I've created an AVD with Android 
> > > > > > > > > 2.0,
> > > > > > > > > WVGA854. I did not check the "Scale display to real size" 
> > > > > > > > > option,
> > > > > so I
> > > > > > > > > expected that I'll get the real WVGA dimensions on 
> > > > > > > > > surfaceChanged.
> > > > > > > > > It doesn't happen like this. My application receives strange 
> > > > > > > > > width/
> > > > > > > > > height values on surfaceChanged.
> > > > > > > > > Width is 569. (height is also very low)
> > > > > > > > > Shouldn't it be around 854?
> > > > > > > > > So, my application draws/scales itself to a smaller screen 
> > > > > > > > > and then
> > > > > > > > > the emulator seems to stretch the lower resolution surface to 
> > > > > > > > > 854
> > > > > > > > > pixels. (not even 854, in Photoshop I measured ~866 instead)
> > > > > > > > > It means that I get an awfully-looking low resolution app on 
> > > > > > > > > a big
> > > > > > > > > screen.
>
> > > > > > > > > How can I avoid this, so my application gets the real screen 
> > > > > > > > > size
> > > > > on
> > > > > > > > > surfaceChanged?
>
> > > > > > > > > Thank you!
>
> > > > > --
>
> ...
>
> read more »

-- 
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

Reply via email to