rbarman / brainy-quote-app Goto Github PK
View Code? Open in Web Editor NEWBrainy Quote Android Application
Brainy Quote Android Application
this is from : #12
Currently previously favorited quotes will have starOff next to it. We want starOn next to it so that the user is aware that it was a favorite.
All back end coding seems to be done.
User can successfully pull quotes from valid keywords or authors from BrainyQuote. Also I have fixed all searches so that the app can pull quotes past the first page if the user has gone past the first page ; the app will not crash.
So the challenge : try to make the app crash....
&& Think of good UI designs and implementations that you would want to see.
Every async task's doInBackground() method is connecting to an url at every execution.
Even though getting a new quote is fast, it is unnecessary to connect to an url if we are on the same page.
For example, assume a page has 5 quotes. IOW these 5 quotes have the same url.
Currently if we were to swipe through and see all 5 quotes, we would have to connect to the same url that theses 5 quotes are on after each swipe.
However once we get past the 5 quotes, we have connect to a new url. It is much more efficient to connect to a url once only once we change the url.
This should be done after issue 15 is fully implemented.
The user should be able to click starOn and unfavorite the current quote
From d46ddfa I noticed that I had incorrectly placed the generateAuthorUrl(String s) for every time I started a AboutAuthorSearch async task instead of generateTagUrl(String s).
I fixed that. However within the SearchWithInitials async task, I need to rewrite :
new AboutAuthorSearch().execute(generateAuthorWithInitialsUrl(queryText));
I am not 100% sure if I can not do AboutAuthorSearch().execute(generateTagUrl(queryText)); because I imagine that i would have to account for a url with initials.
However I would need an example of a url with initials as a keyword to be completely sure of what to do.
What do you think about hiding the search bar in the action bar until the user clicks the search button at the center of the page (on the main screen). With the setup right now, it is slightly redundant. Also, this could free up space for other things like sharing buttons. Once the user clicks the search button, any existing items that take up too much space in the action bar will be hidden and replaced by the full search bar. If the user cancels the search, then any items previously hidden will become un-hidden.
Are there any other possible new features that we would like to implement to our app? So far the user can view random and custom quotes, share quotes, and favorite certain quotes.
pageNum == 2 and index == 0 (or any scenario where pageNum ++ and index == 0)
swipe right ...
However text in text view used for testing say pageNum == 1 and index == quotesOnPage-1.
Currently all activities will restart on an orientation change. For the search activities, this means when the user changes the orientation of their phone, they will come back to the first quote.
Relevant to solve this issue : http://developer.android.com/guide/topics/resources/runtime-changes.html
ByAuthorSearch for authors with initials AND TagSearch for Topics both start at Page 2.
Most likely because generate___Url(String s) is called multiple times to get there.
I feel like it is not too clear to the end user whether or not he/she can swipe the screen to get to the next quote (ex. random quote). What do you think about adding arrows like these (but sideways) at the very left and right side of the screen? They could appear with each quote, but then fade out after half a second. Pressing the location of where the arrow was will cause the app to move to the next quote, and repeat the appearance of the arrows.
As another option, we could display a small grey text hint that a user could see at the top of the Random and Specific quote activities, but dissapears after the first quote is seen, or something similar.
A general principle for Apps is that it must be responsive to user touch. We currently have a toast message every time the user swipes left and right which does show some sense of responsiveness to the user. However the toast message is very bland and should be used sparingly. If the user were to swipe through quotes very quickly, there would be toasts overlapping the previous toasts and the user would see a toast message for t * n seconds where t is the time per toast and n is the number of toasts. The user could just click anywhere on the activity page to get rid of a toast but they would have to do it n times. This is not a good experience for the user.
I think we should have some sort of animation or transition between new quotes. We can however keep a toast message stating "there are no previous quotes" if the user attempts to get a previous quote on the first quote, but all other toast messages should be removed.
Remember search history is a necessary component for any app that has a search capability. Currently I am using the android SearchRecentSuggestionProviderClass.
General Steps are :
There is less than one week left to break and we have made a lot of progress. I think it is conceivable that we release version 1 of this app within 2 - 3 weeks. (Exact deadline date can be discussed more in depth when we meet each other and are aware of our respective class schedules).
I have compiled a checklist for things that need to be implemented or fixed. If you have another item that should be addressed, please post it and then make a respective issue on it. We can then discuss that specific issue on that issue page in order to not have too much clutter on this thread.
Again, post anything that should be added for V1 and ask/comment on the respective issue page.
Currently generateUrl methods will build a new url on every call. This is unnecessary. A new url should only be built if we are on a new page.
Now with fdb1fb7 we can discuss the content and design of the settings page.
For content I'm thinking ...
For design ....
I am not entirely sure. We could try doing a listview.
What are your opinions?
Currently, the user must press the hardware menu button on his/her phone to access the favorites menu (it is hidden). I feel like without a little sharing icon in the action bar, or something similar, the user wouldn't really know this feature. Adding an icon would also make it easier/quicker to favorite/unfavorite apps. What do you think?
Continued from #23 (comment)
It is agreed that we will use split action bar. (For reference : http://developer.android.com/design/patterns/actionbar.html#considerations-split-action-bars)
Now the question arises, what will we put on the top action bar and on the bottom action bar?
My current thoughts :
Top Action Bar
Bottom Action Bar
The awkward one is where to put the favorites icon? The star icon is too similar and the user can easily get confused. We could have a way for the user to get to the favorites by clicking on the menu icon which will lead to a pop up menu.
What are your thoughts?
Now that we can fully store favorite quotes, it it necessary to have a favorites button in the action bar so that the user can view his favorite quotes at any point in the application.
We have several options of doing this...
I think 3 is a good way to go. Maybe 1. What do you think?
etc. continuation from #24 (comment)
All relevant discussion on the Favorite Button.
We already have a Favorites action item in the action bar, it is now time to discuss where / how our Favorite Button will be implemented.
Few options
(3) seems to much clicking (even if it is 2 clicks) to add a favorite quote or check favorites.
(2) Could get the action bar crowded and the user might confuse the Favorites and Favorite action items.
(1) Seems best to me so far.
What do you think?
What do you think of a share button in the contextual action bar of the fav quote screen? What if the user doesn't want to share a viewed quote immediately (too busy, wants to do it at a specific time, doesn't know whom to send it too, but will, etc.). By putting into the CAB, the user can select multiple or single quotes to share.
We might want to keep track of the user's place of in the Specific Search Activity for specific queryText values.
For example. I look up quotes by "JK Rowling." I look at 20 quotes by her. When I restart the application would I want to go through the previously seen 20 quotes or look at new quotes? Maybe, maybe not. The user should have a way for bookmarking his spot if he wanted to similar to a bookmark feature on e - readers.
What has been said previously :
BrianChan
We could define an option to show previously seen quotes for the custom quote search feature (ex. The user may want to look up the same quote to favorite it if he/she changed their mind). The default setting would probably be to not re show previously seen quotes. One possible way to check for previously seen quotes on a custom search, would be to create multiple files, with each file having different author names. Each time the user searches for a quote by a specific author, the app checks if there is a file with that author's name. If not, create the file, append the quote, and show the quote to the user. If the user searches for the same author again, then it would open up the same file (has author's name), and search the entire file for any place where the string of the quote to be shown is already in the file. If yes, then try to get another quote by the author. Rinse and repeat. However, this would get more complicated if the user searched quotes about the author (you would need to get the author of the quote, and the other author the author is talking about).
If we just created files to store every quote the user views on a custom search, the files would build up, and the performance penalty would be pretty big (also if we just append quotes to a single file).
Me:
counter solution that could work for any type of search (byAuthor, aboutAuthor, keyword, or topic)
Now when the user enter's a previously entered queryText...
There would also have to be a bookmark icon for the user to click on either on the bottom customized bar or on the actionbar.
If FavQuoteScreen is extending BaseActivity, then it will have the following in the onOptionsItemSelected :
case R.id.launch_fav_activity:
Intent intent = new Intent(getBaseContext(), FavQuotesScreen.class);
startActivity(intent);
return true;
This means that the user can click on the favorite action icon in the action bar to re-lauch the FavQuoteScreen Activity. If the user were to click the icon while viewing the FavQuoteScreenActivity n times, the user will have to press the back button n times to get back to the home screen.
So, FavQuoteScreen can not extend BaseActivity.
http://www.brainyquote.com/quotes/keywords/war
will redirect to
http://www.brainyquote.com/quotes/topics/topic_war.html
All keywords that are topics will redirect to topic url searches.
http://www.brainyquote.com/quotes/keywords/random is just a keyword so will stay the same.
Need to account for this so in order to generate accurate url for pages > 1.
A favorites button the user can select once a quote is published on screen. The button will write a text file to the app's installation directory, which can be later retrieved and viewed.
If the user clicks on the random quote button, and then the menu bar back button (left pointing arrow at the top), application crashes.
Do we really need toasts for every swipe (redundancy) ?
continued from #18
There will be custom toast messages for Random and Specific Quote Activities to tell the user that should swipe right / left to get next / previous quotes.
JRR Tolkien
WEB Du Bois
Will fail.
Possible solution is to have a boolean threeLetter and do similar process as SearchWithInitials async task that is currently running well with 2 letter initials. However this seems to be less efficient as another async task will have to be created.
Currently the user can only see and scroll through the list view of favorited quotes.
We should have more uses.
Some ideas from : #10 (comment)
There are a couple more things we could potentially do with the ListView if we add onClickListeners
add any more extras
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.