× [PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。 |
RelativeLayout
自由な配置を指定できるレイアウト。 ============================================ RelativeLayout リファレンス gravity いつもと同じ。 ignoreGravity gravityを無視させるオブジェクトを1つだけ指定できる。(対応するsetIgnoreMethod()の形からして、1つしか指定できないようだ) 例
PR |
LinearLayout
縦か横に単に並べるレイアウトグループ。 Eclipse上のGraphical Layoutで追加すると、以下のようにXMLが生成される。 <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:layout_centerHorizontal="true" android:layout_marginTop="127dp" android:orientation="vertical" > ================================================================ LinearLayoutLinearLayout自体への指定。リファレンス orientation 並べる向き。horizontal か vertical gravity 配置位置 fill デフォルト。内部に配置するオブジェクトの幅・高さをコンテナに合わせる top 上に寄せる(オブジェクトのサイズはそのまま)。bottom,left,rightも同様 center 中央に寄せる(サイズはそのまま) center_vertical 上下位置の中央に寄せる(サイズはそのまま)center_horizontalも同様 fill_vertical 上下をコンテナサイズに合わせる。らしいがどうも効かないようだ。fill_horizontalも同様 例 デフォルト(fill)。左上寄せになる android:gravity="right" android:gravity="right|bottom" パイプで繋いで複数指定可能 android:gravity="center" baselineAligned 内部のオブジェクトのベースラインを揃える。 ベースライン…テキストのベースラインのことのようだ。 ================================================================ LinearLayout.LayoutParamsリファレンスLinearLayoutコンテナ内のオブジェクトへの指定に使う要素。 layout_gravity 配置方向。gravityと同じく、top,left,right,bottomなど。 ただし、orientation="horizontal" のときはtop,bottom、orientation="vertical"のときはleft,rightしか効かない。 また、fill_系はなぜか使えないようだ。その場合は、layout_width="match_parent"またはlayout_height="match_parent"とすると横幅(縦幅)いっぱいに広がる。 (内部にImageViewを置き、android:scaleType="fitXY"にしても結局fill_horizontalは効かなかった) layout_weight 比率を指定して配置できる。以下、android:orientation="vertical"として説明する 各オブジェクトについて
という感じで指定する。高さを0dpに明示的に指定することが必須。 なぜ0dpにするかというと、layout_weightは、余白部分の重み付け分割をしている。コンテナ内にwrap_contentとか30dpとかで高さを指定したオブジェクトがあると、それが優先して配置され、残った高さ分をlayout_weightで分割する。 だから、オブジェクトを全部layout_weightで分割したいときは、全部のオブジェクトの高さを0dpにしておくことになる。 参考
こんな感じで配置される。ImageViewの場合、画像サイズ自体は変化せず、ビューの範囲が調整される。
imageView2がlayout_height="wrap_content"になっているので、それが優先される。残った余白をlayout_weightで分割している(この場合はimageView2しかないので、余白を全部まるまる使って表示している) だからlayout_height="match_parent"を指定しているものがあると、layout_weight指定している物はいっさい表示されなくなる。(余白が0になるから)
LinearLayoutに android:weightSum="100" を指定すると、全体のweightの指定になる。各オブジェクトのweightの合計より大きい値をセットすれば、余白が作れる。小さい値をセットすれば、オブジェクトが見切れる。 注意!LinearLayout自体が layout_height="wrap_content"だと、このweightの指定は効かなくなる。
LinearLayout自体がwrap_contentだと、そもそも余白が作られないから分割しようがない、ということかと思われる。 |
Androidのレイアウトをマスターする。
以下のページにいろいろまとまっている。 参考 レイアウトクラス こんな感じで各レイアウトに2種類ずつクラスがあるが、 上はレイアウトクラス自体の配置やサイズの指定で(例:LinearLayout.orientaion…並べる方向)、 下は内部のオブジェクトの配置やサイズの指定に使う要素(例:RelativeLayout.LayoutParams.layout_gravity…配置の寄せる方向)が入っている。 LinearLayout自身の配置位置指定は、LinearLayoutの親コンテナの指定に依る。つまり親コンテナが例えばRelativeLayoutなら、RelativeLayoutの項を参照のこと。 layout_gravity(自身の配置位置指定)はどうも効かないようだ。 共通のレイアウトパラメータ android:layout_marginLeft="77dp" 左のマージン指定 layout_marginRight layout_marginTop layout_marginBottom layout_marginStart layout_marginEnd paddingは、ビューの内部に隙間を作る paddingTop paddingBottom paddingLeft paddingRight
パディングの設定に使える単位は 参考 px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), in (inches), mm (millimeters) 可視状態可視状態には3つの状態がある。VISIBLE 見える INVISIBLE 見えない。非表示部分は詰めない GONE 見えない。非表示部分を詰める xml上で指定する場合は android:visibility="visible" android:visibility="invisible" android:visibility="gone" とする。すぐGraphicalLayoutにも反映される。デフォルトはもちろんvisible。 プログラム中で指定する場合は view.setVisibility(View.VISIBLE); view.setVisibility(View.INVISIBLE); view.setVisibility(View.GONE); となる。 残り調査するもの TableLayout AbsoluteLayout 情報は今もいろんなところに載っているが、API3ですでになくなっているので使うべからず。 Space 隙間を作るためのウィジェット! Graphical LayoutのLayoutsパレットにある 単位(dpなど)の整理 プログラム中からのセット方法 |
git使っていてすぐ思い出せなくなる便利コマンドなど
参考 コミットした内容をワーキングディレクトリに戻したい(いったん取り消してコミットを分割したいとか) $ git reset HEAD~1 コミットしてしまったファイルをリポジトリから削除したい(関係ないファイルをコミットしてしまってたなど) $ git rm --cached filename |
毎回使うので、cocosを使ったゲームのプロジェクトのひな形を作った。
フレームワーク化すべきところだが、 臨機応変にやりたいので、git-hubにまるっと置くことにした。 git-hubのプライベートリポジトリに、cocos(や他のフレームワークなども全部入りの状態)のプロジェクトを丸ごと置いて、 新しいゲームを作るときはそれをforkしてローカルに取ってきて始めるという形。 共通部分を手直ししたいときも、git-hubの元プロジェクトを書き換えて、 各自ゲームのプロジェクトで再度pullすればいいだけのはずだ。 ブランチを機能ごとに細かく分ける。 master(基本) ad_imobile (アイモバイル広告部分) landscape(横持ち設定部分) project_name(プロジェクト固有の設定部分。スプラッシュロゴとか、定数マクロとか) とりあえず、1つのブランチに細かくコミットしていって あとで各ブランチに分けるときにcherry-pickしていけばよい。 |
Social.frameworkを追加し、
|
データセーブ
[iOS][NSUserDefaults] URLスキーム [iOS]カンタン [iOS]詳しめ [Android] なおAndroidでURLスキーム呼び出しを実験する際は、実際にhtml内のリンクを踏むしか無い。(iOSなら、safariのアドレスバーに xxx:// と入力すれば良いのだが.) だから、このブログとかでリンクを埋め込んで、Android端末でこのページにアクセスしてリンクを踏むとかする必要がある。 例えばこんな感じ→ facebookのurlスキーム twitter連携 [iOS] facebook連携 [iOS] ストアに飛ばす [iOS] レーティング [iOS]iRate導入 push通知 [iOS]appCCloud [Android]appCCloud 広告 アイモバイルSDK [iOS]アイモバイル [cocos]appCCloud [Android]appCCloud [iOS]appCCloud |
アクション
スキームのみ アプリ名(正式名称。ストアに載せるもの) 短縮アプリ名iPhone(全角6文字以内がよい) 短縮アプリ名Android(正式名と同じでもよい) バンドルID。(iPhone、androidのパッケージ名。広告SDKやanalyticsなどで使用するので先に決めておくのが良い) 各種アイコン。 とてもややこしい。以下参照 ios,android iPhone、iPad ios全バージョン ややこしすぎるので、一覧を作るのはやめてユースケースだけ挙げておく。 どのバージョンでも、iTunesストア用のアイコン 512,1024 は必要。 それに加えて iPhoneのみで7以降なら 58(設定),80(spotlight),120(アイコン) が必要。 iPhoneで6も含むなら、さらに 29(設定、spotlight),57(アイコン),114(アイコン) が必要。 andoroidに関しては 192,144,96,72,48,36 が必要。 動作確認用の端末のUUIDの一覧。 Apple Dev Centerのアカウント。 チームアカウントで作れば、複数のアカウントを紐づけることができる。権限も個別にしてい可能。iTunesConnectとは別に管理もできるので、開発者だけに渡すアカウントも作れる。 Google Play Devのアカウント。 他に、必要なら以下も。 TestFlightのアカウント。アプリの共有に。 広告SDKのアカウント。(バンドルIDも併せて使う場合あり) PUSH通知などのサービス(証明書なども併せて使う場合あり) Google Analytics(普通はGoogle Play Devと同じでよい) ストアへの提出を行う場合は、以下も。 iOSの場合 iTunesConnectのアカウント。 ストア文面 検索用キーワード 配信国 Copyright表記 アプリのカテゴリー サポートURL レビュー中コンタクト情報(苗字、名前、emal、電話番号) スクリーンショット(1024x768,960x640,1136x640の3種。各最大5枚) 配信開始予定日 Androidの場合 簡単な説明(80文字以内) 詳細な説明(4000文字以内) スクリーンショット。3種各最大8枚。1 辺の長さが320~3840px。 高解像度画像 512 x 512 宣伝用画像 1,024 x 500 プロモーション画像 180x120 アプリのタイプ・カテゴリ 連絡先のウェブサイトまたはemail(あれば電話番号も) プライバシーポリシーを書いたURL(あれば) 販売国 |
最近のXCodeは優秀で、アカウントとの紐付けさえできていれば自動でプロビジョニングプロファイルを作ったり更新したりしてくれる。
でも、人からもらったプロビジョニングを使うときもある。外注とか。 そのときの手順。 まず、プロファイルを確認する。 これの中身を見る。 $ less XXX.mobileprovision こんな感じで情報が載っていて、この中の「UUID」の項目を確認する。 プロビジョニングプロファイルってどこにあるのかというと、
ここ。 見てみると こうなっている。 プロビジョニングプロファイルの固有識別子(UUID)をファイル名として一覧になっている。 つまり、ここに手動でコピーすれば良い。 UUIDは今確認したので、
とすればよい。 これでOK。 必要ならXCodeを再起動すれば、一覧に出てくる。 これでOK。 ただし注意点として、秘密鍵がないと実機実行は起動できないようだ。 |
テーブルビューのセルは、フレームワークが自動で再利用している。
セルの形式が同じなら、中のtextとかimageViewとかだけ差し替えて再利用する。メモリの破棄・確保をせずに済ますため。 セルの形式が同じなのかどうかを、identifierで区別させている。 よくある書き方はこう。
一行目で、指定のidentifierのセルで、使われていない(表示されていない)セルがあるかどうか、あればdequeueして取ってくる。 もし無ければ、スタイル指定しidentifier指定してセルを生成する。 で、このあとtextとかimageViewとか指定して使っている訳。 このセルが使われなくなったら、また同じidentifierが使われたときに再利用されるのを待つわけだ。 参考 再利用される見込みがなければ別に指定しなくてもいい。 なお、storyboardでCellIdentifierを指定していたら、それは必ず作成されていて、dequeueで取って来れるようになっている? |