Resize Stack Sent Everytime a Stack Opens?
Brian Milby
brian at milby7.com
Mon May 13 15:05:22 EDT 2019
It will take a bit to respond to the rest, but I am not surprised to see a resizeStack on open if the app was built at a size different than the screen size of the device.
On an Amazon Fire the screen/stack delta is the header bar at the top of the screen. What is strange to me is that the buttons at the bottom of the screen are not included in the screen size so the portrait and landscape dimensions are not reversed as on iOS. I would imagine if the device had hardware buttons then it would match what I see on iOS. One difference with Android (at least the version on the Fire) is that you can’t draw behind the header like on iOS.
Thanks,
Brian
On May 13, 2019, 11:00 AM -0400, Sannyasin Brahmanathaswami via use-livecode , wrote:
> Brain Wrote
>
> What fullScreenMode are you in when the stack opens? What mode when the rotation happens?
> ===============
> BR
> I am trying to do dynamic geometry. Trying to deal with iPhone X (height) as well as 9 X 18 Android (my Moto6)
> --"fullScreenMode" interferes with your own handlers/function. Most of my screens have only a footer (task bar) and 1-5 other controls. Laying this out should not be too hard. (so I thought)
>
> Having little experience (most I do you "fullScreenMode") I was starting close to ground zero. See:
>
> See: http://wiki.hindu.org/uploads/rotation-test_r6.livecode
>
> If you can improve on this, please do! Send me a copy
>
> My initial test are keeping it simple. I have a browser and a footer that I want to keep occupy the whole screen on any device/screenrect (the "notch" is a nuisance, be leaving that for later nuances....) and changes easily from portrait to landscape layout and back again (with crashing Andriod...) Using the least amount of code as possible.
>
> The last time I worked on this intensively was circa 9.0.1 stable. I run this stack in 9.0.1 stable, I get big differences. In 9.0.4 (rc3) I have determined so far that..
>
> NOTE: I am not trying Ralph code which he sent to me a long time ago and which in may need to trying again. But it did not work for me at the time. I am also testing to make sure that HQ get really gets it right. (sending bug reports)(
>
> What I learned the past few days -- disclaimer some of these may be false assumptions, or "expected" results, or are real bugs
>
> 1) You cannot get the coordinates of anything on start up or opencard. Andre discovered that we can you use a "loader" card, (card 1) that "goes next" in 80 milliseconds (arbitrary) to the next card, *then* the engine has coordinates (card size, screenrect)
>
> 2) The resizestack in not firing automatically in many cases. There is difference between Android and iOS. If it does, we get nothing in. x,y. You can use handler like this send "resizeStack" && the width of this stack & comma & \
> the height of this stack to me in 0 milliseconds.
>
> But this is no different the one that does had it own name.
>
> send "update" && the width of this stack & comma & \
> the height of this stack to me in 0 milliseconds
>
> 3) using the send 'command' [params] in 0 millisecond is now causing problems.
>
> 4) if you get the card width and height after orientationChanged. Just put then in you handler
>
> command updateUI theOrientation
> lock screen
> # get coords now after changes to screen
> put the width of this card into x
> put the height of this card into y
> put x into sCdWidth
> put y into sCdHeight
>
> 5) But, major caveat, returning for "face up" or to "unknown" has the consequence of swapping the x,y values.
>
> We get
>
> Portrait
> Card rect: 0,0,648,360
> # on my Moto6 Android or
> 0,0,812,375.
> # iOS XR
>
> Landscape
> 0,0,360,648
> 0,0,375,812
>
> After several days wrestling with these caveats I woke up one morning with "algorithm"
>
> case (theOrientation contains "face up")
> case (theOrientation contains "unknown")
> exit to top
> break
> case (theOrientation contains "portrait" AND x >y)
> swapWidthHeight x, y
> case (theOrientation contains "portrait")
> [snip]
> case (theOrientation contains "landscape" AND y>x)
> swapWidthHeight x, y
> case (theOrientation contains "landscape")
> [snip]
>
> command swapWidthHeight x, y
> put y into sCdWidth
> put x into sCdHeight
> end swapWidthHeight
>
> now it works
> 6) But... an android a case where
>
> card rect
> 0,0,360,649
>
> Screen rect
> 0,0,360,672
> # 24 point too long!
>
> And, I turn the phone form landscape to portrait, my footer is 24 pixels below screen. I have to "flick" the phone forward and back again, my update handler runs again and the foot appears again in the right place.
>
> Does anyone know about the 24 pixel difference between the cardrect and the screenrect on Android?
> Is there a way to "refresh" after going to landscape to portrait?
>
> BR
>
> PS The dictionary looks transparent but it is baffling once you read it.
>
> " The orientationChanged message is sent before any automatic interface
> rotation takes place thus changes to the orientation lock state and
> allowed set can be made at this point and still have an effect."
>
> Need editing to make it clear to "newbies"
>
> using of resizeStack # does fire automatically
> and
> <send|send in 0
> milliseconds(command)> command.
> # doing this create anomalous results.
>
> "If you wish to perform an action after the interface has been rotated, then
> either do so on receipt of resizeStack, or by using a <send|send in 0
> milliseconds(command)> command."
>
>
>
>
>
>
>
>
>
>
> _______________________________________________
> use-livecode mailing list
> use-livecode at lists.runrev.com
> Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
> http://lists.runrev.com/mailman/listinfo/use-livecode
More information about the use-livecode
mailing list