uGUIで特定の子要素のサイズに応じて親のサイズを変化させるやつ
uGUIの練習で、こういうのを組んでみた。
やりたいこと
固定サイズのアイコンイメージが左側、右上には固定サイズの名前ラベル、名前ラベルの下には動的サイズのメッセージボックス、という組み合わせで構成されたレイアウトに対応して、このレイアウトのバックグラウンドのイメージのサイズを変化させたい。
ひえらるきー
Cellがバックグラウンドのイメージで、Imageがアイコン画像、TextSet以下のNameが名前ラベルでTextが動的に色々入るメッセージボックス。
やり方
- CellにHorizontalLayoutGroup, ContentSizeFitterをアタッチ
- HorizontalLayoutGroupのPaddingとSpacingで背景画像と中身に対してのPaddingとアイコンとテキストの間の間隔を設定する
- 縦方向に変化させたいのでContentSizeFitterのWidthをUnconstrained, HeightをPreferred Sizeに
- CellのAnchorはCenterTopにする
- 上辺を基準に下へ伸びる形になる
- ImageにLayoutElementをアタッチ
- MinWidth, PreferredWidth, PreferredHeightを設定
- TextSetにVerticalLayoutGroupとLayoutElementをアタッチ
- VerticalLayoutGroupのSpacingで名前ラベルとメッセージボックスの間隔を決める
- NameとTextはそのまま
- LayoutGroup系のChildForceExtendは全てチェックを外す
やろうとしてつまずいたところ
- メッセージの行数が増えるとアイコンも縦に伸びる
- メッセージの1行の文字数が増えるとアイコンが横に潰れる
- HorizontalLayoutGroupのChildForceExtendがチェックされていると子要素が引き伸ばされる
- 今回はWidthもHeightも不要だった
参考
逆引き、UnityのuGUIのレイアウトトレーニング(uGUI RectTransform入門その2) - テラシュールブログ
UnityのuGUIのレイアウト調整機能について解説してみる(RectTransform入門) - テラシュールブログ
よこ
ContentSizeFitterをWidth:Preferred Size, Height:Unconstrainedで横に伸びるバージョンにもなる。
ごーるでんうぃーく5日目
はやおきして実家へ戻り、午前に祖父母の家で🍣と🍶を貪り、午後には川崎で友人とエビチリだったりエビチリだったり北京ダックだったり紹興酒だったりを貪りました。
食欲に忠実な一日だったと思います。進捗は全くありません。
あ、実家への行きがけでカービィが2面クリアしたところで3DSの充電が切れました。 かなしみ。
オタク円卓会議 pic.twitter.com/xZI7yWaJOL
— kamakama (@kama2vern) 2016年5月3日
— kamakama (@kama2vern) 2016年5月3日
紹興酒は初めてでしたが良かったですね pic.twitter.com/oGR4wN2BFB
— kamakama (@kama2vern) 2016年5月3日
ごーるでんうぃーく4日目
昨日はなにもしませんでした。
ぎなう
せっかく有給が頂けたので何か美味しいものを食べようとお昼にうなぎを食べに行きました。
休暇情報です pic.twitter.com/31UdeWqVBI
— kamakama (@kama2vern) 2016年5月2日
そう、うなぎがとても好きなのです。
ひつまぶし目当てで両方の指で数え切れないくらい名古屋に行ったのですが、そういえば関西風ばかりで関東風を食べる機会があまりなかったと思い今回のお店に。
ふっくら上品な蒸し焼きでうなぎの旨味が伝ってきながらも、全くしつこくなく美味しく頂けてとても良かったと思います。食評が下手ですいません。
Jenkins & Dockerのアレ
GW当初やってたReusable ListViewはお休みで、Androidビルドをこの辺使ってやろうというのをアレコレしてました。
Jenkins 2.0+DockerをMacに入れてAndroid Buildに使う - カマカマの雑草ブログ
現状、趣味の開発と実務が噛み合っていないので、その辺り少し擦り寄ろうと努力した結果です(仕事はAndroid
趣味でAndroidの何かを本格的にやるならこの辺りでCDを実現させたいとは思いつつ、そもそもジョブ単位にコンテナを立てて使い捨てるのは他のジョブとの兼ね合いや将来を見通した際の運用保守の懸念を軽減させるためのものなので、個人開発でここまでやる意義があるのかというと正直微妙な気はします。
あくまで仕事の方で何か役に立ったら程度で。
ほか
カービィ買いました。まだステージ2ですが1ボスが64リスペクトだったりロボに乗った時のエフェクト超カッコよかったりロボのコピーがSDXのコピーっぽくてカッコよかったりと良い感じです。
ちまちまやってます。
- 出版社/メーカー: 任天堂
- 発売日: 2016/04/28
- メディア: Video Game
- この商品を含むブログ (1件) を見る
これで前に買ったfactorioがすすまなくなる……
Jenkins 2.0+DockerをMacに入れてAndroid Buildに使う
目的
- JenkinsでAndroid開発の継続的デリバリーを実現したい
- Jenkinsの環境が膨れ上がるのを防ぐためDockerでジョブ毎に環境を構築したい
- 今後iOSのビルドにも使えるようにMac上で環境を作りたい
やること
- Jenkins2.0入れる
- Docker Toolbox入れる
- Dockerfileで以下の環境を作る
- Android Projectをcloneする
- Dockerコンテナ上にcloneしたプロジェクトをマウントしビルドを実行する
Jenkins2.0入れる
Docker Toolbox入れる
どちらもインストーラ落としてきてインストールした。
JenkinsはHomebrewで入れようとしてもまだ1.x系らしい。tapするとか別のやり方するとイケるかもしれない。
Docker Toolboxはdocker run通らなくてCannot connect to the Docker daemon.言われたけどeval忘れてただけだった。
Cannot connect to the Docker daemon. Is 'docker -d' running on this host? · Issue #1010 · docker/kitematic · GitHub
Dockerfileつくる
良さ気な設定があるので、これをベースにする。JDK 1.8まで視野に入れた設定になっている。
https://hub.docker.com/r/gfx2015/android/
こうなる
AndroidTodo/Dockerfile at master · MKomiya/AndroidTodo · GitHub
Android Projectをcloneする
Dockerコンテナ上にプロジェクトをマウントしビルドを実行する
jenkins jobで「ソースコード管理」>「Git」からRepositoryとか諸々設定する。
その後「シェルの実行」で「シェルスクリプト」に以下を設定
docker-machine ls docker-machine rm -f dev docker-machine create -d virtualbox dev eval "$(docker-machine env dev)" docker build -t android-todo . docker run -i android-todo ./gradlew --stacktrace test build docker-machine stop dev docker-machine rm -f dev
ホントはbuild.shファイルとかにしておくべきだと思う。
これでビルドまでは問題なく通る。
ヤッターデキタヨー(^o^) pic.twitter.com/NmNpULoJwF
— kamakama (@kama2vern) 2016年5月2日
この後は適宜apkを保存するなりHockeyAppやDeployGateへアップロードすれば良いと思う。
ファイルは/project/path/to/build/outputs/apk/以下とかに入ってるはず。
ハマったところ
docker: command not found
JenkinsのPATHに/usr/local/binを通す。
「Jenkinsの管理」>「システムの設定」
Host does not exist: "default"
デフォルトではdocker-machineが立ち上がってないのでcreateする必要がある。
cannot enable tty mode on non tty input
最初はdocker run -it ってやってたけどttyオプションは不要だった。
参考
ごーるでんうぃーく3日目
(^o^)
ごーるでんうぃーく2日目
昨日のやつでLINQ使える部分を使ってみたりTextのサイズに応じてParentであるCellのサイズを変えようとしてContentSizeFitterやLayoutGroup系と格闘したりしてた。
既存の実装だとTableViewControllerが各Cellに対応するデータを見てHeightを決定する必要があるので、それよりはContentSizeFitterの仕組みで吸収できると良さ気だと思うけど、再利用の際に上手くデータに対応するHeightを生成できるかは中の実装読みつつ考える必要がありそう。思ったより大変。
後はなんか地元の友人と酒飲んでずっと映画見てた。
セッションとバタフライエフェクト最高だった。スクールオブロックはどうでもいい。