I have a weird problem.
Before you come to an idea to lash out on me, I am working on a custom Jelly Bean. Therefore the \"usual nice approaches\" might not work her
Interesting problem. I had a look, but it all goes a bit down the rabbit hole. No answer as such, but maybe my analysis will set you in the right direction.
I looked at what happened from setContentView
forwards. Obviously at that point you are talking in terms of a density-agnostic layout reference (e.g. R.layout.main_layout
) and then later it will be turned into a reference to a specific file in the APK. When and where is your question.
I used landscape/portrait qualifiers so that I could change the quality at runtime, and I used a debugger with the Android source attached.
Here's a flow, starting some way into it.
Let's work backwards.
Step 6 is a native (C) method that returns the qualified reference, e.g. /res/layout-land/yourview.xml
. Its parameter is an index, however, and this changes based on whether we are in landscape or portrait.
To see where that came from we have to go back to step 4. The index is a field within the TypedValue, but it is not initially set correctly when it is passed in to this method.
Step 4 calls another native method, AssetManager.loadResourceValue()
, which alters the passed in TypedValue and sets the index appropriately.
Maybe you can start looking at the C for that and see how you get on.