忍者ブログ
  • 2024.10
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 2024.12
[PR]
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

【2024/11/24 19:50 】 |
RelativeLayout
RelativeLayout
自由な配置を指定できるレイアウト。


============================================
RelativeLayout
リファレンス

gravity
いつもと同じ。

ignoreGravity
gravityを無視させるオブジェクトを1つだけ指定できる。(対応するsetIgnoreMethod()の形からして、1つしか指定できないようだ)





<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"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:gravity="right"
android:ignoreGravity="@+id/imageView11"
tools:context="com.example.layoutmaster.MainActivity" >

<ImageView
android:id="@+id/imageView11"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:src="@drawable/ic_launcher" />

<ImageView
android:id="@+id/imageView12"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/imageView11"
android:src="@drawable/ic_launcher" />

<LinearLayout
android:id="@+id/linearLayout1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/imageView11"
android:layout_below="@+id/imageView11"
android:layout_marginTop="41dp"
android:background="#ff0"
android:orientation="vertical" >

<ImageView
android:id="@+id/imageView1"
android:layout_width="wrap_content"
android:layout_height="0dp"
android:layout_weight="10"
android:src="@drawable/ic_launcher" />

<ImageView
android:id="@+id/imageView2"
android:layout_width="wrap_content"
android:layout_height="0dp"
android:layout_weight="20"
android:src="@drawable/ic_launcher" />

</LinearLayout>
</RelativeLayout>






PR
【2014/08/29 01:17 】 | Android | 有り難いご意見(0)
LinearLayout
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" >

================================================================

LinearLayout

LinearLayout自体への指定。
リファレンス

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"として説明する
各オブジェクトについて

android:layout_height="0dp"
android:layout_weight="10"





という感じで指定する。高さを0dpに明示的に指定することが必須。
なぜ0dpにするかというと、layout_weightは、余白部分の重み付け分割をしている。コンテナ内にwrap_contentとか30dpとかで高さを指定したオブジェクトがあると、それが優先して配置され、残った高さ分をlayout_weightで分割する。
だから、オブジェクトを全部layout_weightで分割したいときは、全部のオブジェクトの高さを0dpにしておくことになる。
参考



<LinearLayout
android:id="@+id/linearLayout1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignParentLeft="true"
android:background="#ff0"
android:orientation="vertical"
>

<ImageView
android:id="@+id/imageView1"
android:layout_width="wrap_content"
android:layout_height="0dp"
android:layout_weight="10"
android:src="@drawable/ic_launcher" />

<ImageView
android:id="@+id/imageView2"
android:layout_width="wrap_content"
android:layout_height="0dp"
android:layout_weight="20"
android:src="@drawable/ic_launcher" />







こんな感じで配置される。ImageViewの場合、画像サイズ自体は変化せず、ビューの範囲が調整される。




<LinearLayout
android:id="@+id/linearLayout1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignParentLeft="true"
android:background="#ff0"
android:orientation="vertical"
>

<ImageView
android:id="@+id/imageView1"
android:layout_width="wrap_content"
android:layout_height="0dp"
android:layout_weight="10"
android:src="@drawable/ic_launcher" />

<ImageView
android:id="@+id/imageView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_launcher" />







imageView2がlayout_height="wrap_content"になっているので、それが優先される。残った余白をlayout_weightで分割している(この場合はimageView2しかないので、余白を全部まるまる使って表示している)
だからlayout_height="match_parent"を指定しているものがあると、layout_weight指定している物はいっさい表示されなくなる。(余白が0になるから)





<LinearLayout
android:id="@+id/linearLayout1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignParentLeft="true"
android:background="#ff0"
android:orientation="vertical"
android:weightSum="100" <!--- 注目!!!!!!! -->
>

<ImageView
android:id="@+id/imageView1"
android:layout_width="wrap_content"
android:layout_height="0dp"
android:layout_weight="10"
android:src="@drawable/ic_launcher" />

<ImageView
android:id="@+id/imageView2"
android:layout_width="wrap_content"
android:layout_height="0dp"
android:layout_weight="20"
android:src="@drawable/ic_launcher" />







LinearLayoutに android:weightSum="100" を指定すると、全体のweightの指定になる。各オブジェクトのweightの合計より大きい値をセットすれば、余白が作れる。小さい値をセットすれば、オブジェクトが見切れる。




注意!LinearLayout自体が layout_height="wrap_content"だと、このweightの指定は効かなくなる。


<LinearLayout
android:id="@+id/linearLayout1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:background="#ff0"
android:orientation="vertical"
>

<ImageView
android:id="@+id/imageView1"
android:layout_width="wrap_content"
android:layout_height="0dp"
android:layout_weight="10"
android:src="@drawable/ic_launcher" />

<ImageView
android:id="@+id/imageView2"
android:layout_width="wrap_content"
android:layout_height="0dp"
android:layout_weight="20"
android:src="@drawable/ic_launcher" />









LinearLayout自体がwrap_contentだと、そもそも余白が作られないから分割しようがない、ということかと思われる。



【2014/08/28 19:44 】 | Android | 有り難いご意見(0)
layoutをマスターする
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



<relativelayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/relative"
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="com.example.layoutmaster.MainActivity" >

<ImageView
android:id="@+id/imageView11"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_marginTop="10dp"
android:paddingTop="10dp"
android:src="@drawable/ic_launcher" />







パディングの設定に使える単位は
参考
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など)の整理

プログラム中からのセット方法
【2014/08/28 19:33 】 | Android | 有り難いご意見(0)
gitコマンド
git使っていてすぐ思い出せなくなる便利コマンドなど

参考

コミットした内容をワーキングディレクトリに戻したい(いったん取り消してコミットを分割したいとか)
$ git reset HEAD~1

コミットしてしまったファイルをリポジトリから削除したい(関係ないファイルをコミットしてしまってたなど)
$ git rm --cached filename

【2014/08/28 16:39 】 | 未選択 | 有り難いご意見(0)
cocosデフォルトプロジェクト作成
毎回使うので、cocosを使ったゲームのプロジェクトのひな形を作った。
フレームワーク化すべきところだが、
臨機応変にやりたいので、git-hubにまるっと置くことにした。

git-hubのプライベートリポジトリに、cocos(や他のフレームワークなども全部入りの状態)のプロジェクトを丸ごと置いて、
新しいゲームを作るときはそれをforkしてローカルに取ってきて始めるという形。

共通部分を手直ししたいときも、git-hubの元プロジェクトを書き換えて、
各自ゲームのプロジェクトで再度pullすればいいだけのはずだ。

ブランチを機能ごとに細かく分ける。
master(基本)
ad_imobile (アイモバイル広告部分)
landscape(横持ち設定部分)
project_name(プロジェクト固有の設定部分。スプラッシュロゴとか、定数マクロとか)

とりあえず、1つのブランチに細かくコミットしていって
あとで各ブランチに分けるときにcherry-pickしていけばよい。


【2014/08/28 14:45 】 | cocos2d-x | 有り難いご意見(0)
iOSでfacebook投稿
Social.frameworkを追加し、


#import <Social/Social.h>

if ([SLComposeViewController isAvailableForServiceType:SLServiceTypeFacebook]) {
SLComposeViewController *facebook = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeFacebook];

// 投稿するコンテンツを設定する
// 表示する文字列
[facebook setInitialText:initialText];
// URL
[facebook addURL:[NSURL URLWithString:@"http://www.xxxx/"]];
// 画像
[facebook addImage:[UIImage imageNamed:@"sample.png"]];
// コールバック
[facebook setCompletionHandler:^(SLComposeViewControllerResult result) {
switch (result) {
case SLComposeViewControllerResultDone:
NSLog(@"Done");
break;
case SLComposeViewControllerResultCancelled:
NSLog(@"Cancelled");
break;
}
}];

// 表示する
[self.viewController presentViewController:facebook animated:YES completion:nil];
}

【2014/08/23 12:24 】 | iPhone | 有り難いご意見(0)
まとめ
データセーブ
[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
【2014/08/23 11:39 】 | 未選択 | 有り難いご意見(0)
iOS,Androidゲームを作るにあたって発注者が用意すべきもの
アクション
スキームのみ


アプリ名(正式名称。ストアに載せるもの)
短縮アプリ名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(あれば)
販売国

【2014/08/12 14:29 】 | iPhone | 有り難いご意見(0)
プロビジョニングプロファイルを手で追加する
最近のXCodeは優秀で、アカウントとの紐付けさえできていれば自動でプロビジョニングプロファイルを作ったり更新したりしてくれる。

でも、人からもらったプロビジョニングを使うときもある。外注とか。

そのときの手順。


まず、プロファイルを確認する。



これの中身を見る。

$ less XXX.mobileprovision



こんな感じで情報が載っていて、この中の「UUID」の項目を確認する。

プロビジョニングプロファイルってどこにあるのかというと、


~/Library/MobileDevice/Provisioning\ Profiles/


ここ。
見てみると



こうなっている。
プロビジョニングプロファイルの固有識別子(UUID)をファイル名として一覧になっている。

つまり、ここに手動でコピーすれば良い。

UUIDは今確認したので、


$ cp XXX.mobileprovision ~/Library/MobileDevice/Provisioning\ Profiles/XXXXXXXX-XXXX-XXXX-XXXXXXXXXXXX.mobileprovision



とすればよい。
これでOK。
必要ならXCodeを再起動すれば、一覧に出てくる。



これでOK。


ただし注意点として、秘密鍵がないと実機実行は起動できないようだ。


【2014/08/12 13:08 】 | iPhone | 有り難いご意見(0)
UITableViewCell
テーブルビューのセルは、フレームワークが自動で再利用している。

セルの形式が同じなら、中のtextとかimageViewとかだけ差し替えて再利用する。メモリの破棄・確保をせずに済ますため。

セルの形式が同じなのかどうかを、identifierで区別させている。

よくある書き方はこう。


UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier: identifier];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle: UITableViewCellStyleValue2 reuseIdentifier: identifier];
}




一行目で、指定のidentifierのセルで、使われていない(表示されていない)セルがあるかどうか、あればdequeueして取ってくる。
もし無ければ、スタイル指定しidentifier指定してセルを生成する。

で、このあとtextとかimageViewとか指定して使っている訳。
このセルが使われなくなったら、また同じidentifierが使われたときに再利用されるのを待つわけだ。

参考


再利用される見込みがなければ別に指定しなくてもいい。

なお、storyboardでCellIdentifierを指定していたら、それは必ず作成されていて、dequeueで取って来れるようになっている?
【2014/07/03 11:30 】 | 未選択 | 有り難いご意見(0)
<<前ページ | ホーム | 次ページ>>