1 / 20

GUI og XML programmering

GUI og XML programmering. Hvor meget kode og hvor meget XML?. Agenda. Clicker applikation med knapper i stede for ListActivity ! Applikation med flere A ctivities og V iews Data fra en Activity til en anden Forberedelse til RESTFul service opslag

toki
Download Presentation

GUI og XML programmering

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. GUI og XML programmering Hvormegetkodeoghvormeget XML?

  2. Agenda • Clicker applikation med knapper i stede for ListActivity! • Applikation med flere Activities og Views • Data fra en Activity til en anden • Forberedelse til RESTFul service opslag • Brug af Android Service ->Tilføjelse af Android Preferences (Host adresse)

  3. Motivation Sådan en apps skal vi også have

  4. Android Application Class • Svarer ”nogenlunde” til J2ME Midlet • “Base class for those who need to maintain global application state. You can provide your own implementation by specifying its name in your AndroidManifest.xml's <application> tag, which will cause that class to be instantiated for you when the process for your application/package is created.” • Kan håndtereronCreate, onTerminate, onLowMemoryogonConfigurationChanged events

  5. Eksempel Applicationclass // ** The ApplicationClass *************************************** // // ApplictionClassExtenstion import android.app.Application; import android.content.res.Configuration; public classMyApplicationextendsApplication { private staticMyApplication singleton; // Returns the applicationinstance public staticMyApplicationgetInstance() { return singleton; } @Override public final voidonCreate() { super.onCreate(); singleton = this; } } // Manifest entry <application android:icon="@drawable/icon" android:name="MyApplication"> [... Manifestnodes ...] </application>

  6. Android Activity Class (Android Activities) • Brugergrænseflade og brugeraktioner er en aktivitet // ** The ActivityClass ****************************************** // packagecom.paad.myapplication; import android.app.Activity; import android.os.Bundle; public classMyActivityextendsActivity { /** Calledwhen the activity is firstcreated. */ @Override public voidonCreate(BundlesavedInstanceState) { super.onCreate(savedInstanceState); } } // ** Activity layout in XML <activityandroid:label="@string/app_name" android:name=".MyActivity"> </activity>

  7. Activity bruger View og Layout til UI og interaktion med brugeren • Activity og Form svarer til hinanden: Præsentere et skærmbillede 1:1 • Activity bruger Views, Layout og Widgets/Controls (Standard eller egne) • Der findes en sæt af specielt designede Activities i forhold til standard widgets • MapActivty, List Activty, ExpandableListActivty og TabActivity • Tilstand styret af Android Framework. • Mange Activities i en applikation kan give behov for eget Application objekt. Screen Layout “This hierarchy tree can be as simple or complex as you need it to be, and you can build it up using Android's set of predefined widgets and layouts, or with custom Views that you create yourself”.

  8. Klassehieraki

  9. Activity ->Layout-> View -> Widget &| ->UI Control • View er adgangen til skærmressourcen på enheden • Layout er manageren, der kontrollere View opsætningen • Widget er en kontrol i View, og som ligner den rigtige verdens ting. Et ur eller et kompas. Kan også være et View • UI control er grafiske enheder som knapper eller ”gestures” @Override public voidonCreate(Bundleicicle) { super.onCreate(icicle); TextViewmyTextView = new TextView(this); setContentView(myTextView); myTextView.setText("Hello, Android"); } @Override public voidonCreate(Bundleicicle) { super.onCreate(icicle); setContentView(R.layout.main); TextViewmyTextView = (TextView)findViewById(R.id.myTextView); }

  10. Klassediagram Et eksempel Fra http://www.droidnova.com/playing-with-graphics-in-android-part-i,147.html

  11. Layout hvordan XML ogkode <?xml version="1.0" encoding="utf-8"?> <LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="EnterTextBelow" /> <EditText android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="TextGoesHere!" /> </LinearLayout> LinearLayoutll = new LinearLayout(this); ll.setOrientation(LinearLayout.VERTICAL); TextViewmyTextView = new TextView(this); EditTextmyEditText = new EditText(this); myTextView.setText("EnterTextBelow"); myEditText.setText("TextGoesHere!"); intlHeight = LinearLayout.LayoutParams.FILL_PARENT; intlWidth = LinearLayout.LayoutParams.WRAP_CONTENT; ll.addView(myTextView, new LinearLayout.LayoutParams(lHeight, lWidth)); ll.addView(myEditText, new LinearLayout.LayoutParams(lHeight, lWidth)); setContentView(ll);

  12. Hvad er der så at holde styr på i GUI’en?http://developer.android.com/guide/topics/ui/index.html • View http://developer.android.com/reference/android/view/View.html • ViewGrouphttp://developer.android.com/reference/android/view/ViewGroup.html • Layout http://developer.android.com/reference/android/widget/LinearLayout.html • Widget Package http://developer.android.com/reference/android/widget/package-summary.html • Menu http://developer.android.com/guide/topics/ui/menus.html(Menu knappen) • View properties: Statiskog/ellerdynamisk. • UI Events • Define an event listener and register it with the View • Override an existing callback method for the View (Custom Views) • Menu Events

  13. Event Listnershttp://tseng-blog.nge-web.net/blog/2009/02/14/implementing-listeners-in-your-android-java-application/ • Inline Clas Implementation • Bruge “Implements” metoden • Bruge en variabeltil en listnermetode • XML attribute android:onClick="click1” • Sørg for at have en void click1(View v){ …} i Activity

  14. Event Listnershttp://tseng-blog.nge-web.net/blog/2009/02/14/implementing-listeners-in-your-android-java-application/ • Inline Clas Implementation • Bruge “Implements” metoden • Bruge en variabeltil en listnermetode • XML attribute android:onClick="click1” • Sørg for at have en void click1(View v){ …} metode i Activity

  15. Data fra en Activity til en anden I samme Apps ? I forskellige Apps? Påforskellige Smartphones Intent og Events Content Provider Shared Preferences SQLLite Filsystemet En extern server ??

  16. Samme App Intentintent = newIntent(); intent.putExtra(BackDoorMan.REQ_Q_A, mes); intent.setClassName("dk.euc.clicker", "dk.euc.clicker.SecActivtity"); try { startActivity(intent); } catch (Exception e) { @Override protectedvoidonCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.clicker); question = getIntent().getExtras().getString(BackDoorMan.REQ_Q_A);

  17. Preferences og opsætning ErtilknyttetegenAcitivity en xml filog “hooks” i Preferences publicclass Preferences extendsPreferenceActivity { publicstaticfinal String PREF_CLICKER_HOST = "PREF_CLICKER_HOST"; SharedPreferencesprefs; @Override publicvoidonCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); addPreferencesFromResource(R.xml.samplepreferences); } } <PreferenceScreenxmlns:android="http://schemas.android.com/apk/res/android"> <PreferenceCategoryandroid:title="@string/sample_pref_categ_3"> <EditTextPreferenceandroid:key="PREF_CLICKER_HOST" android:title="@string/sample_pref_txt_dialog" android:dialogTitle="@string/sample_pref_txt_dialog" android:summary="Preference Summary" /> </PreferenceCategory> </PreferenceScreen>

  18. Preferences internt opret // Retrieve an editor to modify the shared preferences. SharedPreferences.Editor editor = mySharedPreferences.edit(); // Store new primitive types in the shared preferences object. editor.putBoolean("isTrue", true); editor.putFloat("lastFloat", 1f); editor.putInt("wholeNumber", 2); editor.putLong("aNumber", 3l); editor.putString("textEntryValue", "Not Empty"); // Commit the changes. editor.commit();

  19. Preferences internt læs public voidloadPreferences() { // Get the storedpreferences int mode = Activity.MODE_PRIVATE; SharedPreferencesmySharedPreferences = getSharedPreferences(MY_PREFS, mode); // Retrieve the savedvalues. booleanisTrue = mySharedPreferences.getBoolean("isTrue", false); floatlastFloat = mySharedPreferences.getFloat("lastFloat", 0f); intwholeNumber = mySharedPreferences.getInt("wholeNumber", 1); long aNumber = mySharedPreferences.getLong("aNumber", 0); StringstringPreference = mySharedPreferences.getString("textEntryValue", ""); }

More Related