tastejs / PropertyCross

Helping developers select a framework for cross-platform mobile development.
propertycross.com
591 stars 215 forks source link

Should the specification allow infinite scrolling? #187

Open ColinEberhardt opened 11 years ago

ColinEberhardt commented 11 years ago

Currently the PhoneJS implementation has infinite scrolling. I allowed this through the review process, even though it is not per-spec, because I am starting to change my mind about this area of the specification. It is such a popular feature, and many of these frameworks do support it, that I think the spec should be flexible here.

See for example the Enyo pull request:

https://github.com/ColinEberhardt/PropertyCross/pull/184

The Enyo team want to use pull-to-load-more too.

godds commented 11 years ago

Would it make sense to change the spec to actually mandate pull-to-refresh? This would make the app much more in-keeping with current user expectations.

Graham

chrisprice commented 11 years ago

I'd say it was user expectation to pull to refresh but not pull to load more (that tends to be done with infinite scroll see the android play store). Not sure if you were making the distinction, apologies if you were On 26 May 2013 07:32, "Graham Odds" notifications@github.com wrote:

Would it make sense to change the spec to actually mandate pull-to-refresh? This would make the app much more in-keeping with current user expectations.

Graham

— Reply to this email directly or view it on GitHubhttps://github.com/ColinEberhardt/PropertyCross/issues/187#issuecomment-18458771 .

ColinEberhardt commented 11 years ago

Infinite scrolling is definitely worth considering. It is also easier to implement that pull-to-do-something ;-)

Another change that I think is worth debating is the use of a tab-bar. Have you seen the PhoneJS implementation? http://propertycross.com/phonejs/ This looks more 'standard' than the current PropertyCross spec.

After making these two changes, we'll stop moving the goalposts ;-)

chrisprice commented 11 years ago

Sounds good for iOS but not necessarily for the other platforms...

On Sun, May 26, 2013 at 9:27 PM, ColinEberhardt notifications@github.comwrote:

Infinite scrolling is definitely worth considering. It is also easier to implement that pull-to-do-something ;-)

Another change that I think is worth debating is the use of a tab-bar. Have you seen the PhoneJS implementation? http://propertycross.com/phonejs/ This looks more 'standard' than the current PropertyCross spec.

After making these two changes, we'll stop moving the goalposts ;-)

— Reply to this email directly or view it on GitHubhttps://github.com/ColinEberhardt/PropertyCross/issues/187#issuecomment-18469200 .

sugardave commented 11 years ago

+1 vote for infinite scrolling

godds commented 11 years ago

I would vote for infinite scrolling as well. Not 100% sure about the tabs, I'll have to convinced on that one :-)

ColinEberhardt commented 11 years ago

By 'tabs' I meant the general tabbing concept. Again, look at the PhoneJS Android version, it uses the same kind of tabbing that I believe Google Plus does.

ColinEberhardt commented 11 years ago

Actually, on the subject of infinite scroll, how do you signal that the end of the list has been reached?

AlekseyMartynov commented 11 years ago

@ColinEberhardt, I'd name it "scroll to load more" or "infinite scrolling" rather than "pull".

As for the end of scrolling, usually the content is considered fully loaded when the the last query returned no items (or alternatively some kind of out of range error - depending on the server implementation).

chrisprice commented 11 years ago

On the subject of tabs, I can't see any in the Google+ app ( https://play.google.com/store/apps/details?id=com.google.android.apps.plus&hl=en). The thing that looks like a tab bar is a weird shortcut type thing which disappears when you start scrolling. The Google play store app does use them but not for top level navigation.

However looking at the design guidelines they seem to a valid choice and the twitter app does make use of them ( http://developer.android.com/training/design-navigation/descendant-lateral.html).

Infinite scroll normally shows some kind of loading indicator when you hit the bottom and it's trying to more. If there's no more then no indicator.

On a separate note came across this when searching for app links, thought you guys might like it https://play.google.com/store/apps/details?id=com.google.android.apps.gesturesearch .

Actually, on the subject of infinite scroll, how do you signal that the end of the list has been reached?

— Reply to this email directly or view it on GitHubhttps://github.com/ColinEberhardt/PropertyCross/issues/187#issuecomment-18487660 .

sh1989 commented 11 years ago

Android does give you a tabs-on-top layout, with the added ability of being able to swipe between tabs, as a default application template. That makes the functionality close(r) to the Win7 Panorama view. For iOS it would be typical for their top-level tabs to go on the bottom of the screen. As for gesture-navigation, I'm not too sure.

One concern I have with the PhoneJS is that its hierarchical structure is a bit strange. When you perform a search, the search results and a property are displayed within the 'Home' tab. Tapping the 'Home' tab, or going to a different tab and then back to 'Home' takes you back up to the main search screen. I'd expect the tabs to disappear as I drill further down the application hierarchy and be replaced with an action bar with an up button. However, that then totally kills the idea of being able to access favourites at all times! The Navigation Drawer might be more effective here, but for three items seems overkill.

As for infinite scroll vs pull to refresh, I'd prefer the former option. Pull to refresh is considered by some as an anti-pattern on Android, mainly because of the rubberbanding effect as the user reaches the start/end of a list. The preferred option nowadays is to place a 'refresh' button in the action bar. As for Windows Phone, I'm not sure what the interface guidelines say. It also doesn't really make sense as a replacement to 'load more', as pull to refresh indicates you want to get new content, at the head of the list rather than the tail, whereas what we're doing is looking at (more) old content.

AlekseyMartynov commented 11 years ago

Guys, can we clarify the terminology. To my understanding, infinite scrolling and pull-down-to-refresh are two separate UI idioms with different purpose, and should not be counterposed.

Infinite scrolling is loading a long list in portions. Pull to refresh is another gesture (probably first introduced in Twitter app) to query the remote source for data updates, not for a new portion. It is performed in the direction opposite to scrolling and is usually accompanied by the rotating arrow.

In PhoneJS, there is infinite scrolling. Pull to refresh is not implemented.

sugardave commented 11 years ago

In Enyo, we say "infinite scrolling" when we are describing how enyo.List works. You can throw millions of items in it, but it will only ever render 2 "pages" worth of items in order to keep memory usage down. In my mind, the Enyo app would get all the results in one go and put them all in the List. In fact, I think it does this already, but we only render 20 items at a time until the user taps the "Load more..." button. This raises the complexity of the code.

On Tue, May 28, 2013 at 8:55 AM, AlekseyMartynov notifications@github.comwrote:

Guys, can we clarify the terminology. To my understanding, infinite scrolling and pull-down-to-refresh are two separate UI idioms with different purpose, and should not be counterposed.

Infinite scrolling is loading a long list in portions. Pull to refresh is another gesture (probably first introduced in Twitter app) to query the remote source for data updates, not for a new portion. It is performed in the direction opposite to scrolling and is usually accompanied by the rotating arrow.

In PhoneJS, there is infinite scrolling. Pull to refresh is not implemented.

— Reply to this email directly or view it on GitHubhttps://github.com/ColinEberhardt/PropertyCross/issues/187#issuecomment-18551802 .

ColinEberhardt commented 11 years ago

OK, my bad, I think everyone is in agreement about what infinite scrolling is - and that it is a feature we might want to support. I have changed the name of this issue to remove the reference to 'pull-to-load-more'!