15-1 LESSON KEYWORD 34
15-1-1 15-1-2 35
36
15-1-3 37
check! 38
15-1-4 39
40
15-1-5 41
42
1AndroidManifest.xmlandroid.permission.INTERNET" <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="" > <uses-permission android:name="android.permission.internet"/> <application> <!-- --> </application> </manifest> // 2MainActivity.java import com.loopj.android.http.asynchttpclient; 43
3MainActivity.javaHttpURLConnection public class MainActivity extends Activity { @Override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); new DownloadTask().execute(); private static class DownloadTask extends AsyncTask<Void, Void, Void> { @Override protected Void doinbackground(void... params) { try { URL url = new URL("http://tomorrowkey.github.io"); HttpURLConnection connection = (HttpURLConnection) url.openconnection(); connection.setrequestmethod("get"); connection.setrequestproperty("host", "tomorrowkey.github.io"); connection.connect(); int responsecode = connection.getresponsecode(); Log.d("TEST", "Response-Code=" + responsecode); String contentlength = connection.getheaderfield("content-length"); Log.d("TEST", "Content-Length=" + contentlength); String contenttype = connection.getheaderfield("content-type"); Log.d("TEST", "Content-Type=" + contenttype); InputStream inputstream = connection.getinputstream(); String body = readtoend(inputstream); Log.d("TEST", "body=" + body); inputstream.close(); catch (MalformedURLException e) { throw new RuntimeException(e); catch (IOException e) { throw new RuntimeException(e); return null; private String readtoend(inputstream inputstream) throws IOException { StringBuilder sb = new StringBuilder(); int length; byte[] buffer = new byte[1024]; while ((length = inputstream.read(buffer))!= -1) { sb.append(new String(buffer, 0, length)); return sb.tostring(); 44
45
4MainActivity.javaandroid-http-async public class extends Activity { @Override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); loadasync(); private void loadasync() { AsyncHttpClient client = new AsyncHttpClient(); // client.get("http://tomorrowkey.github.io", new AsyncHttpResponseHandler() { @Override public void onsuccess(int responsecode, Header[] headers, byte[] response) { //UI String body = new String(response); Log.d("TEST", "body=" + body); @Override public void onfailure(int responsecode, Header[] headers, byte[] response, Throwable e) { // ); 46
15-1-6 5MainActivity.javaloadAsyncURL private void loadasync(string url) { AsyncHttpClient client = new AsyncHttpClient(); client.get(url, new AsyncHttpResponseHandler() { // ); 47
6MainActivity.java private void loadasync(string url) { if (TextUtils.isEmpty(url)) { return; AsyncHttpClient client = new AsyncHttpClient(); client.get(url, new AsyncHttpResponseHandler() { // ); 7MainActivity.javastartsWith // "http://"return if(!url.startswith("http://")){ return; 8MainActivity.java URL try{ URL url = new URL(urlString); catch(malformedurlexception e){ // URLMalformedURLExceptionthrowreturn return; 48
9MainActivity.java private String loadasync(string url) { AsyncHttpClient client = new AsyncHttpClient(); client.get(url, new AsyncHttpResponseHandler() { @Override public void onsuccess(int responsecode, Header[] headers, byte[] response) { String body = new String(response); return body; // ); 10MainActivity.java private String loadasync(string url) { AsyncHttpClient client = new AsyncHttpClient(); //1 get client.get(url, new AsyncHttpResponseHandler() { @Override public void onsuccess(int responsecode, Header[] headers, byte[] response) { //3 String body = new String(response); return body; // ); //2 loadasync 49
11MainActivity.java //interface public interface OnLoadListener { public void onload(string result); //OnLoadListener private void loadasync(string url, final OnLoadListener listener) { AsyncHttpClient client = new AsyncHttpClient(); client.get(url, new AsyncHttpResponseHandler() { @Override public void onsuccess(int responsecode, Header[] headers, byte[] response) { String body = new String(response); // listener.onload(body); // ); 50
12MainActivity.java @Override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_android_http_async); loadasync("http://tomorrowkey.github.io", new OnLoadListener() { @Override public void onload(string result) { // ); check! 51
52
53 15-2 LESSON KEYWORD
15-2 -1 15-2 -2 54
55
56
15-2 -3 57
15-2 -4 58
13MainActivity.java import com.beardedhen.androidbootstrap.bootstrapbutton; 15-2 -5 59
14activity_main.xmlBootstrapButton <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" xmlns:library="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingleft="@dimen/activity_horizontal_margin" android:paddingright="@dimen/activity_horizontal_margin" android:paddingtop="@dimen/activity_vertical_margin" android:paddingbottom="@dimen/activity_vertical_margin" tools:context=".mainactivity"> <com.beardedhen.androidbootstrap.bootstrapbutton android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_margin="10dp" android:text="hello Bootstrap!" library:bb_type="success" /> </RelativeLayout> 15-2 -6 15activity_main.xmlBootstrapButton library:bb_type="success" 60
check! 16activity_main.xmlbb_type library:bb_type="danger" 61
17AndroidBootstrap-attr.xml <?xml version="1.0" encoding="utf-8"?> <resources> <declare-styleable name="bootstrapbutton"> <attr name="bb_type" format="string"/> <attr name="bb_icon_left" format="string"/> <attr name="bb_icon_right" format="string"/> <attr name="bb_roundedcorners" format="boolean"/> <attr name="bb_text_alignment" format="string"/> <attr name="bb_size" format="string"/> <attr name="bb_text_gravity" format="string"/> <attr name="android:textsize"/> <attr name="android:text"/> <attr name="android:enabled"/> <attr name="android:layout_width"/> </declare-styleable> <!-- --> 62
18BootstrapButton.java140 113:private void initialise( AttributeSet attrs ) { -- 121: TypedArray a = getcontext().obtainstyledattributes(attrs, 122: R.styleable.BootstrapButton); -- 126: String bootstraptype = "default"; -- 140: if (a.getstring(r.styleable.bootstrapbutton_bb_type)!= null) { 141: bootstraptype = a.getstring(r.styleable.bootstrapbutton_bb_type); 142: 63
19BootstrapButton.java240 26: private static Map<String, BootstrapTypes> bbuttontypemap; -- 36: private boolean roundedcorners = false; -- 125: BootstrapTypes type = null; -- 240: //get the correct background type 241: if(roundedcorners == true) 242: { 243: type = bbuttontypemaprounded.get(bootstraptype); 244: else { 245: type = bbuttontypemap.get(bootstraptype); 246: 247: 248: //set up as default 249: if (type == null) 250: { 251: type = BootstrapTypes.DEFAULT; 252: 253: 254: //apply the background type 255: layout.setbackgroundresource(type.backgrounddrawable); 256: lblleft.settextcolor(getresources().getcolor(type.textcolour)); 257: lblmiddle.settextcolor(getresources().getcolor(type.textcolour)); 258: lblright.settextcolor(getresources().getcolor(type.textcolour)); <> 64
20BootstrapButton.java84 84: private enum BootstrapTypes 85: { 86: DEFAULT(R.drawable.bbuton_default, R.color.black), 87: PRIMARY(R.drawable.bbuton_primary, R.color.white), 88: SUCCESS(R.drawable.bbuton_success, R.color.white), 89: INFO(R.drawable.bbuton_info, R.color.white), 90: WARNING(R.drawable.bbuton_warning, R.color.white), 91: DANGER(R.drawable.bbuton_danger, R.color.white), 92: INVERSE(R.drawable.bbuton_inverse, R.color.white), -- 102: private int backgrounddrawable; 103: private int textcolour; 104: 105: BootstrapTypes(int backgrounddrawable, int textcolour) 106: { 107: this.backgrounddrawable = backgrounddrawable; 108: this.textcolour = textcolour; 109: 110: 65
21BootstrapButton.java41 41: static{ 42: 43: bbuttontypemap = new HashMap<String, BootstrapTypes>(); 44: 45: bbuttontypemap.put("default", BootstrapTypes.DEFAULT); 46: bbuttontypemap.put("primary", BootstrapTypes.PRIMARY); 47: bbuttontypemap.put("success", BootstrapTypes.SUCCESS); 48: bbuttontypemap.put("info", BootstrapTypes.INFO); 49: bbuttontypemap.put("warning", BootstrapTypes.WARNING); 50: bbuttontypemap.put("danger", BootstrapTypes.DANGER); 51: bbuttontypemap.put("inverse", BootstrapTypes.INVERSE); -- 15-2 -7 66
67
68
69
check! 70
15-3 LESSON KEYWORD 71
15-3 -1 72
73
22Calculator.javaCalculator package jp.techinstitute.t051.mylibrary; public class Calculator { public int plus(int a, int b) { return a + b; 74
75
23activity_main.xml UseMyLibrary <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingleft="@dimen/activity_horizontal_margin" android:paddingright="@dimen/activity_horizontal_margin" android:paddingtop="@dimen/activity_vertical_margin" android:paddingbottom="@dimen/activity_vertical_margin" tools:context=".mainactivity"> <TextView android:id="@+id/text" android:textsize="40sp" android:text="@string/hello_world" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </RelativeLayout> 76
24MainActivity.java UseMyLibrary package jp.techinstitute.t051.myapplication; import android.support.v7.app.actionbaractivity; import android.os.bundle; import android.view.menu; import android.view.menuitem; import android.widget.textview; import jp.techinstitute.t051.mylibrary.calculator; public class MainActivity extends ActionBarActivity { @Override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); Calculator calculator = new Calculator(); int result = calculator.plus(10, 15); TextView textview = (TextView)findViewById(R.id.text); textview.settext("result=" + result); 15-3 -2 77
15-3 -3 78
25LibraryActivity.java public class LibraryActivity extends ActionBarActivity { public static Intent createintent(context context) { return new Intent(context, LibraryActivity.class); @Override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_library); 26MainActivity.javaMainActivityLibraryActivity package jp.techinstitute.t051.myapplication; import android.content.intent; import android.support.v7.app.actionbaractivity; import android.os.bundle; import android.view.view; import jp.techinstitute.t051.mylibrary.libraryactivity; public class MainActivity extends ActionBarActivity { @Override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); findviewbyid(r.id.button).setonclicklistener(new View.OnClickListener() { @Override public void onclick(view v) { Intent intent = LibraryActivity.createIntent(MainActivity.this); startactivity(intent); ); 79
27AndroidManifest.xml <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.techinstitute.usemylibrary"> <application> <!-- --> <activity android:name="com.techinstitute.mylibrary.libraryactivity"/> </application> </manifest> 80