Jestem już więcej niż w połowie kursu Udacity – czas na małe podsumowanie zdobytej wiedzy.
1) Container views :
Class | Name | Description |
LinearLayout | Displays views in a single column or row. | |
RelativeLayout | Displays views positioned relative to each other and this view. | |
FrameLayout | A ViewGroup meant to contain a single child view. | |
ScrollView | A FrameLayout that is designed to let the user scroll through the content in the view. | |
ConstraintLayout | This is a newer viewgroup; it positions views in a flexible way. We’ll be exploring constraint layout later in the lesson. |
2) HTTP request
jak przekonwertowac InputStream do Stringa:
https://stackoverflow.com/questions/309424/read-convert-an-inputstream-to-a-string
3) uprawnienia do łączenia się z Internetem:
w pliku manifest.xml
dodajemy:
<uses-permission android:name=”android.permission.INTERNET” />
4) jak zassac cos z zadanej strony (w tym przypadku z githuba), wynik w JSONach:
final static String GITHUB_BASE_URL = „https://api.github.com/search/repositories”;
final static String PARAM_QUERY = „q”;
final static String PARAM_SORT = „sort”;
final static String sortBy = „stars”;
private void makeGithubSearchQuery() {
String githubQuery = mSearchBoxEditText.getText().toString();
URL githubSearchUrl = buildUrl(githubQuery);
mUrlDisplayTextView.setText(githubSearchUrl.toString());
String githubSearchResults = null;
try {
githubSearchResults = getResponseFromHttpUrl(githubSearchUrl);
mSearchResultsTextView.setText(githubSearchResults);
} catch (IOException e) {
e.printStackTrace();
}
}
public static URL buildUrl(String githubSearchQuery) {
Uri builtUri = Uri.parse(GITHUB_BASE_URL).buildUpon()
.appendQueryParameter(PARAM_QUERY, githubSearchQuery)
.appendQueryParameter(PARAM_SORT, sortBy)
.build();
URL url = null;
try {
url = new URL(builtUri.toString());
} catch (MalformedURLException e) {
e.printStackTrace();
}
return url;
}
public static String getResponseFromHttpUrl(URL url) throws IOException {
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
try {
InputStream in = urlConnection.getInputStream();
Scanner scanner = new Scanner(in);
scanner.useDelimiter(„\\A”);
boolean hasInput = scanner.hasNext();
if (hasInput) {
return scanner.next();
} else {
return null;
}
} finally {
urlConnection.disconnect();
}
}
5) AsyncTask – do tworzenia wątków w aplikacji mobilnej (przydatne, gdy np. czeka się na odpowiedź z serwera, czy też wypełnienie listy danymi z bazy)
świetnie wytłumaczone tutaj:
https://developer.android.com/reference/android/os/AsyncTask.html
a w przykładzie tutaj
public class GithubQueryTask extends AsyncTask<URL, Void, String> {
@Override
protected String doInBackground(URL… params) {
URL searchUrl = params[0];
String githubSearchResults = null;
try {
githubSearchResults = NetworkUtils.getResponseFromHttpUrl(searchUrl);
} catch (IOException e) {
e.printStackTrace();
}
return githubSearchResults;
}
@Override
protected void onPostExecute(String githubSearchResults) {
if (githubSearchResults != null && !githubSearchResults.equals(„”)) {
mSearchResultsTextView.setText(githubSearchResults);
}
}
}
private void makeGithubSearchQuery() {
String githubQuery = mSearchBoxEditText.getText().toString();
URL githubSearchUrl = NetworkUtils.buildUrl(githubQuery);
mUrlDisplayTextView.setText(githubSearchUrl.toString());
// COMPLETED (4) Create a new GithubQueryTask and call its execute method, passing in the url to query
new GithubQueryTask().execute(githubSearchUrl);
}
6) jak parsowac JSON w Javie:
String getCondition(String JSONString) {
JSONObject forecast = new JSONObject(JSONString);
JSONObject weather = forecast.getJSONObject(„weather”);
return weather.getString(„condition”);
}
7) Jak używać RecycleView do wyświetlania większej ilości danych:
https://developer.android.com/training/material/lists-cards.html
8) intent explicit oraz implicit, share intents
Implicit intents – do przechodzenia miedzy własnymi activity
https://developer.android.com/guide/components/intents-filters.html
Explicit intents – do uruchamiania aplikacji z poziomu telefonu (i otwierania np. linka w przeglądarce, czy też pobierania kontaktu z listy kontaktów lub otwierania lokacji na mapach Google)
https://developer.android.com/guide/components/intents-common.html
ShareIntent-do udostępniania zawartości (na FB, do schowka,itp.)
https://developer.android.com/reference/android/support/v4/app/ShareCompat.html