Android View не выходит из родительского ViewGroup в анимации - PullRequest
0 голосов
/ 09 мая 2019

Вот моя деятельность:

public class Main2Activity extends FragmentActivity {

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main2);
        RelativeLayout relativeLayout = findViewById(R.id.p1);
        relativeLayout.setClipChildren(false);
        relativeLayout.setClipToPadding(false);
        Log.e("WIDTH"," "+relativeLayout.getLayoutParams().width);// prints 200
        Log.e("HEIGHT"," "+relativeLayout.getLayoutParams().height);// prints 200
        RelativeLayout relativeLayout2 = findViewById(R.id.p2);
        relativeLayout2.setClipChildren(false);
        relativeLayout2.setClipToPadding(false);
        final ImageView str = findViewById(R.id.star);
        final MyAnimation myAnimation = new MyAnimation();
        myAnimation.setDuration(1000);
        myAnimation.setView(str);

        str.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                str.startAnimation(myAnimation);
            }
        });
    }
}

Вот моя пользовательская анимация

class MyAnimation extends Animation {

    private int dH;
    private int dW;
    private int iH;
    private int iw;
    private ImageView targetView;

    public MyAnimation() {
    }

    @Override
    protected void applyTransformation(float interpolatedTime, Transformation t) {
        float nh = iH + dH * interpolatedTime;
        float nW = iw + dW * interpolatedTime;
        Log.e("WIDTH", "applyTransformation: "+nW ); // final value = 1100
        Log.e("HEIGHT", "applyTransformation: "+nh );// final value =1100
        targetView.getLayoutParams().width = (int) nW;
        targetView.getLayoutParams().height = (int) nh;
        targetView.requestLayout();
    }

    @Override
    public boolean willChangeBounds() {
        return true;
    }

    public void setView(ImageView str) {
        this.targetView = str;
        ViewGroup.LayoutParams lp = str.getLayoutParams();
        iH = lp.height;
        iw =lp.width;
        dH =1000;
        dW = 1000;
    }
}

Мой Xml выглядит так:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="match_parent"
  android:id="@+id/p2"
  android:layout_height="match_parent"
  android:orientation="vertical">

  <RelativeLayout
    android:layout_width="100dp"
    android:clipChildren="false"
    android:id="@+id/p1"
    android:layout_height="100dp"
    android:background="@color/cardview_dark_background"
    android:layout_centerInParent="true"
    android:layout_gravity="center">
    <ImageView
      android:id="@+id/star"
      android:layout_width="50dp"
      android:layout_centerInParent="true"
      android:layout_height="50dp"
      android:src="@android:drawable/btn_star" />
  </RelativeLayout>

</RelativeLayout>

ПРОБЛЕМА Я хочу, чтобы моя звезда переполнила родительский элемент RelativeLayout и стала большой, но, похоже, этого не произошло, поэтому я применил setClipChildren и setClipToPadding оба false , но, похоже, ничего не работает, это делает не пройти через Может ли кто-нибудь мне помочь

...