質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

Q&A

1回答

3151閲覧

ImageViewに対するanimationのpivotを動的に変更できない

takeji

総合スコア21

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

0グッド

0クリップ

投稿2016/12/12 02:33

編集2016/12/12 02:48

eclipseでandroidアプリ開発中です。

ImageViewをソースコード内でサイズや位置を変えた所、アニメーションしてるのですが、その支点が上端になってしまいます。
元はanimのxmlで、下端を支点に、そのImageViewの画像を縮小してるので下にグニャッと縮むのですが、今は上端を支点に縮んでしまいます。
以下のようにImageView.setPivotY()とX()しまして、
デバッグすると値は入ってるのですが、画面では変化無く、上端に向かって縮むのみです。
どうすれば良いでしょうか。

すいません。そもそもになってしまいますがxmlでのanimationに対して、ソースコード内から一部変更できますか。

Java

1 int w = iv_player_share.getWidth(); 2 int h = iv_player_share.getHeight(); 3 //高さ、幅をセット 4 Activity3.getIv_player1_attack().getLayoutParams().height = h; 5 Activity3.getIv_player1_attack().getLayoutParams().width= w; 6 7 //位置をセット 8 Activity3.getIv_player1_attack().setX( anchorPos2[0] ); 9 Activity3.getIv_player1_attack().setY( anchorPos2[1] ); 10 11 //ピボット変更。ひとまず大きな値を入れて変化を見る 12 13 Activity3.getIv_player1_attack().requestLayout(); 14 Activity3.getIv_player1_attack().postInvalidate(); 15 //linearのピボットに入ってるような動き。 16 17 //画像を紐付け 18 Rdrawable = Activity3.mainActivity.getResources().getIdentifier(name_img_share,"drawable",Activity3.mainActivity.getPackageName()); 19 Activity3.getIv_player1_attack().setImageResource( Rdrawable ); 20 21 //グニャッと縮むanimation 22 anim1 = AnimationUtils.loadAnimation(Activity3.mainActivity, R.anim.anim_set_jump_attack1); 23 Activity3.getIv_player1_attack().setPivotY(1000.0f); 24 Activity3.getIv_player1_attack().setPivotX(1000.0f); 25 26 Activity3.getIv_player1_attack().requestLayout(); 27 Activity3.getIv_player1_attack().postInvalidate(); 28 anim1.setAnimationListener( new AnimationListener() { 29 //~~~~省略~~~~ 30

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ImageView#setPivotXとImageView#setPivotYはAnimatorのための設定であり、Animationのための設定では無いと思いますよ。
xmlの中でpivotXとpivotYを設定しましょう。

投稿2016/12/12 06:15

yona

総合スコア18155

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

takeji

2016/12/13 07:19

>yonaさん 既にxmlの中で以下のように設定してあります。 それで、ちゃんと動かなくてちょっと困ってます。 <set xmlns:android="http://schemas.android.com/apk/res/android" > <set android:interpolator="@android:anim/accelerate_interpolator" > <!-- しゃがんで立ち上がる --> <scale android:duration="800" android:fillBefore="true" android:fromXScale="1.0" android:fromYScale="1.0" android:interpolator="@android:anim/accelerate_decelerate_interpolator" android:pivotX="50%" android:pivotY="100%" android:repeatCount="1" android:repeatMode="reverse" android:toXScale="1.0" android:toYScale="0.9" /> </set> </set>
yona

2016/12/13 07:24

質問内で「元はanimのxmlで、下端を支点に、そのImageViewの画像を縮小してるので下にグニャッと縮むのですが」と言っていますよね、このxmlに戻したらいいんじゃないですか。
takeji

2016/12/13 08:00

仕様が変わったので戻せないです。 それはレイアウトの関係で下記のように動的にImageViewをソースコード内でいじるようにしたら、前はxmlのanimationで動いてた物が、今は質問文のように上端に縮むようになってしまったのです、、
takeji

2016/12/13 08:00

//動的生成 iv_player1_attack = new ImageView(this); iv_player1_attack.setId(R.id.id2); //親に子をつける rl_jump_attack = (RelativeLayout)Activity3.mainActivity.findViewById(R.id.rl_jump_attack); // rl_jump_attack.removeView(iv_player1_attack); param_p1_attack = new RelativeLayout.LayoutParams(200, 200); param_p1_attack.addRule(RelativeLayout.ALIGN_BOTTOM, R.id.rl_jump_attack); rl_jump_attack.addView(iv_player1_attack, param_p1_attack);
yona

2016/12/13 13:00

動的にImgeViewを作るようにしたということですね? サイズが決まらない状態でピボットを設定しているからかもしれません。 アニメーション関係の処理をHandlerに移して実行してみてください。
takeji

2016/12/13 23:32

はい、以下のようにしてアニメーションしているメソッドの MyAnimation.animation_player_attackをHandlerでやってみましたが、上端に縮む動きは変わらなかったです。 こうなるとxmlは辞めて、ソースコードにアニメーションをベタ書きした方が良いですかね。 private static Runnable updateAnim = new Runnable(){ @Override public void run() { MyAnimation.animation_player_attack(Activity3.mainActivity, this.getName_img_stand()); } private String getName_img_stand() { return name_img_stand; } }; //-------- mHandlerAnim.post(updateAnim);
takeji

2016/12/14 04:50

以下のようにベタ書きしましたが直りませんでした。 anim1 = new ScaleAnimation( 1.0f, // fromScaleX 1.0f, // toScaleX 1.0f, // fromScaleY 0.9f, // toScaleY Animation.RELATIVE_TO_SELF, 1.0f, // pivotXType Animation.RELATIVE_TO_SELF, 1.0f // pivotYType ); anim1.setDuration(80); anim1.setRepeatMode(Animation.REVERSE); anim1.setRepeatCount(1);
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問