Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Speaker Deck
PRO
Sign in
Sign up for free
Androidアプリを作る 第5回
nonylene
December 13, 2016
Technology
0
920
Androidアプリを作る 第5回
nonylene
December 13, 2016
Tweet
Share
More Decks by nonylene
See All by nonylene
Elasticsearch で部内 Wiki 検索高速化
nonylene
1
1.7k
Androidアプリを作る 第7回
nonylene
0
1.2k
Androidアプリを作る 第6回
nonylene
1
920
Androidアプリを作る 第4回
nonylene
0
550
Androidアプリを作る 第3回
nonylene
0
950
androidアプリを作る 第1・2回
nonylene
0
740
iOS アプリ作成入門
nonylene
11
3.7k
Android・iOS アプリ作成入門 Android 編
nonylene
1
1.5k
Other Decks in Technology
See All in Technology
CUEとKubernetesカスタムオペレータを用いた新しいネットワークコントローラをつくってみた
hrk091
0
230
ROS_Japan_UG_#49_LT
maeharakeisuke
0
200
IoTを始めたきっかけの話と個人でできるIoTの今後 / 新年LT会「私の愛するIoT 2023」
you
0
110
EMになって最初の失敗談 - コミュニケーション編 -
fukuiretu
1
330
USB PD で迎える AC アダプター大統一時代
puhitaku
0
670
WINTICKET QA における Autify 活用
kj455
1
190
日本ディープラーニング協会主催 NeurIPS 2022 技術報告会講演資料
tdailab
0
940
400種類のWeb APIをサポートしているデータパイプラインツールにおけるWeb APIとの共存戦略
cdataj
0
130
20230121_BuriKaigi
oyakata2438
0
140
WebLogic Server for OCI 概要
oracle4engineer
PRO
3
840
2022年に起きたフロントエンドの変化
sakito
29
17k
OCI DevOps 概要 / OCI DevOps overview
oracle4engineer
PRO
0
470
Featured
See All Featured
The Brand Is Dead. Long Live the Brand.
mthomps
48
2.9k
Designing on Purpose - Digital PM Summit 2013
jponch
108
5.9k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
22
1.7k
Rebuilding a faster, lazier Slack
samanthasiow
69
7.5k
Into the Great Unknown - MozCon
thekraken
2
280
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
6
830
A Tale of Four Properties
chriscoyier
149
21k
Become a Pro
speakerdeck
PRO
6
3.2k
Happy Clients
brianwarren
90
5.8k
4 Signs Your Business is Dying
shpigford
171
20k
Creatively Recalculating Your Daily Design Routine
revolveconf
207
11k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
270
12k
Transcript
"OESPJEΞϓϦΛ࡞Δ ,.$OPOZMFOF "DUJWJUZϨΠΞτ
ࣗݾհ w OPOZMFOF ͷʹΕΜ w ,.$ճ w ΧʔϏΟͰ͢ w
ϙέϞϯϐΫϩεྑ͍Ͱ͢ w SPPU
ࣗݾհ w OPOZMFOF ͷʹΕΜ w εϚϗΞϓϦͱ͔ w 5XJUUFS(JU)VCFUD w
IUUQOPOZMFOFIBUFOBCMPHKQ
͜ΜΜ
ࠓΔ͜ͱ "DUJWJUZ *OUFOU ϨΠΞτ
"DUJWJUZ
֓આ
"DUJWJUZ w "DUJWJUZը໘ w ΞϓϦͷجຊཁૉ w ը໘ͳͷͰෳ͋Δ͜ͱ͕ଟ͍ w جຊతʹ"DUJWJUZ্Ͱશ͕ͯߦΘΕΔ
"DUJWJUZͷྫ
w ΞϓϦΛىಈˠ"DUJWUJZ͕ىಈ w ը໘Ҡಈˠผͷ"DUJWJUZ͕ىಈ w "DUJWJUZͷதʹ"DUJWJUZ࣋ͨͳ͍ w ৗʹͨͩҰͭͷ"DUJWJUZ͕લ໘ʹग़͍ͯΔ w .VMUJ8JOEPXͳͲͷྫ֎͋Δ
͋Ε͜Ε"DUJWJUZ
"DUJWJUZͷߏ
* MainActivity.java public class MainActivity extends AppCompatActivity { @Override protected
void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } } "DUJWJUZ
w 4VQQPSU-JCSBSZ w "OESPJE4%,ͷ࠷৽ͷػೳ͕Ұ෦ೖ͍ͬͯΔ w ͜ΕͰݹ͍ʹ࠷৽ͷػೳ͕ʂ • .*Compat.* • .*Support.*
• ࠓճ AppCompatActivity Λ͏ ิ
* MainActivity.java public class MainActivity extends AppCompatActivity { @Override protected
void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } } ىಈ͢Δ࣌ʹݺΕΔ ίϯετϥΫλͰ Activity ؔ࿈ͷॳظԽΛ͠Α͏ͱ͢Δͱ·ͩॳظԽ͕ࡁΜͰͳ͍͜ͱ͕͋Δ
w onCreate()ىಈʢॳظԽॲཧʣ w onStart() ࢝·Δ w ྫىಈ͢ΔɾStopޙ·ͨલ໘ʹͬͨ w onStop()ࢭ·ͬͨ w
ྫऴྃ͢Δɾଞͷ"DUJWJUZ͕લ໘ʹग़ͨ w onDestroy() ऴྃ͢Δʢޙย͚ʣ ϥΠϑαΠΫϧ
w ଞʹ͍Ζ͍Ζ͋Δ w IUUQTEFWFMPQFSBOESPJEDPNSFGFSFODF BOESPJEBQQ"DUJWJUZIUNM"DUJWJUZ-JGFDZDMF ϥΠϑαΠΫϧ
* MainActivity.java public class MainActivity extends AppCompatActivity { @Override protected
void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } } ϨΠΞτΛදࣔ R.layout.activity_main ʹؔͯ͠ޙड़
* AndroidManifest.xml <?xml versi…?> <manifest package=“net.nonylene.myslack" …> <application …> <activity
android:name=“.MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN"/> <category android:name="android.intent.category.LAUNCHER"/> </intent-filter> </activity> </application> </manifest> "OESPJE.BOJGFTUYNM
৽͍͠"DUJWJUZΛ࡞ w l1SPKFDUzͷlBQQzҎԼͰӈΫϦοΫ ˠ l/FXzl"DUJWJUZzl&NQUZ"DUJWJUZz
৽͍͠"DUJWJUZΛ࡞ w ྫ.BJO"DUJWJUZ w Main2Activity.java͕࡞ΒΕΔ w ϨΠΞτ͕࡞ΒΕΔ w AndroidManifest.xmlʹ Main2Activity͕Ճ͞ΕΔ
*OUFOU
*OUFOU w ଞͷ"DUJWJUZΛىಈ͢ΔͨΊͷΫϥε w "DUJWJUZಉ࢜ͰϝϯόมͳͲʹ ΞΫηε͠ͳ͍ ˠ ىಈΛࢦࣔ͢Δ*OUFOUʹσʔλΛೖΕͯ͢ w ଞͷ༻๏͋Δ
ྫ4FSWJDF ׂ͕Ѫ
*OUFOU w ໌ࣔత*OUFOU w ىಈ͢Δ"DUJWJUZΛࢦఆ͢Δ w ଞͷը໘ʹભҠ͍ͨ࣌͠ͳͲʹ͏
໌ࣔత*OUFOU * MainActivity.java Intent intent = new Intent(this, Main2Activity.class); intent.putExtra("name",
“nonylene"); startActivity(intent); .BJO"DUJWJUZΛىಈ this Context Ͱɺ͜͜Ͱ MainActivity ࣗΛೖΕ͍ͯΔ. (Activity Context ͷࢠΫϥε) Context ΞϓϦͷڥใͳͲΛऔಘ͢ΔͷʹΘΕ͍ͯΔ.
* MainActivity.java Intent intent = new Intent(this, Main2Activity.class); intent.putExtra("name", “nonylene");
startActivity(intent); ໌ࣔత*OUFOU lOPOZMFOFzͱ͍͏σʔλΛ֨ೲ
* MainActivity.java Intent intent = new Intent(this, Main2Activity.class); intent.putExtra("name", “nonylene");
startActivity(intent); ໌ࣔత*OUFOU *OUFOUΛ͛Δ .BJO"DUJWJUZ͕ىಈ
*OUFOU w ҉త*OUFOU w ʮڞ༗ʯͱݴΘΕ͍ͯΔͷ w ςΩετΛଞͷΞϓϦͰॲཧ͢Δ
*OUFOU w ҉త*OUFOU w ىಈ͢Δ"DUJWJUZࢦఆ͠ͳ͍ w *OUFOUͷΞΫγϣϯʢछྨʣΛࢦఆ͢Δ w ड͚औΓଆͷ"DUJWJUZAndroidManifestʹ ड͚औΔΞΫγϣϯɾ63*Λهड़
w ىಈ͢Δ"DUJWJUZΛϢʔβʔ͕બͿ
҉త*OUFOU * MainActivity.java Uri uri = Uri.parse(“https://www.kmc.gr.jp/"); Intent intent =
new Intent(Intent.ACTION_VIEW, uri); startActivity(intent); 6SJΦϒδΣΫτΛ࡞
҉త*OUFOU * MainActivity.java Uri uri = Uri.parse(“https://www.kmc.gr.jp/"); Intent intent =
new Intent(Intent.ACTION_VIEW, uri); startActivity(intent); "$5*0/@7*&8ʢӾཡ͢Δʣͱ։͘6SJΛࢦఆ
҉త*OUFOU *OUFOUΛ͛Δ ΞϓϦબը໘͕ىಈ * MainActivity.java Uri uri = Uri.parse(“https://www.kmc.gr.jp/"); Intent
intent = new Intent(Intent.ACTION_VIEW, uri); startActivity(intent);
҉త*OUFOU →
ϨΠΞτ
֓આ
"OESPJEͷϨΠΞτ w 9.-Ͱఆٛ w )5.-ײ֮Ͱॻ͘ͱྑ͍Ͱ͢<ٞ> w ը໘ύʔπͷ͜ͱΛ7JFXͱ͍͏
งғؾ * activity_main.xml <?xml version="1.0" encoding=“utf-8"?> <RelativeLayout android:id="@+id/activity_main" 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:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="net.nonylene.myslack.MainActivity"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Hello World!"/> </RelativeLayout>
งғؾ * activity_main.xml <?xml version="1.0" encoding=“utf-8"?> <RelativeLayout android:id="@+id/activity_main" 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:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="net.nonylene.myslack.MainActivity"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Hello World!"/> </RelativeLayout> શମͷϨΠΞτ
งғؾ * activity_main.xml <?xml version="1.0" encoding=“utf-8"?> <RelativeLayout android:id="@+id/activity_main" 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:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="net.nonylene.myslack.MainActivity"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Hello World!"/> </RelativeLayout> 5FYUදࣔ
งғؾ
ϨΠΞτͷجૅࣝ
"UUSJCVUFT ଐੑ w 9.-ͷه๏ w ཁૉʹରͯ͠ଐੑͷใΛՃ͑Δ w "OESPJEͰ“android:”͔Β࢝ΊΔ w l໊લۭؒzͱ͍͏
w *%&Ͱ͏BUUSCVUFT“tools:” w 4VQQPSU-JCSBSZͰ“app:” ͕ଟ͍
* activity_main.xml <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" tools:context="net.nonylene.myslack.MainActivity" …> <TextView
android:text="Hello World!" …/> </RelativeLayout> BOESPJEͱUPPMTΛఆٛ "UUSJCVUFT ଐੑ
* activity_main.xml <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" tools:context="net.nonylene.myslack.MainActivity" …> <TextView
android:text="Hello World!" …/> </RelativeLayout> 3FMBUJWF-BZPVUʹଐੑΛՃ "UUSJCVUFT ଐੑ
5FYU7JFXʹଐੑΛՃ * activity_main.xml <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" tools:context="net.nonylene.myslack.MainActivity" …>
<TextView android:text="Hello World!" …/> </RelativeLayout> "UUSJCVUFT ଐੑ
*% w 7JFXΛଞͷॴ +BWBଞͷ7JFX ͔Βࢀ র͢ΔͨΊͷ*% w ֤ϨΠΞτ͝ͱʹҰҙ
*% * activity_main.xml <RelativeLayout android:id="@+id/activity_main" …> <TextView android:id="@+id/text_view" android:layout_alignParentTop="@id/activity_main" …/>
</RelativeLayout> ϨΠΞτ*%ͷఆٛ ! JE
*% * activity_main.xml <RelativeLayout android:id="@+id/activity_main" …> <TextView android:id="@+id/text_view" android:layout_alignParentTop="@id/activity_main" …/>
</RelativeLayout> ϨΠΞτ*%ͷ༻ !JE
3Ϋϥε w +BWB͔ΒϨΠΞτͷ7JFX֤छϦιʔε Λࢀর͢ΔͨΊͷΫϥε w ϑΝΠϧ໊ɾ*%໊͔ΒࣗಈͰੜ͞ΕΔ
3Ϋϥε • ϨΠΞτ layout/activity_main.xml → R.layout.activity_main • 7JFX@id/text_view → R.id.text_view
• ͦͷଞɺR.string.hoge R.dimen.hoge ͳͲ
* MainActivity.java public class MainActivity extends AppCompatActivity { @Override protected
void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } } MBZPVU
[email protected]
YNMΛදࣔ 3Ϋϥε
[email protected]
ͱఆٛͨ͠จࣈྻΛऔಘ 3Ϋϥε String appName = context.getString(R.string.app_name); ɾ values/strings.xml ʹఆٛ͞Ε͍ͯΔ ɾ
Ϧιʔε͔Βऔಘ͢Δʹ context ͕ඞཁʹͳΔ
EQ w ϨΠΞτͷαΠζʹ༻͍Δ୯Ґ w ͷըૉʹ߹Θ͍ͤͯΔ w EQQYQYQYQYFUDʜ w ࠷ۙQYఔ
TQ w จࣈͷେ͖͞ͷ୯Ґ w ͷϑΥϯτઃఆʹΑͬͯαΠζ͕มΘΔ
جຊతͳଐੑ
XJEUIIFJHIU w 7JFXͷ෯ɾߴ͞ଐੑͰࢦఆ͢Δ w ෯ android:width ɾߴ͞ android:height w
ඞਢཁૉ
XJEUIIFJHIU w ࢦఆʹࡾछྨ͋Δ w EQࢦఆ • match_parent w ͷ7JFXҰഋ·Ͱ͕Δ •
wrap_content w ඞཁͳ͚͕ͩΔ
XJEUIIFJHIU
QBEEJOHNBSHJO w ༨നΛઃఆ͢ΔͨΊͷଐੑ w શମ5PQ #PUUPN 4UBSU &OE ͕ઃఆͰ͖Δ
w ݹ͍Ͱ-FGU3JHIUʹͳΔ w ΞϥϏΞޠͳͲٯ͖ͷݴޠͰಉ͡ʹͳΔ
QBEEJOHNBSHJO • android:padding (Top, Bottom…) w ཁૉͷଆͷ༨ന w എܠͳͲ༨നʹద༻͞ΕΔ w
ΫϦοΫ͢ΔΤϦΞ͕Δ w layout_widthͳͲpaddingΛؚΉ
QBEEJOHNBSHJO • android:layout_margin (Top…) w ཁૉͷ֎ଆͷ༨ന w എܠͳͲ༨നʹద༻͞Εͳ͍ w ΫϦοΫ͢ΔΤϦΞͳͲʹؚ·Εͳ͍
w layout_widthͳͲpaddingΛؚ·ͳ͍
QBEEJOHNBSHJO Cite: https://www.washington.edu/accesscomputing/webd2/student/unit3/module4/lesson1.html
7JTJCJMJUZ • android:visibility • ཁૉͷදࣔɾඇදࣔઃఆ • VISIBLE: ݟ͑ΔʢσϑΥϧτʣ • INVISIBLE:
ݟ͑ͳ͍͕εϖʔεऔΔʢಁ໌ʣ • GONE: ݟ͑ͳ͍͠εϖʔεऔΒͳ͍ʢফڈʣ
[email protected]
• android:layout_gravity w ͷ7JFXʹରͯ͠Ͳͷॴʹஔ͔͘ • hoge|piyo ͷΑ͏ʹॎԣͷҐஔΛࢦఆ • top
/ bottom / start / end / center_horizontal / center_vertical • LinearLayout / FrameLayout ޙड़ Ͱ͏
7JFX(SPVQ
7JFX(SPVQ w ෳͷ7JFXΛแͰ͖Δ7JFX w .*Layoutͱ͍͏໊લ͕ଟ͍ w ·ͣ7JFX(SPVQΛઃஔ͠ɺͦͷதʹ7JFX ΛೖΕ͍ͯ͘
3FMBUJWF-BZPVU w ࢠ7JFXͷஔΛͦΕͧΕͷ7JFXͱͷ ҐஔؔΛఆٛͯ͠͏ w ͜ͷ7JFXͷ্ʹɾͷ7JFXͷఈʹFUDʜ w Կ͠ͳ͍ͱࢠ7JFX͕ࠨ্ʹॏͳ͍ͬͯ͘ w ΧελϜ͍͕͍͢͠উखѱ͍
w ҰͭҰͭઃఆ͢Δඞཁ͕͋Δ
3FMBUJWF-BZPVU <RelativeLayout android:id=“@+id/activity_main" …> <TextView android:layout_alignParentTop=“true" android:id=“@id/piyo” …/> <TextView android:layout_below=“@+id/piyo”
…/> </RelativeLayout>
-JOFBS-BZPVU w هड़͞Εͨॱ൪ʹࢠͷ7JFXΛฒΔ w “android:orientation”Ͱ͖Λࢦఆ • vertical / horizontal σϑΥϧτ
w ΧελϜੑԼ͕Δ͕ศར
-JOFBS-BZPVU <LinearLayout android:orientation=“vertical” …> <TextView …/> <TextView …/> <ImageView …/>
<LinearLayout …/> </LinearLayout>
'SBNF-BZPVU w ॏͶΔ͜ͱʹಛԽͨ͠ϨΠΞτ w ࢠ7JFXಉ࢜ͷҐஔؔઃఆͰ͖ͳ͍ w ͷ7JFX͔ΒͷҐஔͷΈͰࢦఆ • android:layout_gravity Λ༻͍Δ
w ୯७ʹॏͶΔ͚ͩͳΒRelativeΑΓγϯϓϧ
'SBNF-BZPVU <FrameLayout …> <TextView android:layout_gravity=“top|start” …/> <RelativeLayout android:layout_gravity=“bottom|end” …/> </FrameLayout>
FrameLayout LinearLayout (vertical) ※֤ TextView wrap_content, վߦखಈͰૠೖ
͍Ζ͍Ζͳ7JFX
༷ʑͳ7JFX w TextViewจࣈΛදࣔ w EditTextจࣈೖྗཝ w ButtonϘλϯ w ImageViewը૾Λදࣔ w
RecyclerViewϦετදࣔʢޙड़ʣ
͍Ζ͍Ζͳଐੑ w 7JFXʹΑ͍ͬͯΖ͍Ζͳଐੑ͕͋Δ w දతͳͷΛհ͠·͢
͍Ζ͍Ζͳଐੑ • android:text / textColor / textSize w จࣈྻɾจࣈ৭ɾจࣈαΠζΛࢦఆ •
android:background w എܠͷ৭ը૾Λࢦఆ • android:hint w &EJU5FYUʹจࣈΛೖΕΔલͷώϯτΛઃఆ
͍Ζ͍Ζͳଐੑ • android:enabled w ϘλϯͰΫϦοΫͰ͖Δ͔Ͳ͏͔ͳͲ • ଞʹ͍Ζ͍Ζ͋Δ • ࣮ࣗͰ࡞ΕΔ •
͍͍ͨ࣌ʹௐ͍͖ͯ·͠ΐ͏