Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

日本Androidの会 中国支部資料

4,522 views

Published on

Published in: Technology
  • Be the first to comment

日本Androidの会 中国支部資料

  1. 1. 尾道にて Now Loading. Please Wait ... Twitter @yokmama 最新Androidアプリ開発の心得 夜子まま 日本Androidの会神戸支部 http://www.slideshare.net/yokmama/android-15186487 Re:Kayo-System Co.,Ltd.12年11月16日金曜日
  2. 2. 自己紹介 本名  :寺園聖文(てらぞの まさふみ) 別名  :夜子まま 肩書  :株式会社Re:Kayo-System 代表取締役社長 クラスタ:日本Androidの会、関西Unity、NFCLab Re:Kayo-System Co.,Ltd.12年11月16日金曜日
  3. 3. 著書 10日でおぼえる Androidアプリ開発入門教室 Androidタブレットアプリ開発ガイド Android SDK 3対応 HTML5によるAndroidアプリ開発入門 10日でおぼえるAndroidアプリ開発入門 教室 第2版 AndroidSDK 4/3/2対応 Re:Kayo-System Co.,Ltd.12年11月16日金曜日
  4. 4. ふりがなオートマチック Re:Kayo-System Co.,Ltd.12年11月16日金曜日
  5. 5. 猫語にゃん Re:Kayo-System Co.,Ltd.12年11月16日金曜日
  6. 6. Skip Memo Re:Kayo-System Co.,Ltd.12年11月16日金曜日
  7. 7. JUST PLAYER http://justplayer-dev.blogspot.jp/ Re:Kayo-System Co.,Ltd.12年11月16日金曜日
  8. 8. 講義の内容 以前のUI開発 最近のUI開発 まとめ Re:Kayo-System Co.,Ltd.12年11月16日金曜日
  9. 9. 以前のUI開発 Re:Kayo-System Co.,Ltd.12年11月16日金曜日
  10. 10. UI作成のフロー レイアウトファイル Activityクラス AndroidManifest.xml Re:Kayo-System Co.,Ltd.12年11月16日金曜日
  11. 11. 煩雑なレイアウトファイル <?xml version="1.0" encoding="utf-8"?> <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center_horizontal" android:orientation="vertical" > <ImageView android:id="@+id/imageAlbumArt" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_gravity="top" android:focusable="false" android:gravity="top" android:layout_margin="5dip" android:scaleType="fitStart" /> <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_gravity="center_horizontal|bottom" android:clickable="true" android:orientation="vertical" > <TextView android:id="@+id/textTitle" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:layout_marginLeft="10dip" android:layout_marginRight="10dip" android:ellipsize="end" android:singleLine="true" android:text="title" android:textColor="@color/white" android:textSize="20sp" /> <TextView android:id="@+id/textArtist" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:layout_marginLeft="10dip" android:layout_marginRight="10dip" android:ellipsize="end" android:singleLine="true" android:text="artist" android:textSize="20sp" /> ・ ・ </FrameLayout> ・ Re:Kayo-System Co.,Ltd.12年11月16日金曜日
  12. 12. 煩雑な管理 Activity用のレイアウト 要素単位のレイアウト 端末種別毎のレイアウト ・ ・ ・ Re:Kayo-System Co.,Ltd.12年11月16日金曜日
  13. 13. 煩雑なクラス 初期化処理 public class MainActivity extends Activity implements OnClickListener { public static final String CNF_PASS_LOOP = "chkPassLoop"; public static final String CNF_WIFI_ONLY = "chkWIFIOnly"; private final String KEY_CONFIG_HISTORY = "KEY_CONFIG_HISTORY"; private final int MAX_INSTANCE = 5; private private private SharedPreferences mPref; EditText mEditHost; EditText mEditUsername; イベント処理 private EditText mEditPassword; private CheckBox mChkPassLoop; 一次保存処理 private CheckBox mChkWIFIOnly; private Spinner mSpinner; private Button mBtnConnect; private void btnStateCheck() { mBtnConnect.setText(R.string.txt_connect); Button btnAllSync = (Button) findViewById(R.id.btnAllSync); Button btnMediaSync = (Button) findViewById(R.id.btnMediaSync); Button btnVideosSync = (Button) findViewById(R.id.btnVideosSync); 非同期処理 btnMediaSync.setEnabled(false); btnVideosSync.setEnabled(false); btnAllSync.setEnabled(false); ・ } ・ private void btnStateOk() { mBtnConnect.setText(R.string.txt_connected); ・ Button btnAllSync = (Button) findViewById(R.id.btnAllSync); Button btnMediaSync = (Button) findViewById(R.id.btnMediaSync); Button btnVideosSync = (Button) findViewById(R.id.btnVideosSync); btnMediaSync.setEnabled(true); btnVideosSync.setEnabled(true); btnAllSync.setEnabled(true); } ・ ・ ・ } Re:Kayo-System Co.,Ltd.12年11月16日金曜日
  14. 14. 煩雑な AndroidManifest.xml <application android:debuggable="false" android:hardwareAccelerated="false" android:icon="@drawable/appicon" android:label="@string/app_name"> <provider android:name=".provider.MediaContentProvider" android:authorities="jp.co.kayo.android.localplayer" /> <provider android:name=".provider.DeviceContentProvider" android:authorities="jp.co.kayo.android.localplayer.media" /> <provider android:name=".provider.LocalSuggestionProvider" android:authorities="jp.co.kayo.android.localplayer.provider.localsuggestion" android:syncable="false" /> <activity android:name=".MainActivity2" android:label="@string/app_name" android:launchMode="singleTop"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> <intent-filter> <action android:name="android.intent.action.SEARCH" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> <meta-data android:name="android.app.searchable" android:resource="@xml/searchable" /> </activity> <activity android:name=".pref.PremiumConfigPreference" android:label="@string/app_name" /> <activity android:name=".pref.CacheConfigPreference" android:label="@string/app_name" /> <activity android:name=".pref.BeamConfigPreference" android:label="@string/app_name" /> AndroidManifest.xml ・ ・ </application> ・ Re:Kayo-System Co.,Ltd.12年11月16日金曜日
  15. 15. 多様な端末 http://developer.android.com/about/dashboards/index.html Re:Kayo-System Co.,Ltd.12年11月16日金曜日
  16. 16. 肥大化する定義ファイル layout-xlarge layout-land layout-hdpi layout-large layout-xlarge layout-v11 Re:Kayo-System Co.,Ltd.12年11月16日金曜日
  17. 17. どうすればいい? Re:Kayo-System Co.,Ltd.12年11月16日金曜日
  18. 18. 最近のUI開発 Re:Kayo-System Co.,Ltd.12年11月16日金曜日
  19. 19. Fragment Re:Kayo-System Co.,Ltd.12年11月16日金曜日
  20. 20. Re:Kayo-System Co.,Ltd.12年11月16日金曜日
  21. 21. Activity フラグメント フラグメント フラグメント Re:Kayo-System Co.,Ltd.12年11月16日金曜日
  22. 22. Activity フラグメント フラグメント フラグメント Re:Kayo-System Co.,Ltd.12年11月16日金曜日
  23. 23. Activity FragmentManager Fragment FragmentTransaction Re:Kayo-System Co.,Ltd.12年11月16日金曜日
  24. 24. Activity Activity Activity フラグメント フラグメント フラグメント 1 2 1 Backボタン FragmentはBackボタン等で取り外す ことができるのでActivityみたいな動き をするのよ Re:Kayo-System Co.,Ltd.12年11月16日金曜日
  25. 25. addToBackStack 持ち主:FragmentTransaction public abstract FragmentTransaction addToBackStack (String name) パラメーター name オプションとしてnullまたはスタックされる状態の名前 addToBackStackは複数のFragment を一つの画面の状態として FragmentManagerに登録(スタッ ク)するメソッドよ。 Re:Kayo-System Co.,Ltd.12年11月16日金曜日
  26. 26. スタックのイメージ Fragment FragmentTransaction Stack Stack Stack FragmentManager Re:Kayo-System Co.,Ltd.12年11月16日金曜日
  27. 27. 使用例 FragmentTransaction t = getFragmentManager().beginTransaction(); t.add(R.id.framelayout1, new Fragment1(), null); t.addToBackStack("SUB_VIEW"); t.commit(); Fragmentは複数表示された状態を保存で きるようにするため、操作のはじめと終わ りをトランザクションで指定するのよ Re:Kayo-System Co.,Ltd.12年11月16日金曜日
  28. 28. popBackStack 持ち主:FragmentManager public abstract void popBackStack () スタックに追加されたFragmentは Backボタンか、このpopBackStackメ ソッドでもとに戻すことができるのよ Re:Kayo-System Co.,Ltd.12年11月16日金曜日
  29. 29. スタックのイメージ Stack Stack Stack FragmentManager Re:Kayo-System Co.,Ltd.12年11月16日金曜日
  30. 30. 持ち主:FragmentManager public abstract void popBackStack (String name, int flags) パラメーター name nullでない場合、指定された名前の位置までスタックを取り除きます。 POP_BACK_STACK_INCLUSIVEフラグは指定された名前のスタックまで取り除く かどうかを指定するフラグです。 flags 0または POP_BACK_STACK_INCLUSIVE. Fragmentをスタックに追加するときに名前 を設定していたら、このpopBackStackで、 指定した名前まで戻すことができます。 Re:Kayo-System Co.,Ltd.12年11月16日金曜日
  31. 31. Practice OK! 早速、 フラグメント 使い方を教えてよ! ーマスター の技を見せて あげるわ Re:Kayo-System Co.,Ltd.12年11月16日金曜日
  32. 32. Fragmentの設定 フラグメント ホストの Activity フラグメントの レイアウトファイル ホストの レイアウトファイル エントリーポイント Re:Kayo-System Co.,Ltd.12年11月16日金曜日
  33. 33. ホストのレイアウトファイル <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" ・・・省略・・・  <FrameLayout android:id="@+id/framelayout1" android:layout_width="fill_parent" android:layout_height="fill_parent" /> </LinearLayout> エントリーポイント フラグメント追加 FragmentTransaction t = getFragmentManager().beginTransaction(); t.add(R.id.framelayout1, new Fragment1(), null); t.addToBackStack(null); t.commit(); Re:Kayo-System Co.,Ltd.12年11月16日金曜日
  34. 34. ついでに・・・・ <fragment android:name="ykmjuku.android.fragmentsample.Fragment1" android:layout_width="match_parent" android:layout_height="match_parent" /> 直接書くことも可能。 だけど、エントリーポイントがな いので変更できないよ! Re:Kayo-System Co.,Ltd.12年11月16日金曜日
  35. 35. add! replace! remove! Re:Kayo-System Co.,Ltd.12年11月16日金曜日
  36. 36. add addはFragmentを追加します Fragment Fragment Fragment エントリーポイント Re:Kayo-System Co.,Ltd.12年11月16日金曜日
  37. 37. 持ち主:FragmentTransaction public abstract FragmentTransaction add (int containerViewId, Fragment fragment, String tag) パラメーター containerViewId フラグメントを設定するエントリーポイントのIDです。エントリーポイントは ViewGroupである必要があります。0を指定するとエントリーポイント無しで追加され ます fragment 追加するフラグメント tag 追加するフラグメントの名称です。nullを指定することもできます。 戻り値 FragmentTransactionのインスタンス Re:Kayo-System Co.,Ltd.12年11月16日金曜日
  38. 38. replace replaceは指定した位置の Fragmentと入れ替えます Fragment Fragment エントリーポイント Re:Kayo-System Co.,Ltd.12年11月16日金曜日
  39. 39. 持ち主:FragmentTransaction public abstract FragmentTransaction replace (int containerViewId, Fragment fragment, String tag) パラメーター containerViewId 置き換えをしたいフラグメントが設定されているエントリーポイントのID fragment 置き換えるフラグメント tag 追加するフラグメントの名称です。nullを指定することもできます。 戻り値 FragmentTransactionのインスタンス Re:Kayo-System Co.,Ltd.12年11月16日金曜日
  40. 40. remove removeは今いるFragmentを削 除します Fragment Fragment エントリーポイント Re:Kayo-System Co.,Ltd.12年11月16日金曜日
  41. 41. 持ち主:FragmentTransaction public abstract FragmentTransaction remove (Fragment fragment) パラメーター fragment 削除したいフラグメント 戻り値 FragmentTransactionのインスタンス Re:Kayo-System Co.,Ltd.12年11月16日金曜日
  42. 42. addとreplaceの違い replaceは削除して追加した状 態です。 Fragment Fragment Fragment エントリーポイント エントリーポイント Re:Kayo-System Co.,Ltd.12年11月16日金曜日
  43. 43. Fragmentの状態 FragmentManagerの内部では Fragmentは取り付けた状態とそうでない 状態で分けているので、実際は削除して もホントに削除される分けじゃないの。 へぇ、そうなんやぁ Re:Kayo-System Co.,Ltd.12年11月16日金曜日
  44. 44. ライフサイクルで比較 add PAUSE INIT IDLE DESTROYreplace Re:Kayo-System Co.,Ltd.12年11月16日金曜日
  45. 45. だから、replaceは復帰時に OnCreateが呼ばれるので注意してね そ、そんなぁー それじゃadd使うほうが 得やない? Re:Kayo-System Co.,Ltd.12年11月16日金曜日
  46. 46. そう思うでしょ? だから次のようなテストをしてみたので、 違いをみてみて Re:Kayo-System Co.,Ltd.12年11月16日金曜日
  47. 47. addとreplaceで 比較できるアプリを作っ エントリーポイント てみたわ Fragment1 Fragment2 Re:Kayo-System Co.,Ltd.12年11月16日金曜日
  48. 48. replaceの場合 Re:Kayo-System Co.,Ltd.12年11月16日金曜日
  49. 49. addの場合 Re:Kayo-System Co.,Ltd.12年11月16日金曜日
  50. 50. 違いが分かった? addほうは2つ表示され てる!? Re:Kayo-System Co.,Ltd.12年11月16日金曜日
  51. 51. 透けて裏のフラグメントが見える フラグメント2 フラグメント1 つまりこうい うこと Re:Kayo-System Co.,Ltd.12年11月16日金曜日
  52. 52. これじゃ、add使い物に ならないじゃない! そう、はっきりいって使えな い、、だけどちょっと工夫すれ ば使えるよ! Re:Kayo-System Co.,Ltd.12年11月16日金曜日
  53. 53. 見せたくないのはhideで消 せばいいの コレ! Fragment current = getFragmentManager().findFragmentById(R.id.framelayout1); FragmentTransaction t = getFragmentManager().beginTransaction(); t.add(R.id.framelayout1, new Fragment1(), null); t.addToBackStack(null); t.hide(current); t.commit(); Re:Kayo-System Co.,Ltd.12年11月16日金曜日
  54. 54. すると、addでも消える Re:Kayo-System Co.,Ltd.12年11月16日金曜日
  55. 55. そんな、簡単な方法があるなら最初から 教えてくれたってもええやんか。 あぁーー、でも実はこれには罠があって 実はこれだけじゃダメなんだよねぇー Re:Kayo-System Co.,Ltd.12年11月16日金曜日
  56. 56. 回転してみた Re:Kayo-System Co.,Ltd.12年11月16日金曜日
  57. 57. !? ね?ダメでしょ あわわわ、 復活してるわ! Re:Kayo-System Co.,Ltd.12年11月16日金曜日
  58. 58. Androidは回転すると全部 作りなおす特徴があるの 出して 戻す Re:Kayo-System Co.,Ltd.12年11月16日金曜日
  59. 59. それで、回転して戻った時に FragmentManagerはFragmentの 位置は戻すけど、状態までは戻して くれないの そ、そんなぁー それ、バグじゃないの? Re:Kayo-System Co.,Ltd.12年11月16日金曜日
  60. 60. 残念ながら、バグじゃなくて仕様 なんですよねぇ、だからその回避 策を伝授してあげるわ。 おっけー! まかせた Re:Kayo-System Co.,Ltd.12年11月16日金曜日
  61. 61. その1 Re:Kayo-System Co.,Ltd.12年11月16日金曜日
  62. 62. 1.回転を固定 <activity android:name="MainActivity" android:label="@string/app_name" android:screenOrientation="portrait"/> または @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setRequestedOrientation( ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); setContentView(R.layout.main); } Re:Kayo-System Co.,Ltd.12年11月16日金曜日
  63. 63. その2 Re:Kayo-System Co.,Ltd.12年11月16日金曜日
  64. 64. 2.背景を塗りつぶす <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:background="@android:color/white" android:orientation="vertical" > Re:Kayo-System Co.,Ltd.12年11月16日金曜日
  65. 65. その3 Re:Kayo-System Co.,Ltd.12年11月16日金曜日
  66. 66. 3.再表示時に再度hideを設定する @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); if (savedInstanceState != null) { boolean isHiddin = savedInstanceState.getBoolean("isHidden"); if (isHiddin) { FragmentTransaction t = getFragmentManager().beginTransaction(); t.hide(this); t.commit(); } } } @Override public void onSaveInstanceState(Bundle outState) { // TODO Auto-generated method stub super.onSaveInstanceState(outState); outState.putBoolean("isHidden", isHidden()); } Re:Kayo-System Co.,Ltd.12年11月16日金曜日
  67. 67. なるほどー これならフラグメントも使えるね そうそう、フラグメントはすっごい簡単 だし、使いこなすと次のようなメリット があるのよ Re:Kayo-System Co.,Ltd.12年11月16日金曜日
  68. 68. レイアウトファイルが すっきり 画面単位で作成さ 画面1つと、複数 れたレイアウトフ の機能単位で作成 ァイル郡 Re:Kayo-System Co.,Ltd.12年11月16日金曜日
  69. 69. Javaファイルが すっきり 1つのActivityと複 1つのActivity 数のFragment Re:Kayo-System Co.,Ltd.12年11月16日金曜日
  70. 70. AndroidManifest.xmlが すっきり 複数のActivity 一つ Re:Kayo-System Co.,Ltd.12年11月16日金曜日
  71. 71. これでフラグメントは大丈夫ね! 多分! Re:Kayo-System Co.,Ltd.12年11月16日金曜日
  72. 72. values でもさぁ、 端末が増えていく度に増える設定ファ イルはフラグメントだけじゃ解決しな いんじゃない? そうなの、フラグメントはあくまで整理 整頓しやすくなるというだけで、これか ら説明するvaluesを活用するといいよ Re:Kayo-System Co.,Ltd.12年11月16日金曜日
  73. 73. normal small <TextView <TextView android:id="@+id/textView1" android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" android:layout_alignParentTop="true" android:textSize="20sp" android:textSize="18sp" android:layout_marginLeft="5dip" android:layout_marginLeft="5dip" android:text="TextView" /> android:text="TextView" /> <TextView <TextView android:id="@+id/textView2" android:id="@+id/textView2" android:layout_width="wrap_content" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/textView1" android:layout_below="@+id/textView1" android:layout_marginLeft="15dip" android:layout_marginLeft="15dip" android:textSize="18sp" android:textSize="12sp" android:text="TextView" /> android:text="TextView" /> Re:Kayo-System Co.,Ltd.12年11月16日金曜日
  74. 74. 固有の値を直書きするのは止めよう layout-hdpi layout-finger layout-mdpi layout-land layout-ldpi layout-portrait layout-small layout-small layou-large layou-xhdpi layout-xlarge layout-v11 ・・・ Re:Kayo-System Co.,Ltd.12年11月16日金曜日
  75. 75. 値はvaluesで定義 values-ldpi <dimen name="scaleX">5px</dimen> values-mdpi <dimen name="scaleX">10px</dimen> レイアウトファイル values-hdpi <dimen name="scaleX">12px</dimen> values-xdpi <dimen name="scaleX">14px</dimen> Re:Kayo-System Co.,Ltd.12年11月16日金曜日
  76. 76. 機種毎のレイアウトを減らす layout-hdpi layout-mdpi layout-ldpi layout layout-small layout-land layout-land layout-xlarge layout-smal-land layout-xlarge-land layou-large layout-xlarge Re:Kayo-System Co.,Ltd.12年11月16日金曜日
  77. 77. おぉ、valuesで値を定義したら端 末が増えてもレイアウトを追加したり しなくても済むんだね! そう! あと、valuesの他にもうひとつstyleを 使えば完璧よ! Re:Kayo-System Co.,Ltd.12年11月16日金曜日
  78. 78. style styleってテーマとか標準のViewをカ スタマイズするときに使うやつ? そう、でもねもっと使いこなせばいろん な設定がStyleでできちゃうのよ Re:Kayo-System Co.,Ltd.12年11月16日金曜日
  79. 79. 例えば、こういうTextView <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="left¦top" android:textColor="#696969" android:text="色を変更したテキスト" /> <TextView android:id="@+id/textView2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="left¦top" android:textColor="#696969" android:textStyle="bold" android:text="色とスタイルを変更したテキスト" /> Re:Kayo-System Co.,Ltd.12年11月16日金曜日
  80. 80. 固有の値を設定していると、テーマを変更 したり端末によって色味を変える必要があ る場合に困るのでやめよう Re:Kayo-System Co.,Ltd.12年11月16日金曜日
  81. 81. attrとstyle attr value attr value style attr value Re:Kayo-System Co.,Ltd.12年11月16日金曜日
  82. 82. attrの定義 例 <declare-styleable name="MyTheme"> <attr name="listTextColor1" format="color"></attr> <attr name="textStyle1" format="reference"></attr> </declare-styleable> format: "string", "integer", "float", "boolean", "color","dimension", "reference" 他のStyleを参照する属性は referenceを指定してね Re:Kayo-System Co.,Ltd.12年11月16日金曜日
  83. 83. styleの定義 <style name="MyText" parent="@android:style/TextAppearance"> <item name="android:textColor">@color/darkgray</item> <item name="android:textStyle">bold</item> </style> <style name="AppTheme" parent="android:Theme.Light"> <item name="listTextColor1">@color/dimgray</item> <item name="textStyle1">@style/MyText<attr></attr></item> </style> styleではattrで定義された 属性を設定できるよ Re:Kayo-System Co.,Ltd.12年11月16日金曜日
  84. 84. すごい、Fragmentとvaluesとstyleを つかえばすごくすっきりするね! そうなの、Androidは機種対応がとても 多いからこういう工夫をすることで色々 な端末にも対応できるようにするのが大 事なのよ Re:Kayo-System Co.,Ltd.12年11月16日金曜日
  85. 85. Drawable 最後にDrawableについてもいわせ てもらうわ たのむ! Re:Kayo-System Co.,Ltd.12年11月16日金曜日
  86. 86. ぶっちゃけていうと、画像はxhdpiか hdpiだけでいいよ! ぶっちゃけすぎ! Re:Kayo-System Co.,Ltd.12年11月16日金曜日
  87. 87. まとめ Re:Kayo-System Co.,Ltd.12年11月16日金曜日
  88. 88. レイアウトとクラスを機 能毎に分け整理するため にFragmentを使う Re:Kayo-System Co.,Ltd.12年11月16日金曜日
  89. 89. 固定の値を直接レイアウ トで使用せずvaluesを利 用する。 Re:Kayo-System Co.,Ltd.12年11月16日金曜日
  90. 90. なるべく、Styleで設定 を定義し統一する Re:Kayo-System Co.,Ltd.12年11月16日金曜日
  91. 91. APKのサイズが大きくな らないよう無駄なリソー スを作らない Re:Kayo-System Co.,Ltd.12年11月16日金曜日
  92. 92. まだ他にも一杯教えることがあるけど、続 きはすからじおでまってるね! これは 絶対いかなきゃ! Re:Kayo-System Co.,Ltd.12年11月16日金曜日
  93. 93. すからじお オンラインAndroid勉強会 (ACE資格勉強会) 毎週水曜日 夜10時∼ アクセス方法は下のURLから https://plus.google.com/ 117636937254190602510/posts Re:Kayo-System Co.,Ltd.12年11月16日金曜日

×