æšæ¶ãèåãªã³ãã¥ããã£ã
Androidã¢ããªã±ãŒã·ã§ã³ã®éçºã«é¢ããäžé£ã®èšäºã§ã¯ãè€éãªã³ã³ãããŒã«ãçµçããããã®èå³æ·±ãæçšãªãã¯ããã¯ã玹ä»ããŸãã åºæ¬çãªçµçæè¡ãšããããæé©åããé«åºŠãªæ¹æ³ã®äž¡æ¹ãæ€èšããŸããããã«ãããAndroidã¢ããªã±ãŒã·ã§ã³ã®éçºãšä¿å®ã倧å¹
ã«ä¿é²ãããæéãšè²»çšãç¯çŽãããŸãã
æåã®éšåã¯ãåå¿è
ã®éçºè
åãã§ãã Javaã³ãŒãã䜿çšããã«ãç¬èªã®ã³ã³ããŒãã³ãã䜿çšããŠãããªãè€éãªãã¿ã³ã®ã¿ã®ã¬ã€ã¢ãŠããäœæããæ¹æ³ã瀺ããŸãã ãããã®ã¬ã€ã¢ãŠãææ³ã®ç¥èã¯ãä»ã®Androidã³ã³ããŒãã³ããæäœãããšãã«åœ¹ç«ã¡ãŸãã èšäºã®éçšã§ãããããŸãã¯ãã®ä»ã®å®æ°ãå±æ§ãã³ãã³ããªã©ã®æå³ã詳现ã«èª¬æããŸãã ãã ããGoogleã®å
¬åŒããã¥ã¡ã³ããžã®ãªã³ã¯ãæäŸããŸããããã§ã¯ãåãããã¯ã詳现ã«åŠç¿ã§ããŸãã ãã®èšäºã¯ã¬ãã¥ãŒã§ããããã·ã¢èªã«ç¿»èš³ããããã¹ãŠã®ããã¥ã¡ã³ããããã«æã£ãŠãããšããç®æšã¯èšå®ããŠããŸããã ãããã£ãŠãå
¬åŒãœãŒã¹ãç¹ã«ãããã®èšäºãããã§æäŸãããªã³ã¯ã調ã¹ãããšããå§ãããŸãã
ãã®èšäºã§äœããããã§ããïŒ ã¹ããŒããã©ã³ã®ãã¬ãã©ããŒæ©èœãæå¹/ç¡å¹ã«ã§ããã¢ããªã±ãŒã·ã§ã³ãäœæãããšããŸããã¢ããªã±ãŒã·ã§ã³ã«ã¯ããªã³/ãªãããã¿ã³ããããŸãã è§ãäžžãç¬èªã®èæ¯ãšãã¬ãŒã ãæã€ãã¿ã³ãäœæããŸãã ãã¿ã³ããã©ãŒã«ã¹ãåãåããããã¿ã³ãæŒããããšãèæ¯ãšãã¬ãŒã ãå€ãããŸãã ãã¿ã³ã«ã¯ãããã¹ãåãšããã¿ã³ã®ç®çãèŠèŠçã«èª¬æããã¢ã€ã³ã³ããããŸãã æŒããšãããã¹ããšã¢ã€ã³ã³ã®è²ãå€ãããŸãã ä»ã«äœïŒ ãªã³/ãªããã¿ã³ã¯ã¢ããªã±ãŒã·ã§ã³ã§éåžžã«äžè¬çã§ãããããAndroidã«ã¯æ¢ã«ç¶æ
ãä¿å/å€æŽããããã®æ¢è£œã®æ©èœããããŸãã ç¬èªã®èªè»¢è»ãçºæãã代ããã«äœ¿çšããŸãã ãããããã®ç¶æ
ãåæ ããŠãç§ãã¡ã¯èªåã®ã¹ã¿ã€ã«ã«åãããã«èªåã§ããã§ãããã
次ã®ããã«ãªããŸãã


ãã¿ã³ã®å·Šç«¯ã«ã¢ã€ã³ã³ãé
眮ããŸãã ãã¿ã³ã®ããã¹ãã¯ãäžå€®ã«åçŽã«é
眮ãããå·Šã«æ°Žå¹³ã«é
眮ãããŸãã ããããåæã«ãããã¹ãã¯ã¢ã€ã³ã³ã®äžã«ããã¹ãã§ã¯ãããŸããã ãã¿ã³ã®å³ç«¯ã«æ²¿ã£ãŠãé»è©±æ©ã®ã€ã³ãžã±ãŒã¿ããªã³ãŸãã¯ãªãã«åãããŸãã å¿
èŠã«å¿ããŠããã¿ã³äžã®ããã¹ããšã€ã³ãžã±ãŒã¿ãŒã®å³ã¢ã€ã³ã³ã®éã®ã¹ããŒã¹ãã䌞ã³ããŸãã ãã¿ã³ãæŒããšãèæ¯ãç°è²ã«å€ããããã¬ãŒã ãšãã¿ã³äžã®ãã¹ãŠã®èŠçŽ ãçœã«å€ãããŸãã
ããã¯ãã¹ãŠã¬ã€ã¢ãŠãã®ã¿ã§è¡ããŸãã ãªãã³ãŒãã§ã¯ãªãã¬ã€ã¢ãŠããªã®ãïŒ æ£ããèšèšãããããŒãžã¯ç°¡åã«ã¹ã¿ã€ã«èšå®ã§ããŸããã€ãŸããã¹ã¿ã€ã«ãç°¡åã«çœ®ãæããããšã§ãã»ãšãã©èªèã§ããªãã»ã©å€æŽããããšãã§ããŸãã ãŠãŒã¶ãŒã«ãã£ãšå¥œããªã¹ã¿ã€ã«ãéžæããããã«ææ¡ããããšãã§ããŸãã Androidã®ã¹ã¿ã€ã«ã¯ãHTMLã®ã«ã¹ã±ãŒãCSSããŒãã«ã«é¡äŒŒããŠããŸãã
éåžžãã¬ã€ã¢ãŠããœãªã¥ãŒã·ã§ã³ã¯ãã³ãŒãã§å®è¡ãããåæ§ã®ãœãªã¥ãŒã·ã§ã³ãããã³ã³ãã¯ãã§ããããã¹ãããå¯èœæ§ãäœããªããŸãã ãŸããã³ãŒãã䜿çšããªãã»ãšãã©ã®ããŒãžã¯ããã¶ã€ã³ã¢ãŒãã§ïŒã€ãŸããIDEã§çŽæ¥ïŒè¡šç€ºããã³ãããã°ã§ããŸãããã®ãããã¢ããªã±ãŒã·ã§ã³ãå®è¡ãããããããã€ã¡ã³ããåŸ
æ©ãããããå¿
èŠã¯ãããŸããã
ã¢ããªã±ãŒã·ã§ã³ãã¬ãŒã ã¯ãŒã¯ãäœæãã
å®è£
ã«åãââããããŸãããã ãã¢ã³ã¹ãã¬ãŒã·ã§ã³ã«ã¯ãEclipseäžã«æ§ç¯ãããAndroid Developer ToolsïŒADTïŒã䜿çšããŸãã
æ°ãããããžã§ã¯ããäœæããŸãã ãã¡ã€ã«->æ°èŠ-> Androidã¢ããªã±ãŒã·ã§ã³ãããžã§ã¯ãã
ã¢ããªã±ãŒã·ã§ã³åïŒ
MysteriesOfButtonsPart1
ãããžã§ã¯ãåïŒ
MysteriesOfButtonsPart1
ããã±ãŒãžåïŒ
com.mysteriesofbuttons.part1
ä»ã®ãã©ã¡ãŒã¿ãŒã¯ããã©ã«ãã§æ®ãããŸãïŒ

次㞠次ã®ããŒãžã§ãæéãç¯çŽããããã«ãADTã«ãã¹ãã¢ã¯ãã£ããã£ãäœæãããŸãã

次㞠ããã©ã«ãã§ã¯ã¢ã€ã³ã³ãæ®ããŸããããã®å Žåã¯ã¢ã€ã³ã³ã«ã€ããŠã¯èª¬æããŸããã
次㞠空ã®ã¢ã¯ãã£ããã£ãäœæããŸããã€ãŸãããã¹ãŠãããã©ã«ãã§è¡ãããŸãã

次㞠ã¢ã¯ãã£ããã£ã®ååã¯å€æŽãããŸããã

çµãã æåŸã«ãããžãã¹ã«åããããããšãã§ããŸãã
æãã·ã³ãã«ãªãã¿ã³
ã¬ã€ã¢ãŠãã³ãŒãããå§ããŸãããã ãã¡ã€ã«
/res/layout/activity_main.xml
ãéãããã®ãã¹ãŠã®å
容ã次ã®ã³ãŒãã«çœ®ãæããŸãã
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" > <Button android:id="@+id/act_main_btn_telephony" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="" /> </RelativeLayout>
RelativeLayout
åãäºãã«çžå¯Ÿçã«é
眮ãããã¬ã€ã¢ãŠããããšãã°ããã¿ã³ãå¥ã®ãã¿ã³ã®å·ŠåŽã«é
眮ãããªã©ã
RelativeLayout
ã®æäœã®è©³çŽ°ã«ã€ããŠã¯ã
ãã¡ããã芧ãã ãã ã
Button
ã¯ãã¿ã³ã§ãã
android:id
å±æ§ãããã«èšå®ããŸããããã«ãããã¢ããªã±ãŒã·ã§ã³ã§ãããèå¥ã§ããŸãã
@+id/
ãšãã圢åŒã¯ãæ°ããèå¥åããªãœãŒã¹ã«äœæããå¿
èŠãããããšãæå³ããŸãã
@id/
ãæå®ããå Žåãããã¯ãæå®ãããèå¥åãæ¢ã«ãªãœãŒã¹å
ã«ããããšãæå³ããŸãã
ãããŠããŠãŒã¶ãŒã«è¡šç€ºãããããã¹ããèšå®ããŸã
android:text=""
ä»åŸããŠãŒã¶ãŒã«è¡šç€ºããããã¹ãŠã®ããã¹ãã¯ãJavaã³ãŒãã§ã¯ãªãããŒãžã¬ã€ã¢ãŠãã³ãŒãã§ã¯ãªãã
strings.xml
ãªãœãŒã¹ã«ä¿åããŠãã¢ããªã±ãŒã·ã§ã³ãè€æ°ã®èšèªããµããŒãã§ãã
strings.xml
ã«ããå¿
èŠããããŸãã ããã§ã¯ãã¬ã€ã¢ãŠãã®ããã¹ããçŽæ¥æå®ããŠããµã³ãã«ã®èŠèªæ§ãæ¹åããŸãã
RelativeLayout
ãš
Button
äž¡æ¹ã«å±æ§
android:layout_width
ããã³
android:layout_height
ãŸãã ãããã¯ãä»»æã®
View
å¿
é å±æ§ã§ãã ååã瀺ãããã«ããããã¯ããããèŠçŽ ã®å¹
ãšé«ãã瀺ããŸãã ãããã¯ç°ãªãåäœã§èšå®ã§ããŸããããåãã®ãšãããç¹å®ã®ãµã€ãºã¯äœ¿çšããŠããŸããã
match_parent
ããã³
wrap_content
ã䜿çšã
match_parent
ã
match_parent
ã¯ãå¹
ãŸãã¯é«ããèšå®ãããã©ããã«å¿ããŠãèŠçŽ ã芪ãæ°Žå¹³ãŸãã¯åçŽã«å®å
šã«åããå¿
èŠãããããšãæå³ããŸãã
wrap_content
ã¯ãèŠçŽ ã®ãµã€ãºãæå°ã«ããå¿
èŠãããããèŠçŽ ã®ãã¹ãŠã®ã³ã³ãã³ããããã«åãŸãããšãæå³ããŸãã
fill_parent
å®æ°ããã
match_parent
ãããã¯ã
match_parent
ãšãŸã£ããåãããšãæå³ã
match_parent
ã 2ã€ã®åäžã®å®æ°ã䜿çšããçç±
fill_parent
ã¯APIããŒãžã§ã³8ããåã«å°å
¥ãã
fill_parent
ããããŒãžã§ã³8以éã¯éæšå¥šã§ããã䜿çšãæšå¥šããŠããŸããã å®éãè±èªã話ãéçºè
ã«ãšã£ãŠã
match_parent
ã¯
fill_parent
ãããå®æ°ã®æå³ãããæ£ç¢ºã«åæ ããŸãã
Androidã¢ããªã±ãŒã·ã§ã³ã¯éåžžã«ç°ãªãç»é¢ãµã€ãºã®ããã€ã¹ã§å®è¡ãããããããããã®
match_parent
wrap_content
ãš
wrap_content
å¯èœãªéã䜿çšããããããç¹ã§åºå®ãµã€ãºãé¿ããããšããŸãã
ãŠã£ã³ããŠãæŽçãããã®ã§ãActivity
MainActivity.java
ã³ãŒãã«ç§»ããŸãããã
package com.mysteriesofbuttons.part1; import android.app.Activity; import android.os.Bundle; public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } }
ãã®ã³ãŒãã§ã¯ã
setContentView(R.layout.activity_main);
ãšããæå³ã®ããã³ãã³ãã1ã€ã ã衚瀺ãããŠã
setContentView(R.layout.activity_main);
ãã®ã¡ãœããã¯ãã¢ã¯ãã£ããã£ãåäœããããŒãžã¬ã€ã¢ãŠããªãœãŒã¹ãèšå®ããŸãã
ã¢ããªã±ãŒã·ã§ã³ãå®è¡ããŠãäœãèµ·ãã£ãã®ãèŠãŠã¿ãŸãããã

次ã«ãEclipseã§
activity_main.xml
ãã¡ã€ã«ãéãã[
Graphical Layout
]ãã¿ã³ãã¯ãªãã¯ããŸãã

ãšãã¥ã¬ãŒã¿ãšåãè²ã§ãåããµã€ãºã®åããã¿ã³ã衚瀺ãããŸãã ãããèŠãããã ãã«ããšãã¥ã¬ãŒã¿ãèµ·åããŠã¢ããªã±ãŒã·ã§ã³ããããã€ãããã®ãåŸ
ã€å¿
èŠã¯ãããŸããã§ããã æéãç¯çŽããŸãããïŒ ã¬ã€ã¢ãŠãããã®æåã®å©çã å°æ¥çã«ã¯ããšãã¥ã¬ãŒã¿ã䜿çšããã«ãã¹ãŠã®ã¹ãããããã¹ãããã®ã§ã¯ãªããå®æããããŒãžã§ã³ã®ã¿ããã¹ãããŸãã
ããã¹ãã¹ã¿ã€ã«
ããã§ã¯ãã¢ã©ã€ã¡ã³ããè¡ããŸãããã ããã§ããã¿ã³äžã®ããã¹ããäžå€®ã«é
眮ãããŸããã ããã¯ãã¿ã³ã®ããã©ã«ãã®ã¹ã¿ã€ã«ã§ãã ãã ããåçŽæ¹åã®é
眮ãäžå€®ã«ä¿ã¡ãªãããããã¹ããå·Šã«é
眮ããå¿
èŠããããŸãã ã©ããã£ãŠããã®ïŒ ãã¿ã³ã«
android:gravity
å±æ§ãè¿œå ããŸãã
<Button android:id="@+id/act_main_btn_telephony" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="" android:gravity="left|center_vertical" />
ãã®å±æ§ã¯ã1ã€ãŸãã¯2ã€ã®å€ïŒãã®äŸã§ã¯2ïŒãåãããšãã§ããŸãã å€ã¯çžŠæ£ã§åºåãããŸã
|
ããã¯ã©ã®ããã«èŠããŸããïŒ

ããŸããŸãªé
眮ãªãã·ã§ã³ãšãã®æå³ã«ã€ããŠã¯ã
ãã¡ããã芧ãã ããããããã®ãªãã·ã§ã³ããè©ŠããŠã¿ãŠãããã¿ã³ã®å€èŠ³ã«ã©ã®ããã«åœ±é¿ãããã確èªããŠãã ããã ãã¿ã³äžã®ããã¹ãã倪åãŸãã¯æäœã«ããå Žåã¯ã
android:textStyle
䜿çšã
android:textStyle
ïŒäŸ
android:textStyle="bold|italic"
ã ãã¿ã³äžã®ããã¹ãã®ãµã€ãºãå€æŽããå¿
èŠãããå Žåã
android:textSize="24sp"
ãªã©ã®ãã©ã¡ãŒã¿ãŒ
android:textSize
ã§ãã
sp
ã¹ã±ãŒã«ã«äŸåããªããã¯ã»ã«-ç»é¢å¯åºŠãšãã©ã³ããµã€ãºã®èšå®ã«åºã¥ã枬å®åäœã ããã¹ããããŸããŸãªç»é¢ã§åãããã«èŠããã«ã¯ã
sp
ãµã€ãºãèšå®ããããšããå§ãããŸãã
ãããã®ãã©ã¡ãŒã¿ãŒããã¿ã³ã«èšå®ããŸãã
<Button android:id="@+id/act_main_btn_telephony" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="" android:gravity="left|center_vertical" android:textStyle="bold|italic" android:textSize="24sp" />

ã¹ã¿ã€ã«ã¯ããã©ã«ãã®å€ã«è¿ã¥ããã®ã奜ãã§ããã¹ã¿ã€ã«ãé«ã絊æãæã£ããã¶ã€ããŒã«ãã£ãŠæ
éã«éžæãããããã§ããç§ã®å¥œã¿ã®æèŠã§ã¯ãç§ããã£ãšè¯ãã§ãããšã¯æããŸããã ãã®äŸã¯ãèªè
ã«å¯èœãªéãå€ãã®å¯èœæ§ã瀺ãããšãç®çãšããŠãããèžè¡äœåã®ãµãããããã®ã§ã¯ãããŸããããã®ãããèŠæ ããè¯ããªãåã«ããã¯ããªãã§ãã ããã
ãã¿ã³ã«ã¢ã€ã³ã³ã眮ã
ã©ãã 次ã«ããã¿ã³ã«ã¢ã€ã³ã³ãè¿œå ããå¿
èŠããããŸãã ã¢ã€ã³ã³ã¯ã次ã®
icon_phone_normal.png
ãã¡ã€ã«ã«ãã£ãŠèšå®ãããŸãã
ã¯ãªãã¯ããŠããŠã³ããŒãã¢ããªã±ãŒã·ã§ã³ãªãœãŒã¹ã®
drawable-hdpi
ã€ã³ããŒãããŸãã ãã¿ã³ã®ã¢ã€ã³ã³ãèšå®ããã«ã¯ã
android:drawableLeft
å±æ§ãè¿œå ããŸãïŒ
<Button android:id="@+id/act_main_btn_telephony" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="" android:gravity="left|center_vertical" android:textStyle="bold|italic" android:textSize="24sp" android:drawableLeft="@drawable/icon_phone_normal" />

android:drawableLeft
å ããŠããã¿ã³ã®ä»ââã®éšåã«ã¢ã€ã³ã³ãé
眮ããããšã§ã¢ã€ã³ã³ãèšå®ã§ããå±æ§ãããã€ããããŸã
android:drawableTop
ã
android:drawableBottom
ã
android:drawableRight
ã
android:drawableStart
ã
android:drawableEnd
ã
ãæ°ã¥ãã®ããã«ã
PNG
æ¡åŒµåãš
-hdpi
ãµãã£ãã¯ã¹ã®ãªãã¢ã€ã³ã³ãžã®ãã¹ã瀺ããŸããã ããã¯ã¿ã€ããã¹ã§ã¯ãããŸããã èå¥ååã«ããªãªããå«ããããšã¯ã§ããªããããæ¡åŒµåã¯æå®ãããŸããã
-hdpi
æ¥å°ŸèŸã¯ãAndroidã«ãã£ãŠèªåçã«çœ®ãæããããŸããããã¯ã
icon_phone_normal
ã¢ã€ã³ã³ãæã€å¯äžã®
drawable
ãã£ã¬ã¯ããªã§ãããã
icon_phone_normal
ã ããšãã°ãã¢ã€ã³ã³ã
drawable-hdpi
ã ãã§ãªã
drawable-hdpi
drawable-mdpi
ã«ãããå ŽåãAndroidã¯ã¢ããªã±ãŒã·ã§ã³ãå®è¡ãããŠããããã€ã¹ã®ç»é¢è§£å床ã«æé©ãªã¢ã€ã³ã³ãéžæããŸãã ãã®ãããããŸããŸãªãµã€ãºãšç»é¢å¯åºŠã®ããã€ã¹ã§åãããã«èŠããé«å質ã®è£œåãæäŸã§ããŸãã Googleã«ã¯ããã«ãã¹ã¯ãªãŒã³ãµããŒãã«é¢ããéåžžã«åªãã
èšäºããããŸãã
ãã¿ã³ã®ã«ã¹ã¿ã èæ¯ã
æç»å¯èœãªãªãœãŒã¹ãããã£ãã®ã§ããã¿ã³ã®èæ¯ãå¿
èŠãªãã®ã«çœ®ãæããŸãããã ãããè¡ãã«ã¯ã次ã®
button_normal.png
ç»åã䜿çšããŸãã
ã¯ãªãã¯ããŠããŠã³ããŒãdrawable-hdpi
ã€ã³ããŒãããŸãã ãã®å³ã§ã¯ãç»é¢ã®åå¢çã«æ²¿ã£ãŠé»ãããŒã衚瀺ãããŠããŸãã ãããã¯ãAndroidãå¿
èŠãªãµã€ãºã«ç»åãæ£ããæ¡å€§ããããšãä¿èšŒããã®ã«åœ¹ç«ã¡ãŸãã å·Šãšäžã®ç·ã¯ãç»åã®ã©ã®é åãããããåçŽæ¹åãšæ°Žå¹³æ¹åã«äŒžã³ããã瀺ããŠããŸãã ãŸããå³ãšäžã®è¡ã¯ãåãååšããå ŽåãèŠçŽ ã®ã³ã³ãã³ãã«åãããŠã¹ãã¬ããç»åã®ã©ã®é åã«åãŸããã瀺ããŠããŸãã åæã«ãé»ãç·èªäœã¯ç¢ºãã«çµæã®ç»åã«è¡šç€ºãããŸããã
ããã¯9ãããããã¢ãã«ãšåŒã°ã
ãŸãããã®ã¬ã€ã¢ãŠãææ³ã®
詳现ã«ã€ããŠã¯ã
ãã¡ããã芧ãã ããããªãœãŒã¹ã9ããããšèŠãªãããããã«ã¯ãæ¡åŒµæ©èœã®åã«ååã9ã€ãããæ®ãã®ååãšã¯å¥ã®ãããã§
button_normal.9.png
ããŠããå¿
èŠããããŸã
button_normal.9.png
èŠçŽ ã«ãã®ãããªäŒžçž®å¯èœãªèæ¯ãå²ãåœãŠãæ¹æ³ã¯ïŒ ãã¿ã³ã®ããã¹ããéãã
android:background
å±æ§ãè¿œå ããŸãã
<Button android:id="@+id/act_main_btn_telephony" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="" android:gravity="left|center_vertical" android:textStyle="bold|italic" android:textSize="24sp" android:drawableLeft="@drawable/icon_phone_normal" android:background="@drawable/button_normal" />

ãã¿ã³ãç»é¢ã®ç«¯è¿ãã§ãæŒãããããããããŸãçŸãããããŸããã ããã¯ãç¬èªã®èæ¯ã«å€æŽããããã©ã«ãã®èæ¯ã§ã¯ããã¿ã³ãã¬ãŒã ãã€ã³ãã³ããããŠãããåã®ã¹ã¯ãªãŒã³ã·ã§ããã§ãã®ã€ã³ãã³ããèŠãããããã«çºçããŸããã ãã¿ã³ã®èæ¯ãåæç»ããããšãã§ããŸãããå¥ã®æ¹æ³ã§ã€ã³ãã³ãããããšãã§ããŸãããŸãããŠã£ã³ããŠã®ãã¹ãŠã®èŠçŽ ã«å¯ŸããŠäžåºŠã«ã³ãŒããè€è£œããªãããã«ããããšããå§ãããŸãã
RelativeLayout
ã¿ã°ã®
android:padding
å±æ§ã¯ããã«é©ããŠããŸãïŒ
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:padding="6dp" >

dp
ãšã¯äœã§ããïŒ å¯åºŠã«äŸåããªããã¯ã»ã«-ç»é¢ã®ãã¯ã»ã«å¯åºŠãç°ãªãããã€ã¹äžã§èªåçã«ã¹ã±ãŒãªã³ã°ãããèŠçŽ ãåãããã«èŠãã尺床ã ç¹å®ã®ãµã€ãºãèšå®ããå¿
èŠãããå Žåã¯ãåžžã«
px
ã§ã¯ãªã
dp
䜿çšããŠãã ãããããããªããšãã¢ããªã±ãŒã·ã§ã³ã¯æºåž¯é»è©±ã§ã®ã¿é©åã«è¡šç€ºãããŸãã
android:padding
å±æ§ã¯ããã¹ãŠã®åŽé¢ã«åãããã£ã³ã°ãèšå®ããŸãã äž¡åŽã«ç°ãªãã€ã³ãã³ããåå¥ã«èšå®ããå Žåã¯ãå±æ§
android:paddingLeft
ã
android:paddingRight
ã
android:paddingTop
ã
android:paddingBottom
ã
android:paddingStart
ããã³
android:paddingEnd
ãŸãã
ãããŸã§èª¿ã¹ãŠããå±æ§ã¯ããã¿ã³ã ãã§ãªããä»ã®èŠçŽ ã«ãåœãŠã¯ãŸããŸãã ããšãã°ã
android:background
ã¯ãã¹ãŠã®å¯èŠèŠçŽ ãããã
android:drawableLeft
ã¯
TextEdit
ãããŸãã
ã©ãã ã¢ããªã±ãŒã·ã§ã³ãèµ·åãããšããã¿ã³ãã¯ãªãã¯ãããŠãå€èŠ³ããŸã£ããå€ãããªããã€ãŸãããã¿ã³ãæŒãããŠãããã©ãããèŠèŠçã«èŠããªãããšãããããŸãã ãŠãŒã¶ãŒã¯ã¢ããªã±ãŒã·ã§ã³ãåäœããŠãããã©ãããç解ã§ããªãããããã®ãã©ãŒã ã«ãã¿ã³ãæ®ãããšã¯ã§ããŸããã
Androidã§ç¶æ
ãæäœãã
ããã§åœå®¶ãå©ãã«ãªããŸãã ãã¿ã³ã«äœãèµ·ãããªãå ŽåãæŒãããç¶æ
ã§ã¯ãããŸããã ãã¿ã³ã«å
¥åãã©ãŒã«ã¹ãããå Žåã
state_focused
ç¶æ
ã«ãªããŸãã æã§ãã¿ã³ãã¯ãªãã¯ãããšãæãé¢ããŸã§ãã¿ã³ã¯
state_pressed
ç¶æ
ã«ãªããŸãã ããã¯ã©ã®ããã«åœ¹ç«ã¡ãŸããïŒ åç¶æ
ã®èŠçŽ ã®å€èŠ³ãåå¥ã«èšå®ã§ããŸãã ããã«ããããã©ã®ããã«è¡ããããã詳现ã«æ€èšããŸãã ç¶æ
ã¯ãã¢ã€ã³ã³ãåçãåã
ã®è²ãªã©ããŠãŒã¶ãŒã«è¡šç€ºããããã¹ãŠã®ãã®ãæç»ããããã«äœ¿çšã§ããããšã«æ³šæããŠãã ããã
èæ¯ããå§ããŸãããã ãã¿ã³ã«ãã©ãŒã«ã¹ãããå Žåã¯ãã¿ã³ã«èµ€ããã¬ãŒã ãèšå®ãããã¿ã³ãæŒãããŠããå Žåã¯è²ãå転ãããã¬ãŒã ãèšå®ããŸãã ãããè¡ãã«ã¯ã次ã®ç»åã
drawable-hdpi
ãã£ã¬ã¯ããªã«ã€ã³ããŒãããŸãã
ã¯ãªãã¯ããŠããŠã³ããŒã
ã¯ãªãã¯ããŠããŠã³ããŒãããã§ã3ã€ã®ç¶æ
ã®3ã€ã®èæ¯ç»åãã§ããŸããã ãã ãã
android:background
å±æ§ã¯äžåºŠããèšå®ã§ããŸããã ãã®ç¶æ³ããæãåºãããã«ã3ã€ã®ç»åãçµã¿åãããæ°ããã»ã¬ã¯ã¿ãŒæç»å¯èœãªãœãŒã¹ãäœæããŸãã
drawable-hdpi
å³ã¯ãªãã¯ããŠã
drawable-hdpi
>ãAndroid XMLãã¡ã€ã«ããéžæããŸãã ãã¡ã€ã«å
button_background
ã
button_background
ããã«ãŒãèŠçŽ
selector
ãŸãã

çµãã
次ã®ã³ã³ãã³ãã®ç©ºçœãåãåããŸããã
<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android" > </selector>
state_focused
ããã³
state_pressed
ç¶æ
ã®ç»åãã»ã¬ã¯ã¿ãŒã«è¿œå ããŸãã
<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android" > <item android:drawable="@drawable/button_pressed" android:state_pressed="true" /> <item android:drawable="@drawable/button_focused" android:state_focused="true" /> <item android:drawable="@drawable/button_normal" /> </selector>
button_normal
ãã¯ãã£ã®
button_normal
ç¶æ
ã¯ç€ºãããªãããšã«æ³šæããŠãã ããã ããã¯ããã¿ã³ã
state_focused
ãŸãã¯
state_pressed
ãªãå Žåããã®ãããªç»åãåžžã«äœ¿çšãããããšãæå³ããŸãã èæ
®ãããç¶æ
ã«å ããŠãããã«ããã€ãã䜿çšã§ããŸããå®å
šãªãªã¹ãã¯
ããã§èª¬æãããŠã
ãŸãã»ã¬ã¯ã¿ã¯ã©ã®ããã«æ©èœããŸããïŒ ã»ã¬ã¯ã¿ãŒãèŠçŽ ã«å²ãåœãŠããããšãåžžã«ãã¹ãèŠçŽ ã®ç¶æ
ãåãåãããªã¹ããããæåã®ãªãœãŒã¹ïŒææè
ã®ç¶æ
ã«å¯Ÿå¿ããïŒã«æ»ããŸãã
ã¬ã€ã¢ãŠã
activity_main.xml
ããã¹ããéãããã¿ã³ã®èæ¯ã
button_background
眮ãæããŸãã
<Button android:id="@+id/act_main_btn_telephony" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="" android:gravity="left|center_vertical" android:textStyle="bold|italic" android:textSize="24sp" android:drawableLeft="@drawable/icon_phone_normal" android:background="@drawable/button_background" />
ãŸããæŒããããã¿ã³ã®çœããã¬ãŒã ãèŠãããããããã«ããŠã£ã³ããŠå
šäœã®èæ¯ãæãããŸãã
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:padding="6dp" android:background="#dddddd" >
ãšãã¥ã¬ãŒã¿ã§ã¢ããªã±ãŒã·ã§ã³ãå®è¡ãããã¿ã³ãæŒããšãèæ¯ãå€æŽãããŠããããšãããããŸãã

æŒããããšãã«ã¢ã€ã³ã³ãå€æŽãã
ãã§ã«æªãã¯ãªãããããè¯ãã ã»ã¬ã¯ã¿ãŒãäœæããããã»ã¹ãç¹°ãè¿ããŠãæŒãããšãã«é»è©±ã¢ã€ã³ã³ãå€æŽããŸãããã
drawable-hdpi
ã¢ã€ã³ã³ã
drawable-hdpi
ã€ã³ããŒã
drawable-hdpi
ãŸãã
ã¯ãªãã¯ããŠããŠã³ããŒã次ã®ããã¹ããå«ã
icon_phone
ã»ã¬ã¯ã¿ãŒãäœæããŸãã
<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android" > <item android:drawable="@drawable/icon_phone_pressed" android:state_pressed="true" /> <item android:drawable="@drawable/icon_phone_normal" /> </selector>
ãã¿ã³ã®ããã¹ãã§ã
icon_phone
æ°ãã
icon_phone
ã»ã¬ã¯ã¿ãŒã«çœ®ãæããŸãã
<Button android:id="@+id/act_main_btn_telephony" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@drawable/button_background" android:drawableLeft="@drawable/icon_phone" android:gravity="left|center_vertical" android:text="" android:textSize="24sp" android:textStyle="bold|italic" />

æŒããããšãã«ããã¹ãã®è²ãå€æŽãã
èæ¯ãšåãããã«ãã¿ã³ãã¯ãªãã¯ãããšãã¢ã€ã³ã³ãå€ãããŸãã ããã¹ãã®è²ãåŠçããããã«æ®ããŸãã 圌ã¯ã©ããªç¶æ
ã§ãé»ã®ãŸãŸã§ãã æŒããããã©ãŒã ã§ããã¬ãŒã ãšã¢ã€ã³ã³ã®ããã«ããã¹ããçœã«ãªã£ãå Žåããã¿ã³ã¯ãã£ãšé¢çœãèŠããŸãã
ã«ã©ãŒãããžã¡ã³ãã¯åçãšã¯å°ãç°ãªããŸãã é çªã«è¡ããŸãããã ãŸããäœæããå¿
èŠãããå¥ã®ãã£ã¬ã¯ããªã«è²ãä¿åãããŸãã
drawable-hdpi
ãµããã£ã¬ã¯ããªãšåãã¬ãã«ã§ã
res
ãã£ã¬ã¯ããªã«
color
ãµããã£ã¬ã¯ããªãè¿œå ã
color
ã

次ã«ã
color
ãã£ã¬ã¯ããªã§ã
text_color
ãšããååãšã«ãŒãèŠçŽ
selector
䜿çšããŠAndroid XMLãã¡ã€ã«ãäœæããŸãã

ãããŠããã®å
容ã次ã®ãã®ã«çœ®ãæããŸãã
<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:color="@android:color/white" android:state_pressed="true" /> <item android:color="#484848" /> </selector>
åçãšåæ§ã«ã
state_pressed
ç¶æ
ãšããã©ã«ãç¶æ
ã®è²ã¯ããã§èšå®ãããŸãã è²ã¯2ã€ã®æ¹æ³ã§èšå®ãããŸãïŒ
android:color="@android:color/white"
and
android:color="#484848"
æåã®ã±ãŒã¹ã§ã¯ã
android
åå空éã§äºåã«äœæãããè²ã䜿çšããŸãã 2çªç®ã§ã¯ãè²ã®RGBå€ã16é²æ°ã§ç€ºããŸãã ãã®å ŽåãæŒãããŠããªããšãã®ããã©ã«ãã®è²ããã¬ãŒã ã®è²ãšåãã«èšå®ããŸãã
ããã§ã¯ããã¿ã³ã®ãœãŒã¹ã«æ»ã£ãŠã
android:textColor="@color/text_color"
ããã¹ãã®è²ãæžããŸããã
android:textColor="@color/text_color"
ïŒ
<Button android:id="@+id/act_main_btn_telephony" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@drawable/button_background" android:drawableLeft="@drawable/icon_phone" android:gravity="left|center_vertical" android:text="" android:textSize="24sp" android:textStyle="bold|italic" android:textColor="@color/text_color" />
çŸåšãã°ã©ãã£ã«ã«ã¬ã€ã¢ãŠãã§çµæã確èªã§ããŸãããããã¯ãã©ã°ã€ã³ã®æ¢ç¥ã®åé¡ã§ãããGoogleããã€ãä¿®æ£ããããšãé¡ã£ãŠããŸãã æ®å¿µãªããããšãã¥ã¬ãŒã¿ãŸãã¯å®éã®ããã€ã¹ã§ã®ã¿ã¹ããŒã¿ã¹ä»ãã®è²ããã¹ãã§ããŸãã
ããã§ãã¬ã€ã¢ãŠãã®èžè¡çãªéšåãå®æããŸããã ããã§ããã¿ã³ã¯æ¬¡ã®ããã«ãªããŸãã

ãã°ã«ãã¿ã³ãçãã
次ã«ããã¿ã³ã«ãã¬ãã©ããŒã¹ããŒã¿ã¹ã衚瀺ããæ¹æ³ïŒãªã³/ãªãïŒã«ã€ããŠèª¬æããŸãã ãã¿ã³ã«ã¯ãå·ŠåŽã ãã§ãªãã¢ã€ã³ã³ã衚瀺ã§ããããšãèŠããŠããŸãã çŸåšã®ç¶æ
ã衚瀺ããã«ã¯ãå³åŽã®ãã¿ã³ã«ã¢ã€ã³ã³ãè¿œå ããŸãã Onç¶æ
ã®ãã§ãã¯ããŒã¯ãšOffç¶æ
ã®ã¯ãã¹ã«ããŸãã ã¢ã€ã³ã³ãã©ã®ããã«å€æŽããŸããïŒ æãæçœãªãªãã·ã§ã³ã¯ã
OnClickListener
ã€ãã³ã
OnClickListener
ãå®çŸ©ãã
OnClickListener
ã¢ã€ã³ã³ã
drawableRight
å€æŽããããšã§ãã ããã¯æå¹ãªãªãã·ã§ã³ã§ãã ããããããŒãžäžã«ãã¿ã³ã1ã€ã§ã¯ãªã10åãããäžè¬ã«ãã¿ã³ããã®ããŒãžäžã«ããå Žåã¯ã©ãããã°ããã§ããããã 次ã«ãç§ãã¡ã®ãã¹ã¯ã³ãŒãã®è€è£œã«ã€ãªãããŸããããã¯ãæãçŸãããœãªã¥ãŒã·ã§ã³ã§ã¯ãªããããã¢ã¯ãã£ããã£ããå¥ã®ã¢ã¯ãã£ããã£ã«ã³ããŒã¢ã³ãããŒã¹ãããŸãã ãŸããäœããå€æŽããå¿
èŠãããå Žåã¯ãå€ãã®å Žæã§å€æŽããå¿
èŠããããŸãã ãããé¿ãããã§ãã
幞ããªããšã«ãAndroidã¯ãã®ç®çã®ããã«
ToggleButton
ãšããç¹å¥ãªã³ã³ããŒãã³ããæäŸããŠããŸãã ãã®ãã¿ã³ã«ã¯ããªã³ãšãªãã®2ã€ã®ç¶æ
ããããŸãã ã¬ã€ã¢ãŠãã®
Button
ã¿ã°ã
ToggleButton
眮ãæããŸãã
<ToggleButton android:id="@+id/act_main_btn_telephony" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@drawable/button_background" android:drawableLeft="@drawable/icon_phone" android:gravity="left|center_vertical" android:text="" android:textSize="24sp" android:textStyle="bold|italic" android:textColor="@color/text_color" />
ToggleButton
Button
ããç¶æ¿ãããããããã¹ãŠã®
Button
å±æ§ãé©çšãããŸããããã¥ã¢ã³ã¹ããããŸãã
ToggleButton
ã¯
text
å±æ§ãç¡èŠã
text
ãã2ã€ã®æ°ããå±æ§ã
textOn
ãš
textOff
ãŸãã ãããã¯ããããããªã³ç¶æ
ãšãªãç¶æ
ã®ããã¹ããèšå®ããŸãã ããããç¶æ
ãåçã§è¡šç€ºããããã¹ãã¯ãã®ãŸãŸã«ããŠãããŸãã ãããã£ãŠãäž¡æ¹ã®å±æ§ã«ããã¹ããæžã蟌ã¿ãäžèŠãª
text
å±æ§ãåé€ã
text
ã
<ToggleButton android:id="@+id/act_main_btn_telephony" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@drawable/button_background" android:drawableLeft="@drawable/icon_phone" android:gravity="left|center_vertical" android:textOn="" android:textOff="" android:textSize="24sp" android:textStyle="bold|italic" android:textColor="@color/text_color" />
次ã«ããã¿ã³ã®ç¶æ
ã衚瀺ããããã®åçãæºåããŸãã
icon_on_normal.png
ã
icon_on_pressed.png
ã
icon_off_normal.png
ããã³
drawable-hdpi
ãªãœãŒã¹ã
drawable-hdpi
ïŒãªã¹ãé ã«è¡šç€ºãããŸãïŒã
ã¯ãªãã¯ããŠããŠã³ããŒã
ã¯ãªãã¯ããŠããŠã³ããŒã
ã¯ãªãã¯ããŠããŠã³ããŒã
ã¯ãªãã¯ããŠããŠã³ããŒã泚æ ïŒéæãªèæ¯ã®çœãã¢ã€ã³ã³ã¯ãçœãèæ¯ã®ãã©ãŠã¶ãŒã§ã¯ããŸãèŠããŸããã
ãªã4ã€ã®ã¢ã€ã³ã³ãªã®ãïŒ ãŠãŒã¶ãŒããã¿ã³ãæŒãããšãã«ãã¿ã³ã®ãã¹ãŠã®èŠçŽ ãçœã§è¡šç€ºãããããšãæãåºããŠãã ããã ãããã£ãŠããªã³ç¶æ
ãšãªãç¶æ
ããšã«ã2ã€ã®ã¢ã€ã³ã³ãæŒããŠãªãªãŒã¹ããå¿
èŠããããŸãã åèš4ã€ã
icon_on_off
ãšããååã®æ°ãã
drawable
ã»ã¬ã¯ã¿ãŒãäœæããŸãã
<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android" > <item android:drawable="@drawable/icon_on_pressed" android:state_checked="true" android:state_pressed="true" /> <item android:drawable="@drawable/icon_on_normal" android:state_checked="true" /> <item android:drawable="@drawable/icon_off_pressed" android:state_checked="false" android:state_pressed="true" /> <item android:drawable="@drawable/icon_off_normal" android:state_checked="false" /> </selector>
ããã§ãã³ã³ããŒãã³ãã¯äžåºŠã«è€æ°ã®ç¶æ
ãæã€ããšãã§ããããšãããããŸããããšãã°ãããŒã¯ãä»ããŠåæã«æŒãããããŒã¯ãä»ããŠæŒããŠããªããªã©ã§ãã
android:state_checked="true"
ã¯ãªã³ã¢ãŒãã®ãã¿ã³ã«å¯Ÿå¿ãã
android:state_checked="false"
ã¯ãªãã¢ãŒãã®ãã¿ã³ã«å¯Ÿå¿ããŸãã
次ã«ããã¿ã³ã«æ»ãã
android:drawableRight="@drawable/icon_on_off"
å±æ§ãè¿œå ããŸã
android:drawableRight="@drawable/icon_on_off"
ã æ確ã«ããããã«ã
android:drawableLeft
çŽåŸã«ãããè¿œå ããŸãã
android:drawableLeft
ïŒ
<ToggleButton android:id="@+id/act_main_btn_telephony" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@drawable/button_background" android:drawableLeft="@drawable/icon_phone" android:drawableRight="@drawable/icon_on_off" android:gravity="left|center_vertical" android:textOn="" android:textOff="" android:textSize="24sp" android:textStyle="bold|italic" android:textColor="@color/text_color" />
ã¢ããªã±ãŒã·ã§ã³ãå®è¡ãããšäœãåŸãããŸããïŒ ãªãã¢ãŒãã§ã¯ããã¿ã³ã¯æŒãããŠããŸããã ããã«ãé·æŒããããšããã¹ãŠã®èŠçŽ ãç°è²ã®èæ¯ã«çœã§è¡šç€ºãããŸãã

ãã¿ã³ãé¢ããšãã¹ããŒã¿ã¹ãæå¹ã«å€ãããŸãã ããäžåºŠã¯ãªãã¯ãããšãç°è²ã®èæ¯ãšçœãã¢ã€ã³ã³ãåã³è¡šç€ºããããã®åŸãç¶æ
ã¯åã³ãªãã«ãªããŸãã

ãŸãã«å¿
èŠãªãã®ã
ããã€ãã®ã³ãŒã
念ã®ããããã¿ã³ããªã³ããªãããã¢ããªã±ãŒã·ã§ã³ã®ã³ãŒãã§ã©ã®ããã«ç解ã§ãããèŠãŠã¿ãŸãããããããè¡ãããã«ãisChecked()
ãã¿ã³ã®å€ãåæã§ããŸãïŒtrue
-ãªã³ãfalse
-ãªããandroid:onClick="onToggleButtonClick"
ãã¿ã³ã«å±æ§ãè¿œå ããŸãã <ToggleButton android:id="@+id/act_main_btn_telephony" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@drawable/button_background" android:drawableLeft="@drawable/icon_phone" android:drawableRight="@drawable/icon_on_off" android:gravity="left|center_vertical" android:textOn="" android:textOff="" android:textSize="24sp" android:textStyle="bold|italic" android:textColor="@color/text_color" android:onClick="onToggleButtonClick" />
MainActivity.java
é©åãªã¡ãœãããè¿œå ããŸãã package com.mysteriesofbuttons.part1; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.widget.Toast; import android.widget.ToggleButton; public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } public void onToggleButtonClick(View button) { Toast.makeText( getApplicationContext(), Boolean.toString(((ToggleButton) button).isChecked()), Toast.LENGTH_SHORT).show(); } }
ã¢ããªã±ãŒã·ã§ã³ãå®è¡ããæŒããæã
ã¯ç»é¢ã®ããã¹ãããã³ããã®äžéšã«è¡šç€ºãããŸãtrue
/ false
ããããŠãããã¯ãã¹ãŠãæ©èœããããšãæå³ããŸãããããã«
ã芧ã®ãšãããAndroidã®ã¬ã€ã¢ãŠãæ©èœã¯éåžžã«è±å¯ã§ãããã®èšäºã§ã¯ããã³ããé€ããã¹ãŠã®æ©èœãã¬ã€ã¢ãŠãã§ã®ã¿å®è£
ãããŠããŸããããããããã¯ãã¹ãŠãšã¯çšé ãããã®èšäºã§ã¯ãXMLã³ãŒãã¯æå³çã«äžå®å
šãªãŸãŸã«ããŠããŸããåºæ¬çãªã¬ã€ã¢ãŠããªãã·ã§ã³ãšé«åºŠãªæé©åã®æ€èšã¯ã2ã€ã®ç°ãªããããã¯ã§ãããã¡ãããæ¬ç©ã®é人ã¯ããã«æé©ã«æžãã¹ãã§ãããããããã®èšäºã«ã¯æè²äžã®ç®æšããããåå¿è
ã®éçºè
åãã«èšèšãããŠãããããåŸã
ã«è€éã«ããããšã«ããŸãããAndroidã®ã¬ã€ã¢ãŠãæé©åã®äŸãæ€èšããããã«çããã«å§ããŸãããã®èšäºã®ç¬¬2éšãèªãã§è°è«ããããšãå§ããŸãããã®äžã§ã次ã®ãããã¯ãæ€èšããŸãã- æååãªãœãŒã¹ã®äœ¿çš
strings.xml
- ã«ã¹ã¿ã ã¹ã¿ã€ã«
styles.xml
ãšã¹ã¿ã€ã«ã®ç¶æ¿ - ãããã¯ã¹
- ãã£ã¡ã³ã·ã§ã³ãªãœãŒã¹
dimens.xml
ãããã®è³ªåã¯ãèšäºã®æåã®éšåããã®ã³ãŒãæé©åã®äŸã«ãã£ãŠç 究ãããŸãããããŸã§ã®éãç§ã®èšäºãèªãã§ããããã¹ãŠã®äººã«æè¬ããŸããç§ã¯äœãæ°ãããã®ãèŠããããšãã§ãããšæããŸãããã£ãŒãããã¯ãšã³ã¡ã³ããåŸ
ã£ãŠããŸãã䟿å©ãªãªã³ã¯