Browser Widget on Android

classic Classic list List threaded Threaded
7 messages Options
Reply | Threaded
Open this post in threaded view
|

Browser Widget on Android

Clarence Martin via use-livecode
I have a question/small favor to ask someone that develops on Android.

When you place a browser widget on a stack and deploy to iOS, the content
inside the widget is always at native resolution.  If you use a resize
handler or the GM to position the rect and a FullScreenMode of noScale,
everything works as expected.  If you select any other FullScreenMode, then
the rect of the widget is adjust proportionally based on the mode, but the
content stays the native size (it doesn't get stretched/squished like other
native LiveCode controls).

To see this in action, you can use the MobileProfile stack I created (you
will need a splash image set for the actual size of the device for it to
work properly on iOS, not sure about Android).  The top grey circle will
show the browser widget.  The widget hides when an orientation change is
detected.

Here's a link to the stack.  I can post it elsewhere if needed.
https://www.dropbox.com/s/tt81fn3jw8utmc6/MobileProfile.livecode?dl=0

My question is how does this work on Android?  My guess is that it would be
similar in that the content inside the browser widget would remain native
and just the LiveCode controls outside of it would get scaled.

Thanks,
Brian
_______________________________________________
use-livecode mailing list
[hidden email]
Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
http://lists.runrev.com/mailman/listinfo/use-livecode
Reply | Threaded
Open this post in threaded view
|

Re: Browser Widget on Android

Clarence Martin via use-livecode
I tried your test stack but I don't think I know how to use it. The
existing URL in the browser widget (your site) returns an error: Webpage
not available, net::ERR_CACHE_MISS. I changed it to google.com and got
the same thing.

At any rate, changing the fullscreenMode re-wrapped the text in the
widget content as needed.

When I rotated the device everything went screwy. The previously black
and (sort of) white center graphics controls fill colors. Once rotated
to landscape it would never go back to portrait. When changing the
fullescreenMode (in portrait,) remnants of the previous layout were
visible underneath the new layout.

More instruction would be good, feel free to write me privately. I
didn't examine the scripts.

On 7/15/18 10:04 AM, Brian Milby via use-livecode wrote:

> I have a question/small favor to ask someone that develops on Android.
>
> When you place a browser widget on a stack and deploy to iOS, the content
> inside the widget is always at native resolution.  If you use a resize
> handler or the GM to position the rect and a FullScreenMode of noScale,
> everything works as expected.  If you select any other FullScreenMode, then
> the rect of the widget is adjust proportionally based on the mode, but the
> content stays the native size (it doesn't get stretched/squished like other
> native LiveCode controls).
>
> To see this in action, you can use the MobileProfile stack I created (you
> will need a splash image set for the actual size of the device for it to
> work properly on iOS, not sure about Android).  The top grey circle will
> show the browser widget.  The widget hides when an orientation change is
> detected.
>
> Here's a link to the stack.  I can post it elsewhere if needed.
> https://www.dropbox.com/s/tt81fn3jw8utmc6/MobileProfile.livecode?dl=0
>
> My question is how does this work on Android?  My guess is that it would be
> similar in that the content inside the browser widget would remain native
> and just the LiveCode controls outside of it would get scaled.
>
> Thanks,
> Brian
> _______________________________________________
> use-livecode mailing list
> [hidden email]
> Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
> http://lists.runrev.com/mailman/listinfo/use-livecode
>


--
Jacqueline Landman Gay         |     [hidden email]
HyperActive Software           |     http://www.hyperactivesw.com

_______________________________________________
use-livecode mailing list
[hidden email]
Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
http://lists.runrev.com/mailman/listinfo/use-livecode
Reply | Threaded
Open this post in threaded view
|

Re: Browser Widget on Android

Clarence Martin via use-livecode
Thanks for doing a test.  I'll need to get some videos together to really
show what it does.  I'll need to wait until after LCG though... I'm such a
procrastinator :)

The stack was built as a proof of concept that the GM and PM could work
effectively on mobile.  The stack works fully on iOS.  From the above,
there are obviously some issues on the Android side.

The buttons on the left set the FullScreenMode of the stack.  It defaults
to noScale.  As long as the app is build with a splash image that matches
the device resolution (on iOS), then it should work for all.

The buttons on the right set the resolution of the stack.  If the stack
does not fill the screen, then artifacts of the full screen will remain for
"blank" areas except for showAll which on my devices does show gray.

By using different combinations of the 2 settings, you can examine how much
of the stack will be cut off or how the zooming will look.

Tapping the top circle will replace the bottom portion of the screen with a
web browser widget (currently set to my web site).  It hides when the
device is rotated.

The bottom of the card displays a log of orientation changes and resize
events.  I did notice that while in the orientationChanged handler, the
rect is still reported as the previous size.  I use a send in time 0 to be
sure it is updated properly.  On iOS, the only resize events triggered are
during startup when the profiles are updated (revSetStackProfile takes care
of the changes after that).

Oh, the color changes to the shapes is intentional.  That was mainly to
show that by using profiles you can do things other that just reposition
controls.

Thanks,
Brian

On Sun, Jul 15, 2018 at 4:20 PM, J. Landman Gay via use-livecode <
[hidden email]> wrote:

> I tried your test stack but I don't think I know how to use it. The
> existing URL in the browser widget (your site) returns an error: Webpage
> not available, net::ERR_CACHE_MISS. I changed it to google.com and got
> the same thing.
>
> At any rate, changing the fullscreenMode re-wrapped the text in the widget
> content as needed.
>
> When I rotated the device everything went screwy. The previously black and
> (sort of) white center graphics controls fill colors. Once rotated to
> landscape it would never go back to portrait. When changing the
> fullescreenMode (in portrait,) remnants of the previous layout were visible
> underneath the new layout.
>
> More instruction would be good, feel free to write me privately. I didn't
> examine the scripts.
>
>
> On 7/15/18 10:04 AM, Brian Milby via use-livecode wrote:
>
>> I have a question/small favor to ask someone that develops on Android.
>>
>> When you place a browser widget on a stack and deploy to iOS, the content
>> inside the widget is always at native resolution.  If you use a resize
>> handler or the GM to position the rect and a FullScreenMode of noScale,
>> everything works as expected.  If you select any other FullScreenMode,
>> then
>> the rect of the widget is adjust proportionally based on the mode, but the
>> content stays the native size (it doesn't get stretched/squished like
>> other
>> native LiveCode controls).
>>
>> To see this in action, you can use the MobileProfile stack I created (you
>> will need a splash image set for the actual size of the device for it to
>> work properly on iOS, not sure about Android).  The top grey circle will
>> show the browser widget.  The widget hides when an orientation change is
>> detected.
>>
>> Here's a link to the stack.  I can post it elsewhere if needed.
>> https://www.dropbox.com/s/tt81fn3jw8utmc6/MobileProfile.livecode?dl=0
>>
>> My question is how does this work on Android?  My guess is that it would
>> be
>> similar in that the content inside the browser widget would remain native
>> and just the LiveCode controls outside of it would get scaled.
>>
>> Thanks,
>> Brian
>> _______________________________________________
>> use-livecode mailing list
>> [hidden email]
>> Please visit this url to subscribe, unsubscribe and manage your
>> subscription preferences:
>> http://lists.runrev.com/mailman/listinfo/use-livecode
>>
>>
>
> --
> Jacqueline Landman Gay         |     [hidden email]
> HyperActive Software           |     http://www.hyperactivesw.com
>
> _______________________________________________
> use-livecode mailing list
> [hidden email]
> Please visit this url to subscribe, unsubscribe and manage your
> subscription preferences:
> http://lists.runrev.com/mailman/listinfo/use-livecode
>
_______________________________________________
use-livecode mailing list
[hidden email]
Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
http://lists.runrev.com/mailman/listinfo/use-livecode
Reply | Threaded
Open this post in threaded view
|

Re: Browser Widget on Android

Clarence Martin via use-livecode
> As long as the app is build with a splash image that matches
> the device resolution (on iOS), then it should work for all.

Android doesn't use this. The stack is always sized to the screenRect
and resolution is calculated automatically. (I thought the same was true
for iOS, but it's been a while since I built for that.)

> The buttons on the right set the resolution of the stack.  If the stack
> does not fill the screen, then artifacts of the full screen will remain for
> "blank" areas except for showAll which on my devices does show gray.

This issue was fixed when changing cards in showAll mode but I don't
think it resets anything when the stack size changes on the same card.
You can force a redraw with "set the backcolor of this stack to the
backcolor of this stack".

On Android, just changing the fullscreenMode is enough to see what gets
cropped, since the stack will always fill the screen.

> By using different combinations of the 2 settings, you can examine how much
> of the stack will be cut off or how the zooming will look.

I'm not sure this is doable as-is, at least on Android, but a new
"mobileSetFullScreenRectForOrientations" command was introduced to allow
you to set the default sizes of a stack when the device is rotated. This
is to allow for changes in layout between portrait and landscape, which
is what you're doing.

> I did notice that while in the orientationChanged handler, the
> rect is still reported as the previous size.  I use a send in time 0 to be
> sure it is updated properly.  On iOS, the only resize events triggered are
> during startup when the profiles are updated (revSetStackProfile takes care
> of the changes after that).

OrientationChanged is sent before the redraw, so the dimensions aren't
yet changed (as you noted.) A resizeStack message is sent after the
rotation which is where layouts can be changed. But resizeStack isn't
sent when fullScreenMode is in effect, so the "send in time" method is
better there.

I have the feeling that fullScreenMode and manual layouts aren't
entirely compatible. Manual layout is the old method and uses
resizeStack to reset the layout. You could use geometry and profiles for
that if you like. FullScreenMode was implemented to help us avoid that
and pretty much works automatically without any extra effort. The one
exception is if you need different card rects for portrait and
landscape; in that case you specify
mobileSetFullScreenRectForOrientations. Unfortunately the dictionary
entry has missing words and is not very explanatory.


On 7/15/18 5:43 PM, Brian Milby via use-livecode wrote:

> Thanks for doing a test.  I'll need to get some videos together to really
> show what it does.  I'll need to wait until after LCG though... I'm such a
> procrastinator :)
>
> The stack was built as a proof of concept that the GM and PM could work
> effectively on mobile.  The stack works fully on iOS.  From the above,
> there are obviously some issues on the Android side.
>
> The buttons on the left set the FullScreenMode of the stack.  It defaults
> to noScale.  As long as the app is build with a splash image that matches
> the device resolution (on iOS), then it should work for all.
>
> The buttons on the right set the resolution of the stack.  If the stack
> does not fill the screen, then artifacts of the full screen will remain for
> "blank" areas except for showAll which on my devices does show gray.
>
> By using different combinations of the 2 settings, you can examine how much
> of the stack will be cut off or how the zooming will look.
>
> Tapping the top circle will replace the bottom portion of the screen with a
> web browser widget (currently set to my web site).  It hides when the
> device is rotated.
>
> The bottom of the card displays a log of orientation changes and resize
> events.  I did notice that while in the orientationChanged handler, the
> rect is still reported as the previous size.  I use a send in time 0 to be
> sure it is updated properly.  On iOS, the only resize events triggered are
> during startup when the profiles are updated (revSetStackProfile takes care
> of the changes after that).
>
> Oh, the color changes to the shapes is intentional.  That was mainly to
> show that by using profiles you can do things other that just reposition
> controls.
>
> Thanks,
> Brian
>
> On Sun, Jul 15, 2018 at 4:20 PM, J. Landman Gay via use-livecode <
> [hidden email]> wrote:
>
>> I tried your test stack but I don't think I know how to use it. The
>> existing URL in the browser widget (your site) returns an error: Webpage
>> not available, net::ERR_CACHE_MISS. I changed it to google.com and got
>> the same thing.
>>
>> At any rate, changing the fullscreenMode re-wrapped the text in the widget
>> content as needed.
>>
>> When I rotated the device everything went screwy. The previously black and
>> (sort of) white center graphics controls fill colors. Once rotated to
>> landscape it would never go back to portrait. When changing the
>> fullescreenMode (in portrait,) remnants of the previous layout were visible
>> underneath the new layout.
>>
>> More instruction would be good, feel free to write me privately. I didn't
>> examine the scripts.
>>
>>
>> On 7/15/18 10:04 AM, Brian Milby via use-livecode wrote:
>>
>>> I have a question/small favor to ask someone that develops on Android.
>>>
>>> When you place a browser widget on a stack and deploy to iOS, the content
>>> inside the widget is always at native resolution.  If you use a resize
>>> handler or the GM to position the rect and a FullScreenMode of noScale,
>>> everything works as expected.  If you select any other FullScreenMode,
>>> then
>>> the rect of the widget is adjust proportionally based on the mode, but the
>>> content stays the native size (it doesn't get stretched/squished like
>>> other
>>> native LiveCode controls).
>>>
>>> To see this in action, you can use the MobileProfile stack I created (you
>>> will need a splash image set for the actual size of the device for it to
>>> work properly on iOS, not sure about Android).  The top grey circle will
>>> show the browser widget.  The widget hides when an orientation change is
>>> detected.
>>>
>>> Here's a link to the stack.  I can post it elsewhere if needed.
>>> https://www.dropbox.com/s/tt81fn3jw8utmc6/MobileProfile.livecode?dl=0
>>>
>>> My question is how does this work on Android?  My guess is that it would
>>> be
>>> similar in that the content inside the browser widget would remain native
>>> and just the LiveCode controls outside of it would get scaled.
>>>
>>> Thanks,
>>> Brian
>>> _______________________________________________
>>> use-livecode mailing list
>>> [hidden email]
>>> Please visit this url to subscribe, unsubscribe and manage your
>>> subscription preferences:
>>> http://lists.runrev.com/mailman/listinfo/use-livecode
>>>
>>>
>>
>> --
>> Jacqueline Landman Gay         |     [hidden email]
>> HyperActive Software           |     http://www.hyperactivesw.com
>>
>> _______________________________________________
>> use-livecode mailing list
>> [hidden email]
>> Please visit this url to subscribe, unsubscribe and manage your
>> subscription preferences:
>> http://lists.runrev.com/mailman/listinfo/use-livecode
>>
> _______________________________________________
> use-livecode mailing list
> [hidden email]
> Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
> http://lists.runrev.com/mailman/listinfo/use-livecode
>


--
Jacqueline Landman Gay         |     [hidden email]
HyperActive Software           |     http://www.hyperactivesw.com

_______________________________________________
use-livecode mailing list
[hidden email]
Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
http://lists.runrev.com/mailman/listinfo/use-livecode
Reply | Threaded
Open this post in threaded view
|

Re: Browser Widget on Android

Clarence Martin via use-livecode
9.0.1 RC1 I don't think this is working, OR, I don't know how it works.

go stack url "http://wiki.hindu.org/uploads/Tester-Landscape-TsNet.livecode"

(you have seen in before)

I can't get the browser  (widget "body) to change its rect, no matter what I do.

I have a support request in on my business license to "tell me what I am doing wrong"

OR

They will determine it is a bug.

BR

 J. Landman Gay wrote:

    I'm not sure this is doable as-is, at least on Android, but a new
    "mobileSetFullScreenRectForOrientations" command was introduced to allow
    you to set the default sizes of a stack when the device is rotated. This
    is to allow for changes in layout between portrait and landscape, which
    is what you're doing.

_______________________________________________
use-livecode mailing list
[hidden email]
Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
http://lists.runrev.com/mailman/listinfo/use-livecode
Reply | Threaded
Open this post in threaded view
|

Re: Browser Widget on Android

Clarence Martin via use-livecode
I can't do the testing right now, but I think that your "portrainUI"
handler is causing the issue.  In there you restrict the orientations to
portrait only.  If you are doing that to force the device to rotate, you
probably need to add another one at the end that unlocks the device so that
it can be in any of the 4 orientations.


On Mon, Jul 16, 2018 at 9:51 PM, Sannyasin Brahmanathaswami via
use-livecode <[hidden email]> wrote:

> 9.0.1 RC1 I don't think this is working, OR, I don't know how it works.
>
> go stack url "http://wiki.hindu.org/uploads/Tester-Landscape-
> TsNet.livecode"
>
> (you have seen in before)
>
> I can't get the browser  (widget "body) to change its rect, no matter what
> I do.
>
> I have a support request in on my business license to "tell me what I am
> doing wrong"
>
> OR
>
> They will determine it is a bug.
>
> BR
>
>  J. Landman Gay wrote:
>
>     I'm not sure this is doable as-is, at least on Android, but a new
>     "mobileSetFullScreenRectForOrientations" command was introduced to
> allow
>     you to set the default sizes of a stack when the device is rotated.
> This
>     is to allow for changes in layout between portrait and landscape,
> which
>     is what you're doing.
>
> _______________________________________________
> use-livecode mailing list
> [hidden email]
> Please visit this url to subscribe, unsubscribe and manage your
> subscription preferences:
> http://lists.runrev.com/mailman/listinfo/use-livecode
>
_______________________________________________
use-livecode mailing list
[hidden email]
Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
http://lists.runrev.com/mailman/listinfo/use-livecode
Reply | Threaded
Open this post in threaded view
|

Re: Browser Widget on Android

Clarence Martin via use-livecode
In reply to this post by Clarence Martin via use-livecode
I got your stack to work last week but my email to you bounced and then I
got distracted. I'll get it to you tomorrow when I'm at the Mac. If anyone
on the list is interested I'll post a link here too.
--
Jacqueline Landman Gay | [hidden email]
HyperActive Software | http://www.hyperactivesw.com
On July 16, 2018 9:53:09 PM Sannyasin Brahmanathaswami via use-livecode
<[hidden email]> wrote:

> 9.0.1 RC1 I don't think this is working, OR, I don't know how it works.
>
> go stack url "http://wiki.hindu.org/uploads/Tester-Landscape-TsNet.livecode"
>
> (you have seen in before)
>
> I can't get the browser  (widget "body) to change its rect, no matter what
> I do.
>
> I have a support request in on my business license to "tell me what I am
> doing wrong"
>
> OR
>
> They will determine it is a bug.
>
> BR
>
> J. Landman Gay wrote:
>
>    I'm not sure this is doable as-is, at least on Android, but a new
>    "mobileSetFullScreenRectForOrientations" command was introduced to allow
>    you to set the default sizes of a stack when the device is rotated. This
>    is to allow for changes in layout between portrait and landscape, which
>    is what you're doing.
>
> _______________________________________________
> use-livecode mailing list
> [hidden email]
> Please visit this url to subscribe, unsubscribe and manage your
> subscription preferences:
> http://lists.runrev.com/mailman/listinfo/use-livecode




_______________________________________________
use-livecode mailing list
[hidden email]
Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
http://lists.runrev.com/mailman/listinfo/use-livecode