mzは がめんせんい をおぼえた!
2015/12/14 01:54:29
つうわけでandroidにおける画面遷移ですね
Main以外のActivity作って、それのIntent作ってstartActivity()するだけね。
finish()を実行すればスパッと親元Activityに戻れる。
Activity間でデータのやりとりしたいときは、基本最初の遷移時と同じ要領で
SINGLE_TOPフラグ指定により新規Activity作成(既存のは消される)ではなく、既存Activity再利用となり、onCreate()が実行されない点に留意されたい。このほうがパフォーマンス的によかろうぞ。
また、作成したActivityをも再利用するのであればCLEAR_TOP(他のActivity全消去)せず再利用時にSINGLE_TOP指定で遷移するのがよいかと思われる、実際組んでないんで動くかどーかしらんけど。あと初期化が必要かどーかにもよるね。
putExtraで置いたデータを受け取るときは、
送り元と受け取りのデータ型は揃えよう。当たり前体操。
Main以外のActivity作って、それのIntent作ってstartActivity()するだけね。
Intent intent = new Intent(getBaseContext(), YourActivity.class);こんな感じね。そこいらでソース探すとコンストラクタにthis渡してるのばかりなんだが、最近仕様が変わったのかしらん?(うちのコード設計上こうなってるだけかも)
startActivity(intent);
finish()を実行すればスパッと親元Activityに戻れる。
Activity間でデータのやりとりしたいときは、基本最初の遷移時と同じ要領で
Intent intent = new Intent(this, MainActivity.class);こんなん。
intent.putExtra("DataLabel", data);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
startActivity(intent);
SINGLE_TOPフラグ指定により新規Activity作成(既存のは消される)ではなく、既存Activity再利用となり、onCreate()が実行されない点に留意されたい。このほうがパフォーマンス的によかろうぞ。
また、作成したActivityをも再利用するのであればCLEAR_TOP(他のActivity全消去)せず再利用時にSINGLE_TOP指定で遷移するのがよいかと思われる、実際組んでないんで動くかどーかしらんけど。あと初期化が必要かどーかにもよるね。
putExtraで置いたデータを受け取るときは、
Intent intent = getIntent();こんなん。受け取るデータが存在しない場合は第二引数のゼロが返る。
data = intent.getIntExtra("DataLabel", 0);
送り元と受け取りのデータ型は揃えよう。当たり前体操。
PR
アプリ作り経過
2015/12/02 02:03:00
android: RotateAnimationがうまくいかなかった件
2015/11/17 21:43:53
結論からいうと
画像の中心を中心に、風車みたいに回したかったんですよ。それがなぜか中心点がズレて画像がスウィングされまくってたもんでなんでじゃいーと各数値を調べてみたら、↑で書いた値の取得が0だったわけだ。
RotateAnimation ra = new RotateAnimation(0, 360,
img.getX() + img.getWidth() / 2, img.getY() + img.getHeight() / 2);
みたいなことをやったところでゼロを2で割ってるに過ぎない。危なっかしいったらない。ImageViewならまだ取得できそうなもんだけどな、うぅむ。
幅と高さの取得が有効なブロックで実行すればうまくいくであろうし、他の手段で回転の中心点を指定してやってもうまくいく。なんというか、こんなんで躓くのはガッカリだね。
あと回転させながら移動とか、アニメーションの組み合わせにはAnimationSetを使うが、風車式の回転と移動を併用するには回転を先にaddAnimation()する必要がある様子。
onCreate()内でView.getWidht()ならびにView.getHeight()してたのが悪かったということになる。
画像の中心を中心に、風車みたいに回したかったんですよ。それがなぜか中心点がズレて画像がスウィングされまくってたもんでなんでじゃいーと各数値を調べてみたら、↑で書いた値の取得が0だったわけだ。
RotateAnimation ra = new RotateAnimation(0, 360,
img.getX() + img.getWidth() / 2, img.getY() + img.getHeight() / 2);
みたいなことをやったところでゼロを2で割ってるに過ぎない。危なっかしいったらない。ImageViewならまだ取得できそうなもんだけどな、うぅむ。
幅と高さの取得が有効なブロックで実行すればうまくいくであろうし、他の手段で回転の中心点を指定してやってもうまくいく。なんというか、こんなんで躓くのはガッカリだね。
あと回転させながら移動とか、アニメーションの組み合わせにはAnimationSetを使うが、風車式の回転と移動を併用するには回転を先にaddAnimation()する必要がある様子。