এটিআইপি-র মাধ্যমে করার সহজ উপায় বলে মনে হয় না, কারণ অ্যানিমেশনটি কেবলমাত্র আসলের আকারের পরিবর্তে দর্শনের রেন্ডারিং ম্যাট্রিক্সকে পরিবর্তন করে। তবে ভিউ আরও ছোট হচ্ছে এই ভেবে আমরা লিনিয়ারলআউটকে বোকা বানাতে নেতিবাচক মার্জিন সেট করতে পারি।
সুতরাং আমি স্কেলএনিমেশনের উপর ভিত্তি করে আপনার নিজস্ব অ্যানিমেশন ক্লাস তৈরি করার এবং নতুন মার্জিন সেট করতে এবং লেআউটটি আপডেট করার জন্য "অ্যাপ্লিকেশন ট্রান্সফর্মেশন" পদ্ধতিটি ওভাররাইড করার পরামর্শ দিচ্ছি। এটার মত...
public class Q2634073 extends Activity implements OnClickListener {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.q2634073);
findViewById(R.id.item1).setOnClickListener(this);
}
@Override
public void onClick(View view) {
view.startAnimation(new MyScaler(1.0f, 1.0f, 1.0f, 0.0f, 500, view, true));
}
public class MyScaler extends ScaleAnimation {
private View mView;
private LayoutParams mLayoutParams;
private int mMarginBottomFromY, mMarginBottomToY;
private boolean mVanishAfter = false;
public MyScaler(float fromX, float toX, float fromY, float toY, int duration, View view,
boolean vanishAfter) {
super(fromX, toX, fromY, toY);
setDuration(duration);
mView = view;
mVanishAfter = vanishAfter;
mLayoutParams = (LayoutParams) view.getLayoutParams();
int height = mView.getHeight();
mMarginBottomFromY = (int) (height * fromY) + mLayoutParams.bottomMargin - height;
mMarginBottomToY = (int) (0 - ((height * toY) + mLayoutParams.bottomMargin)) - height;
}
@Override
protected void applyTransformation(float interpolatedTime, Transformation t) {
super.applyTransformation(interpolatedTime, t);
if (interpolatedTime < 1.0f) {
int newMarginBottom = mMarginBottomFromY
+ (int) ((mMarginBottomToY - mMarginBottomFromY) * interpolatedTime);
mLayoutParams.setMargins(mLayoutParams.leftMargin, mLayoutParams.topMargin,
mLayoutParams.rightMargin, newMarginBottom);
mView.getParent().requestLayout();
} else if (mVanishAfter) {
mView.setVisibility(View.GONE);
}
}
}
}
সাধারণ ক্যাভিয়েট প্রযোজ্য: যেহেতু আমরা একটি সুরক্ষিত পদ্ধতি (প্রয়োগ ট্রান্সফর্মেশন) ওভাররাইড করছি, এটি Android এর ভবিষ্যতের সংস্করণগুলিতে কাজ করার গ্যারান্টিযুক্ত নয়।