ビューをアニメーション化して、そのタッチ領域と画像が実際に一緒に動くようにする正しい方法を初心者に説明してもらえますか?!
多くの投稿、質問、チュートリアルを読みましたが、ビューをアニメーション化して新しい位置に残すことができるように、レイアウトを移動するものと画像を移動するものを説明するものはありません。
これは私が取り組んでいる方法の例であり、さまざまな組み合わせを試して成功しませんでした。ビューは親の RelativeLayout にあります。これはタッチ可能なアイコンのメニューであり、クリックして画面からスライドすると xml リソースでアニメーション化され、小さなタブが表示されたままになり、再度クリックするまでそこにとどまる必要があります。
public void RetractTools (View v){
final ImageView finalImage1 = (ImageView) findViewById(R.id.paintsView);
Animation slideout = AnimationUtils.loadAnimation(this, R.anim.slideout_tools);
slideout.setFillAfter(true);
slideout.setAnimationListener(new AnimationListener() {
@Override
public void onAnimationEnd(Animation animation) {
finalImage1.setEnabled(true);
optionMenu.showing = false;
optionMenu.inMotion = false;
finalImage1.layout(1258, 668, 1697, 752);
finalImage1.setRight(1280);
finalImage1.invalidate();
}
@Override
public void onAnimationRepeat(Animation arg0) {
}
@Override
public void onAnimationStart(Animation arg0) {
finalImage1.setEnabled(false);
}
});
optionMenu.inMotion = true;
v.startAnimation(slideout);
}// End RetractMenu
何をしようとしても、問題が発生します。setFillAfter は、xml ファイルで設定されている場合は何もしません。プログラムで設定すると、画像は正しい場所に残りますが、タッチ コントロールはメニューがあった場所に残ります。私は setLeft と setRight を試しましたが、ビューの位置ではなく、画像のみを移動し、あらゆる種類の異なるレイアウト オプションを試しました。ビューを配置してレンダリングするために必要な基本的なメカニズムを理解していないことは明らかです。:D
ありがとう。
編集:解決策
同様の問題を抱えている人にとっては、これが相対レイアウトで機能することがわかった方法です。指定したサイズの LayoutParams オブジェクトを作成すると、位置を割り当てることができます。例えば。
final RelativeLayout.LayoutParams position = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
position.leftMargin = 440;
次に、それをビューに割り当てます
myView.setLayoutParams(position);
要約すると、私が想定したようにビューの座標に直接アクセスするのではなく、ビューの位置へのインターフェイスとして LayoutParams オブジェクトを使用します。