Android : 2018 6 1
Android SB Informatics & IDEA chapter 1 1-1 Android Android 1-2 column 1-3 Windows Mac Android Studio column Android Studio 1-4 Android Studio Android Studio column Instant Run column Gradle Groovy 1-5 AVD AVD Manager AVD Hello World! AVD column Intel HAXM 1-6 Android PC USB chapter 2 Kotlin 2-1 Kotlin REPL Kotlin Kotlin REPL 2
Android SB Informatics & IDEA Kotlin 2-2 Kotlin 2-3 2-4 null 2-5 API object chapter 3 Android 3-1 Android Android 3-2 column 3-3 Android Studio 3
Android SB Informatics & IDEA Android 3-4 Android Android Chapter 4 4-1 column ID 4-2 activity main.xml ConstraintLayout 4-3 4-4 MainActivity 4-5 4-6 4-7 chapter 5 5-1 SharedPreferences 4
Android SB Informatics & IDEA Android SharedPreferences SharedPreferences 5-2 5-3 ( 1) ( 2) chapter 6 RSS 6-1 6-2 column column build.gradle 6-3 RSS 6-4 RSS XML RSS RSS 6-5 Web Web 3 6-6 Android 5
Android SB Informatics & IDEA RSS RSS chapter 7 7-1 Android File API 7-2 7-3 7-4 chapter 8 8-1 Google Maps Android API Google Maps Android API Google API Google Maps 8-2 SQLite SQLiteOpenHelper SQLite SQLite 8-3 8-4 onactivityresult() 6
Android SB Informatics & IDEA Chapter 9 9-1 apk ID Key store apk 9-2 Google Play Index 7
9 chapter 1 01 Android Android 02 Google Play Photshop, Sketch, InVision, Prott AndroidStudio
CHAPTER 1 1. 03 Android Android SDK Espresso Google Play column (User Experience: ) 0.1 03 Android Studio install 04 Android Studio 10
11 chapter 2 Kotlin 01 Kotlin REPL Kotlin 1. 2. 3. 4. Kotlin REPL REPL(Read-Eval-Print Loop) Android Studio [Tools] - [Kotlin] - [Kotlin REPL] Kotlin /* Kotlin */ ---------------------------------- 1 data class User(val name : String, var point : int = 0) ---- 2 // -------------------- 3 fun printusers(users : List<User>) { -- users.foreach { user -> -- ------ 4 print("${user.name} : ${user.point} \n") -- } -- } 1, 3 2 User 4 fun printuser val people = listof(user("tarou", 100), User("Hanako"), User("Jirou", 50))
CHAPTER 2 KOTLIN printusers(people) Tatou : 100 Hanako : 0 Jirou : 50 02 Kotlin val fruits = arrayof("apple", "orange", "grape", "peach") fruite[0] apple val fruite = listof("apple", "orange", "grape", "peach") fruite[1] orange mutablelistof val fruite = mapof("a" to "apple", "b" to "banana", "c" to "citrus") fruite["a"] apple 1.. 10 12
CHAPTER 2 KOTLIN if when when for while do while 03 Unit 04 null? 13
CHAPTER 2 KOTLIN!! 05 scope function Standard.kt let apply run with also let apply API filter map maxby, minby find foreach object 14
15 chapter 3 Android 01 Android Android アクティビティ アプリ アクティビティ 別のアプリ サービス アクティビティ サービス アクティビティ ブロードキャストレシーバ コンテントプロバイダ アクティビティ 1 Android
CHAPTER 3 ANDROID アクティビティ A アクティビティ B フラグメント A アクティビティ A フラグメント B 画面ごとに複数のアクティビティを用意して ロジックやインターフェイスもすべて管理する 画面ごとのロジックやインターフェイスはフラグメントにして アクティビティはその管理だけを行う 2 アクティビティ A アプリ A アクティビティ B アプリ B サービス 3 他のコンポーネント コンテントプロバイダ 実データ 4 16
CHAPTER 3 ANDROID システムや 他のアプリから通知 ブロードキャストレシーバ サービス 5 02 Activity onpause() column 03 Android Studio [res] [res] - [values] 17
CHAPTER 3 ANDROID 起動 oncreate() 再度このアクティビティを開く onstart() onrestart() onrestoreinstancestate() プロセス終了 onresume() 実行中 再表示 他のアプリのためにメモリが必要になった 別のアクティビティが開始 再表示 onpause() onsaveinstancestate() アクティビティが非表示 onstop() ondestroy() 破棄 6 [res] - [layout] View ViewGroup 18
CHAPTER 3 ANDROID 1 string plurals integer bool string-array integer-array array color dimen style attr [res] - [drawable], [mipmap] 9-patch Android px px pixel: dpi dpi dots per inch: dp dp density-independent pixels: sp sp scale-independent pixels: 19
CHAPTER 3 ANDROID 04 Android Android OS Andorid 6.0 SDK 23 OS Andorid 6.0 SDK 23 20
CHAPTER 3 ANDROID フラグメント追加 onattach() oncreate() oncreateview() onactivitycreated() ユーザが再度このアクティビティを開く onstart() プロセス終了 onresume() 他のアプリのためにメモリが必要になった 実行中 再表示 フラグメントが backstack に置かれた フラグメントが削除された onpause() onstop() フラグメントが再度レイアウトに置かれた ondestroyview() ondestroy() ondetack() 破棄 7 21
CHAPTER 3 ANDROID startservice() で起動 startservice() で起動 oncreate() oncreate() onstartcommand() onstartcommand() 実行中 実行中 stopservice() または stopself() で停止する 全クライアントが unbindservice() でバインド解除する ondestroy() ondestroy() 終了 終了 8 App API Binder JNI (Java Native Interface) プリインストールアプリ アプケーションフレームワーク Android システムサービス HAL ユーザーインストールアプリ Linux カーネル 9 Android 22
23 Chapter 4 01 1. 2. 3. 4. 5. 6. API Application name Calculator
CHAPTER 4 Company domain sample.android.exanple.com Project location Y= Package name com.example.android.sample.calculator Include C++ support Include Kotlin support column ID 02 activity main.xml 1. 2. ConstraintLayout ConstraintLayout RelativeLayout LinearLayout FrameLayout TableLayout textview text textappearance AppCompat.Large layout margin?, 48dp, 48dp,?,? 24
CHAPTER 4 ConstraintLayout edittext Number id price layout margin?, 32dp,?, 48dp,? layout width match constraint textview text textappearance AppCompat.Large layout margin?, 48dp, 48dp,?,? Button id text calculate 03 04 MainActivity MainActivity.kt class MainActivity : AppCompatActivity() { override fun oncreate(savedinstancestate: Bundle?) { super.oncreate(savedinstancestate) setcontentview(r.layout.activity_main) 25
CHAPTER 4 } } 1. 2. View TextView ViewGroup ConstraintLayout 10 View UI override fun oncreate(savedinstancestate: Bundle?) { super.oncreate(savedinstancestate) setcontentview(r.layout.activity_main) val button = findviewbyid<button>(r.id.calculate) button.setonclicklistener { // // var isvalid = true val priceedittext =findviewbyid<edittext>(r.id.price) val pricetext = priceedittext.text.tostring() if (pricetext.isempty()) { // priceedittext.error = " " isvalid = false 26
CHAPTER 4 } val discountedittext = findviewbyid<edittext>(r.id.discount) val discounttext = discountedittext.text.tostring() if (discounttext.isempty()) { // discountedittext.error = " " isvalid = false } if (isvalid) { // val price = Integer.parseInt(priceText) val discount = Integer.parseInt(discountText) } } } // 1. Activity 2. oncreate() setcantentview() 3. AndroidManifest.xml [app] - [java] - [com.example.android.sample.calculator] [New] - [Activity] - [EmptyActivity] - ResultActivity // val intent = Intent(this, ResultActivity::class.java) intent.putextra("price", price) intent.putextra("discount", discount) startactivity(intent) 27
CHAPTER 4 05 ID expression label textappearance AppCompat.Large text @string/expression : %1$,3d %2$d%% ID result label textappearance AppCompat.Large text @string/result : %1$,3d class ResultActivity : AppCompatActivity() { override fun oncreate(savedinstancestate: Bundle?) { super.oncreate(savedinstancestate) setcontentview(r.layout.activity_result) // Intent val price = intent.getintextra("price", 0) val discount = intent.getintextra("discount", 0) val expression = findviewbyid<textview>(r.id.expression_label) expression.text = getstring(r.string.expression, price, discount) // val discountedprice = price * (100 - discount) / 100 } } val result = findviewbyid<textview>(r.id.result_label) result.text = getstring(r.string.result, discountedprice) 28
CHAPTER 4 06 07 29
31 chapter 5 Key-Value 01 SharedPreferences Android File API SharedPreferenced SQLite SharedPreferences Key-Value ShartedPreferences アプリ メモリ xml ファイル まずメモリに反映する バックグラウンドで永続化する 11 SharedPreferences Application name SharedPreferences Plain Text ID edittext
CHAPTER 5 アプリ ShartedPreferences メモリ xml ファイル キャッシュから高速に値を返す 未キャッシュならファイルから読み込む 12 xml Button ID text store SharedPreferences MainActivity.kt class MainActivity : AppCompatActivity() { override fun oncreate(savedinstancestate: Bundle?) { super.oncreate(savedinstancestate) setcontentview(r.layout.activity_main) val pref = getsharedpreferences("file_name", Context.MODE_PRIVATE) // // val storedtext = pref.getstring("key", " ") val edittext = findviewbyid<edittext>(r.id.edittext) edittext.settext(storedtext) val button = findviewbyid<button>(r.id.store) // button.setonclicklistener { // val inputtext = edittext.text.tostring() // pref.edit().putstring("key", inputtext).apply() } 32
CHAPTER 5 } } 1. Context.getSharedPreferences() SharedPreferences 2. SharedPreferences.getString() 3. SharedPreferences.edit() Editor Editor.putString() Editor.apply() Editor.commit() SharedPreferences 02 ListView RecyclerView Application name ListView Legacy - ListView ID timezonelist layout width match constraint layout height match constraint layout Layout resource file [File name] list time zone raw Text ID text timezone MainActivity.kt class MainActivity : AppCompatActivity() { override fun oncreate(savedinstancestate: Bundle?) { super.oncreate(savedinstancestate) // setcontentview(r.layout.activity_main) 33
CHAPTER 5 // val timezones = TimeZone.getAvailableIDs() // val listview = findviewbyid<listview>(r.id.timezonelist) // val adapter = ArrayAdapter<String>(this, R.layout.list_time_zone_row, R.id.timeZone, timezones) // listview.adapter = adapter } } // listview.setonitemclicklistener { parent, view, position, id -> // val timezone = adapter.getitem(position) // Toast Toast.makeText(this, timezone, Toast.LENGTH_SHORT).show() } 03 Application name WorldClock TextClock <androidx.constraintlayout.widget.constraintlayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" 34
CHAPTER 5 xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".mainactivity"> <TextClock android:layout_width="wrap_content" android:layout_height="wrap_content"/> </androidx.constraintlayout.widget.constraintlayout> ( 1) MainActivity.kt class MainActivity : AppCompatActivity() { override fun oncreate(savedinstancestate: Bundle?) { super.oncreate(savedinstancestate) setcontentview(r.layout.activity_main) // val timezone = TimeZone.getDefault() // TextView val timezoneview = findviewbyid<textview>(r.id.timezone) // timezoneview.text = timezone.displayname } } // val addbutton = findviewbyid<button>(r.id.add) // addbutton.setonclicklistener { val intent = Intent(this, TimeZoneSelectActivity::class.java) // startactivityforresult(intent, 1) 35
CHAPTER 5 startactivityforresult() でアクティビティを起動する 遷移元アクティビティ 遷移先アクティビティ startactivityforresult() setresult() onactivityresult() setresult() で結果をセットする setresult() でセットした結果を受け取る 戻るボタンや finish() メソッドで遷移先アクティビティに戻る 13 startactivityforresult() onactivityresult() ( 2) 36
37 chapter 6 RSS