Android 開発 viewをリサイズ
やり方をメモ
タイミング
Activity内なら、onWindowFocusChanged(hasFocus=true)いい。 onCreateだと、viewがまだ見えない、取得する幅が0のまま。
カスタマビューを使ってるなら、surfaceCreated(SurfaceViewの場合)でもいい。
設定の仕方
this.getLayoutParams().height = (int) height;
this.getLayoutParams().width = (int) width;
初Android開発
環境
起動
なぜかデフォルトのままエミュレータが起動しない。
後程原因判明: vagrantでvirtualboxを起動しているのは理由。
$vagrant halt
で問題解決。
仕方なく実機で確認することに。
Activity
アプリで言うと画面のこと。iOSの場合StoryBoradで描くViewと同じ。
- activity間遷移
Intent intent = new Intent(getApplicationContext(),JoinActivity.class); startActivity(intent);
- Toastの表示
引数で表示時間設定。メソッドで表示position設定
Toast ts = Toast.makeText(this, "You did not enter a nickname", Toast.LENGTH_SHORT); ts.setGravity(Gravity.TOP, 0, 0); ts.show();
- タイトルバーの非表示
AppCompatActivityを普通のActivityに変える。
もしくは、動的に切り替え:
/ 非表示 /
getSupportActionBar().hide();
/ 表示 /
getSupportActionBar().show();
AngularJS サーバサイドJSONレスポンスのスタブを作成
WEBサービスを実現する場合、フロントエンドからバックエンドのAPIサーバにアクセスすることが多いと思いますが、バックエンド側がまだ開発途中であったりすると、代替としてNode.js等でスタブのアプリケーションを作ったり、または固定のJSONファイルを作ったりと、割と手間がかかってしまいます。
今回、ためしに AngularJS の ngMockE2E を利用して、擬似的なAPIサーバを構築してみたので、その方法を紹介します。
前提
-
Yeomanで構築したAngularJS開発環境が前提です。
$ yo angular --minsafe
-
そうすると、次のように ngMockライブラリが最初から入ってます。
-
別途 ngMockライブラリをインストール場合も、Bower を使えば簡単にできます。
$ bower install angular-mocks
ngMockを使う準備
①index.htmlからngMockのJSファイルをロード
②ルートモジュールにngMockE2E
を追加
これで準備は完了です。
疑似APIサーバの処理を書く
- 先程と同じ
app.js
に、.run
以降を追記してみます。- 面倒なのでこうしてますが、本当はファイルを分けた方がいいです。
動作確認
ここは何でもいいのですが、APIを叩く処理を書きます。
まず、APIにアクセスするFactoryを作って、
Controllerから呼び出し、
Viewで描写します。
結果はこんな感じ。表示されました!
疑似APIサーバの処理をみてみる
全ての HTTPアクセスがこのロジックを経由します。
で、ここに全てのHTTPアクセスについて定義しないとエラーになるので、注意が必要です。
(正規表現はつかえます。)
.passThrough()
は何もしない、という意味です。テンプレートのアクセスもHTTP経由なので、「URLが views/
で始まる場合は何もしない」というふうに記載しています。
whenGET
でURLを定義し、対応するレスポンスを .respond
に記載します。今回は2パターンを記載してみました。
上のパターンは、単純に用意されたJSONデータをレスポンンスしています。
下のパターンは、JavaScriptでいろいろ処理させてからレスポンンスさせるパターンです。
この例だと、結局JSONをレスポンスしているだけですが、判定処理とか動的なJSONファイルの生成処理がここに書けるわけです。
ほか
-
詳しくは AngularJS のドキュメントをご覧ください。
-
今回つくったソースはGitHubにおいてあります。