হচ্ছে DialogFragment
একটি মোড়কের Dialog
বর্গ, আপনি আপনার বেস একটি থিম সেট করা উচিত Dialog
অ্যানিমেশন আপনি চান পেতে:
public class CustomDialogFragment extends DialogFragment implements OnEditorActionListener
{
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState)
{
return super.onCreateView(inflater, container, savedInstanceState);
}
@Override
public Dialog onCreateDialog(Bundle savedInstanceState)
{
AlertDialog.Builder builder =
new AlertDialog.Builder( getActivity(), R.style.MyCustomTheme );
builder
.setTitle( "Your title" )
.setMessage( "Your message" )
.setPositiveButton( "OK" , new DialogInterface.OnClickListener()
{
@Override
public void onClick(DialogInterface dialog, int which) {
dismiss();
}
});
return builder.create();
}
}
তারপরে আপনাকে কেবল থিমটি সংজ্ঞায়িত করতে হবে যা আপনার পছন্দসই অ্যানিমেশনটি অন্তর্ভুক্ত করবে। ইন styles.xml আপনার কাস্টম থিম যোগ করুন:
<style name="MyCustomTheme" parent="@android:style/Theme.Panel">
<item name="android:windowAnimationStyle">@style/MyAnimation.Window</item>
</style>
<style name="MyAnimation.Window" parent="@android:style/Animation.Activity">
<item name="android:windowEnterAnimation">@anim/anim_in</item>
<item name="android:windowExitAnimation">@anim/anim_out</item>
</style>
এখন রেজ / আনিম ফোল্ডারে অ্যানিমেশন ফাইলগুলি যুক্ত করুন :
( android:pivotY
মূল কী)
anim_in.xML
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<scale
android:interpolator="@android:anim/linear_interpolator"
android:fromXScale="0.0"
android:toXScale="1.0"
android:fromYScale="0.0"
android:toYScale="1.0"
android:fillAfter="false"
android:startOffset="200"
android:duration="200"
android:pivotX = "50%"
android:pivotY = "-90%"
/>
<translate
android:fromYDelta="50%"
android:toYDelta="0"
android:startOffset="200"
android:duration="200"
/>
</set>
anim_out.xML
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<scale
android:interpolator="@android:anim/linear_interpolator"
android:fromXScale="1.0"
android:toXScale="0.0"
android:fromYScale="1.0"
android:toYScale="0.0"
android:fillAfter="false"
android:duration="200"
android:pivotX = "50%"
android:pivotY = "-90%"
/>
<translate
android:fromYDelta="0"
android:toYDelta="50%"
android:duration="200"
/>
</set>
অবশেষে, এখানে জটিল জিনিসটি হ'ল প্রতিটি সারিটির কেন্দ্র থেকে আপনার অ্যানিমেশনটি বাড়ানো। আমি মনে করি সারিটি স্ক্রিনটি অনুভূমিকভাবে পূরণ করছে, একদিকে android:pivotX
মান স্থির থাকবে। অন্যদিকে, আপনি এটিকে সংশোধন করতে পারবেন নাandroid:pivotY
প্রোগ্রামটিভ্যালি মানটি ।
আমার পরামর্শটি হ'ল, আপনি কয়েকটি অ্যানিমেশন নির্দিষ্ট করে নিন যার প্রতিটিটির বৈশিষ্ট্যে আলাদা শতাংশের মান রয়েছে android:pivotY
(এবং বেশ কয়েকটি থিম সেই অ্যানিমেশনগুলিকে উল্লেখ করে)। তারপরে, যখন ব্যবহারকারীটি সারিটি টোকা দেয়, তখন স্ক্রিনের সারিটির শতাংশে Y অবস্থান নির্ণয় করুন। শতাংশে অবস্থানটি জানা, আপনার ডায়লগে একটি থিম বরাদ্দ করুন যা উপযুক্তandroid:pivotY
মান।
এটি একটি নিখুঁত সমাধান নয় তবে আপনার জন্য কৌশলটি করতে পারে। আপনি যদি ফলাফলটি পছন্দ না করেন তবে আমি DialogFragment
একটি সাধারণটিকে ভুলে যাওয়া এবং অ্যানিমেট করার পরামর্শ দেবView
সারিটির সঠিক কেন্দ্র থেকে ।
শুভকামনা!