I just put harcoded fake values for time being, instead of centering. I was expecting everything embedded with the linearlayout which is my main layout to be shrunk by the top and bottom margins I specified.
On Nov 22, 1:25 pm, rukiman <ruksh...@optushome.com.au> wrote: > I thought I'd create my own specialized LinearLayout so that I can > calculate the aspect ratio and center vertically. My game is only > designed to be played in portrait mode. However this code doesn't seem > to work. Spot what I am doing wrong? > > import android.content.Context; > import android.util.AttributeSet; > import android.view.ViewGroup; > import android.widget.LinearLayout; > > public class SpecialLinearLayout extends LinearLayout { > > private final Context context; > > public SpecialLinearLayout(Context context, AttributeSet attrs) { > super(context, attrs); > this.context = context; > } > > protected void onLayout(boolean changed, int l, int t, int r, int > b) { > int width = r - l; > int height = b - t; > float aspect = 480.0f / 320.0f; > int newheight = (int) Math.floor((float) width * (float) > aspect); > if(newheight != height) { > // create top margins to center vertically > ViewGroup.MarginLayoutParams margin = new > ViewGroup.MarginLayoutParams(this.getLayoutParams()); > margin.setMargins(0, 40, 0, 50); > this.setLayoutParams(new LinearLayout.LayoutParams > (margin)); > } > } > > } > > On Nov 22, 11:26 am, Mark Murphy <mmur...@commonsware.com> wrote: > > > rukiman wrote: > > > This is working almost 90% for my game except when testing in WVGA > > > screen resolution, all my images are scaled incorrectly, it is longer > > > vertically than horizontally. I was expecting the screen compatibility > > > to maintain aspect ratios as that of HVGA. > > > No. > > > "DROID has been optimized to display wide-screen multimedia (movie) > > content at its native aspect ratio of 16/9. This is different from the > > HVGA aspect ratio of 3/2, which is the traditional computer screen > > format. What this means is that when content is scaled up to "full > > screen", the horizontal (X*1.5) and vertical (Y*1.77) scaling factors > > are different. As a result, when displaying the same bitmap as a full > > screen background, round circles can appear as ovals, and squares are > > elongated to rectangles." > > >http://developer.motorola.com/docstools/library/Support_for_Multiple_... > > > I have no reason to believe this is DROID-specific, but rather is how > > Android scales things in WVGA800/WVGA854, when you do not supply your > > own pre-scaled resources. > > > > Also in my layout I have a scrollview and it is designed in such a way > > > that in HVGA when it is not scrolled down, the items are hidden away, > > > however now in WVGA those things are shown. If the aspect ratio of > > > HVGA is maintained I won't have this issue. > > > > How can I make sure the aspect ratio is maintained? > > > You cannot control the aspect ratio, as that is dictated by the physical > > parameters of the screen. AFAIK, there is no Android equivalent of > > "letterbox" that would put black bars on either side of your app and > > give you a smaller virtual screen with 3/2 aspect ratio. > > > > Also in my layout I am positioning some items using pixel positions. > > > Should I convert these to dpi? > > > If you mean dip (density-independent pixels), perhaps. It depends on > > what the pixels represent. There is no hard-and-fast rule. > > > > How do I calculate what dpi they should be? > > > 1px = 1dip at 160dpi (i.e., traditional "normal" screen density). > > > -- > > Mark Murphy (a Commons > > Guy)http://commonsware.com|http://twitter.com/commonsguy > > > _Android Programming Tutorials_ Version 1.0 Available! -- 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