Android :

Similar documents
1: Android 2 Android 2.1 Android 4 Activity Android Service ContentProvider BroadcastReceiver Activity ( ): Android 1 Android Service ( ): ContentProv

Prog2_6th

非推奨メソッド等の掲載について

1: Preference Display 1 package sample. pref ; 2 3 import android. app. Activity ; 4 import android. content. Intent ; 5 import android. content. Shar

Microsoft Word - Android_SQLite講座_画面800×1280

「Android Studioではじめる 簡単Androidアプリ開発」正誤表

mazec テクニカルガイド第5版(Android版)

日 力力 生 行行 入 入 力力 生 用 方

About me! 足立昌彦 / +Masahiko.Adachi )! バイドゥ株式会社技術顧問 (Simeji)! 株式会社カブク Co-Founder! Google Developer Expert (Android)

Vuzix M100 SDKインストールガイド

補足資料 キーイベント処理サンプル package jp.co.keyevent; import android.app.activity; import android.os.bundle; import android.view.keyevent; import android.widget.t

2-2. TableLayout TableLayout は任意のビューを表形式で配置したい場合に利用する (HTML の Table に近いイメー ジ ) 2-3. FrameLayout ビューを重ねて表示するためのレイアウト 後から配置した部品が前面に来る仕様となっている 3. まとめ レイア

Microsoft Word - _Intent.doc

Microsoft Word - USB60BCR_10.doc

untitled

Android プログラミング入門 独りで学べるスマホアプリの作り方 株式会社アンサリードシステム教育事業部編 長谷篤拓 中庭伊織 共著 コロナ社 コロナ社

Android Layout SDK プログラミング マニュアル

KEW Smart for KEW3552BT 取扱説明書

Visual Studio を用いたクロスプラットフォーム開発入門 Android 編

Parametric Polymorphism

SmartBrowser_document_build30_update.pptx

Wiki

PowerPoint プレゼンテーション

WinDriver PCI Quick Start Guide

KEW Smart for KEW3441BT 取扱説明書

EPSON WristableGPS SF-850

16soukatsu_p1_40.ai

19 ステップで 2 大人気スクリプト言語を学ぶ GUI のあるアプリを作る STEP11 から STEP12 までまとめ 1.Python での GUI アプリ作成 Python は標準ではグラフィックスの機能を持ちませんが ライブラリを使うことで GUI のアプリを作成することができる そこで

授業内容 センサーとは何かおさらい MEMS フレームワークとは何か? を理理解する 演習 センサーのフレームワークを理理解する Androidで使 用できるセンサーの種類 センサーを使ってみる

Windows Layout SDK プログラミング マニュアル

e10s におけるプロセス間通信の基本 219 HACK #34 Components.manager.removeBootstrappedManifestLocati on() function shutdown(adata, areason) { const IOService =

<4D F736F F D B B83578B6594BB2D834A836F815B82D082C88C60202E646F63>

Windowsユーザでも 手軽に作れるiPhoneアプリ

Google Android SDK Java Android OS API Android OS Java Android OS Chu lingual Android OS Web

法人向けmazecテクニカルガイド


MAPインストーラー起動時のエラーメッセージへの対処方法

Adobe AIR のセキュリティ

VGB Kinect v2 VGB VGB Kinect v2 3 VGB VGB Discrete Continuous 2 Discrete : Jump, Sit, NicoNii AdaBoost (Confidence) Visual Studio 2013 or 2012 () Kine

LiveCode初心者開発入門サンプル

Microsoft Word - jpluginmanual.doc

OculusGo 開発環境を整える (β0.2 版 ) 2018 年 5 月 4 日 20:14 # OculusGo ゲットしたどー!! なんか TL が騒がしいぞ と思ったら OculusGo のポチり報告がちらほら 値段を見たらなんかとっても安いじゃないですか そりゃもうマッハでポチりました

ドコモメール連携アプリ開発ガイド(新IF対応)

SAS Web XML * ** * ** Web Data Analysis with SAS Input and Output of XML Data and Application to Real Estate Valuation Map Junnosuke Matsushima*, Hiro

CSSNiteLP51-s7-kubo.key

intra-mart Accel Platform — IM-Repository拡張プログラミングガイド   初版  

Transcription:

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