Udacity – czego sie nauczylam z kursu

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

 

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.