অ্যানড্রয়েড সেটভিজিবিলিটি করার সময় সহজ অ্যানিমেশন যুক্ত করে (দেখুন.গন)


237

আমি একটি সাধারণ বিন্যাস ডিজাইন করেছি I আমি অ্যানিমেশন ছাড়াই নকশা শেষ করেছি, তবে এখন পাঠ্যদর্শন ক্লিক ইভেন্টে অ্যানিমেশনগুলি যুক্ত করতে চাই এবং এটি কীভাবে ব্যবহার করতে হয় তা আমি জানি না। আমার এক্সএমএল ডিজাইনটি দেখতে ভাল লাগলো নাকি? কোন পরামর্শ প্রশংসা হবে।

আমার এক্সএমএল

<?xml version="1.0" encoding="UTF-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:longClickable="false"
    android:orientation="vertical"
    android:weightSum="16" >

<LinearLayout 
    android:layout_width="fill_parent"
    android:layout_height="0dp"
    android:orientation="vertical"
    android:background="#00DDA0"
    android:layout_weight="3" >
</LinearLayout>
 <TextView
        android:id="@+id/Information1"
        android:layout_width="match_parent"
        android:layout_height="1dp" 
        android:text="Child Information" 
        android:background="#0390BE"
        android:layout_weight="0.75"
        android:textColor="#FFFFFF"
        android:layout_gravity="center|fill_horizontal"/>

 <LinearLayout
     android:id="@+id/layout1"
     android:layout_width="fill_parent"
     android:layout_height="0dp"
     android:layout_weight="8.5"
     android:background="#BBBBBB"
     android:orientation="vertical" >

     <TextView
         android:id="@+id/textView1"
         android:layout_width="match_parent"
         android:layout_height="match_parent"        
         android:text="TextView" />
 </LinearLayout>

  <TextView
        android:id="@+id/Information2"
        android:layout_width="match_parent"
        android:layout_height="0dp" 
        android:text="Parent Information" 
        android:background="#0390BE"
        android:layout_weight="0.75"
        android:textColor="#FFFFFF"
        android:layout_gravity="center|fill_horizontal"/>
  <LinearLayout 
          android:id="@+id/layout2"
    android:layout_width="fill_parent"
    android:layout_height="0dp"
    android:orientation="vertical"
    android:background="#BBBBBB"
    android:layout_weight="8.5" >
     <TextView
         android:id="@+id/textView2"
         android:layout_width="match_parent"
         android:layout_height="match_parent"        
         android:text="TextView" />
      </LinearLayout>
   <TextView
        android:id="@+id/Information3"
        android:layout_width="match_parent"
        android:layout_height="0dp" 
        android:text="Siblings" 
        android:background="#0390BE"
        android:layout_weight="0.75"
        android:textColor="#FFFFFF"
        android:layout_gravity="center|fill_horizontal"/>
   <LinearLayout 
          android:id="@+id/layout3"
    android:layout_width="fill_parent"
    android:layout_height="0dp"
    android:orientation="vertical"
    android:background="#BBBBBB"
    android:layout_weight="8.5" >
     <TextView
         android:id="@+id/textView3"
         android:layout_width="match_parent"
         android:layout_height="match_parent"        
         android:text="TextView" />
      </LinearLayout>
    <TextView
        android:id="@+id/Information4"
        android:layout_width="match_parent"
        android:layout_height="0dp" 
        android:text="Teacher Information" 
        android:background="#0390BE"
        android:layout_weight="0.75"
        android:textColor="#FFFFFF"
        android:layout_gravity="center|fill_horizontal"/>
    <LinearLayout 
          android:id="@+id/layout4"
    android:layout_width="fill_parent"
    android:layout_height="0dp"
    android:orientation="vertical"
    android:background="#BBBBBB"
    android:layout_weight="8.5" >
     <TextView
         android:id="@+id/textView4"
         android:layout_width="match_parent"
         android:layout_height="match_parent"        
         android:text="TextView" />
      </LinearLayout>
     <TextView
        android:id="@+id/Information5"
        android:layout_width="match_parent"
        android:layout_height="0dp" 
        android:text="Grade Information" 
        android:background="#0390BE"
        android:layout_weight="0.75"
        android:textColor="#FFFFFF"
        android:layout_gravity="center|fill_horizontal"/>
     <LinearLayout 
          android:id="@+id/layout5"
    android:layout_width="fill_parent"
    android:layout_height="0dp"
    android:orientation="vertical"
    android:background="#BBBBBB"
    android:layout_weight="8.5" >
     <TextView
         android:id="@+id/textView5"
         android:layout_width="match_parent"
         android:layout_height="match_parent"        
         android:text="TextView" />
      </LinearLayout>
      <TextView
        android:id="@+id/Information6"
        android:layout_width="match_parent"
        android:layout_height="0dp" 
        android:text="Health Information" 
        android:background="#0390BE"
        android:layout_weight="0.75"
        android:textColor="#FFFFFF"
        android:layout_gravity="center|fill_horizontal"/>
      <LinearLayout 
          android:id="@+id/layout6"
    android:layout_width="fill_parent"
    android:layout_height="0dp"
    android:orientation="vertical"
    android:background="#BBBBBB"
    android:layout_weight="8.5" >
    <TextView
         android:id="@+id/textView5"
         android:layout_width="match_parent"
         android:layout_height="match_parent"        
         android:text="TextView" 
         android:layout_weight="8.5" />
      </LinearLayout>

</LinearLayout>

আমার জাভা

public class Certify_Info extends Activity {

    private static TextView tv2,tv3,tv5,tv6,tv4,tv1;
    private static LinearLayout l1,l2,l3,l4,l5,l6;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_certify__info);

        tv1=(TextView) findViewById(R.id.Information1);
        tv2=(TextView) findViewById(R.id.Information2);
        tv3=(TextView) findViewById(R.id.Information3);
        tv4=(TextView) findViewById(R.id.Information4);
        tv5=(TextView) findViewById(R.id.Information5);
        tv6=(TextView) findViewById(R.id.Information6); 

        l1=(LinearLayout) findViewById(R.id.layout1);
        l2=(LinearLayout) findViewById(R.id.layout2);
        l3=(LinearLayout) findViewById(R.id.layout3);
        l4=(LinearLayout) findViewById(R.id.layout4);
        l5=(LinearLayout) findViewById(R.id.layout5);
        l6=(LinearLayout) findViewById(R.id.layout6); 

        l2.setVisibility(View.GONE);
        l3.setVisibility(View.GONE); 
        l4.setVisibility(View.GONE); 
        l5.setVisibility(View.GONE);
        l6.setVisibility(View.GONE);

        tv1.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                l2.setVisibility(View.GONE);
                l3.setVisibility(View.GONE); 
                l4.setVisibility(View.GONE); 
                l5.setVisibility(View.GONE);
                l6.setVisibility(View.GONE);
                l1.setVisibility(View.VISIBLE);
            }
        });
        tv2.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                l1.setVisibility(View.GONE);
                l3.setVisibility(View.GONE); 
                l4.setVisibility(View.GONE); 
                l5.setVisibility(View.GONE);
                l6.setVisibility(View.GONE);
                l2.setVisibility(View.VISIBLE);
            }
        });
        tv3.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                l1.setVisibility(View.GONE);
                l2.setVisibility(View.GONE);
                l4.setVisibility(View.GONE); 
                l5.setVisibility(View.GONE);
                l6.setVisibility(View.GONE);
                l3.setVisibility(View.VISIBLE);

            }
        });
        tv4.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                l1.setVisibility(View.GONE);
                l2.setVisibility(View.GONE);
                l3.setVisibility(View.GONE); 
                l4.setVisibility(View.GONE); 
                l5.setVisibility(View.GONE);
                l6.setVisibility(View.GONE);
                l4.setVisibility(View.VISIBLE); 
            }
        });
        tv5.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                l1.setVisibility(View.GONE);
                l2.setVisibility(View.GONE);
                l3.setVisibility(View.GONE); 
                l4.setVisibility(View.GONE); 
                l6.setVisibility(View.GONE);
                l5.setVisibility(View.VISIBLE); 
            }
        });
        tv6.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                l1.setVisibility(View.GONE);
                l2.setVisibility(View.GONE);
                l3.setVisibility(View.GONE); 
                l4.setVisibility(View.GONE); 
                l5.setVisibility(View.GONE);
                l6.setVisibility(View.VISIBLE);
            }
        });

    }
}

উত্তর:


705

অ্যানিমেশন যুক্ত করতে আপনি দুটি জিনিস করতে পারেন, প্রথমে আপনার জন্য অ্যান্ড্রয়েড অ্যানিমেট লেআউট পরিবর্তন করতে দিতে পারেন। আপনি যখনই লেআউটে কিছু পরিবর্তন করেন ততবার দেখুন দৃশ্যমানতা পরিবর্তন করতে বা অবস্থানের অবস্থান দেখতে অ্যান্ড্রয়েড স্বয়ংক্রিয়ভাবে বিবর্ণ / স্থানান্তর অ্যানিমেশন তৈরি করে। সেটটি ব্যবহার করতে

android:animateLayoutChanges="true"

আপনার লেআউটের মূল নোডে।

আপনার দ্বিতীয় বিকল্পটি ম্যানুয়ালি অ্যানিমেশন যুক্ত করা হবে to এর জন্য আমি আপনাকে অ্যান্ড্রয়েড 3.0.০ (হানিকম্ব) এ প্রবর্তিত নতুন অ্যানিমেশন এপিআই ব্যবহার করার পরামর্শ দিচ্ছি। আমি আপনাকে কয়েকটি উদাহরণ দিতে পারি:

এটি একটি বিবর্ণ View:

view.animate().alpha(0.0f);

এটি এটিকে ফিরিয়ে দেয়:

view.animate().alpha(1.0f);

এটি Viewতার উচ্চতা দ্বারা একটি নীচে সরানো :

view.animate().translationY(view.getHeight());

এটি Viewঅন্য কোথাও স্থানান্তরিত হওয়ার পরে এটি তার শুরুতে ফিরে আসে :

view.animate().translationY(0);

আপনি setDuration()অ্যানিমেশন সময়কাল সেট করতে ব্যবহার করতে পারেন । উদাহরণস্বরূপ View, এটি 2 সেকেন্ডের সময়কালে একটি বিবর্ণ হয়ে যায় :

view.animate().alpha(0.0f).setDuration(2000);

এবং আপনি নিজের পছন্দমতো অ্যানিমেশনগুলিকে একত্রিত করতে পারেন, উদাহরণস্বরূপ Viewএটি একটি বিবর্ণ হয়ে যায় এবং এটি একই সময়ে 0.3 সেকেন্ডের মধ্যে সরিয়ে নিয়ে যায়:

view.animate()
        .translationY(view.getHeight())
        .alpha(0.0f)
        .setDuration(300);

এবং আপনি অ্যানিমেশনটিতে শ্রোতাও নির্ধারণ করতে পারেন এবং সমস্ত ধরণের ইভেন্টে প্রতিক্রিয়া জানাতে পারেন। যেমন অ্যানিমেশনটি কখন শুরু হয়, কখন এটি শেষ হয় বা পুনরাবৃত্তি হয় ইত্যাদি ইত্যাদি বিমূর্ত শ্রেণিটি ব্যবহার করে AnimatorListenerAdapterআপনাকে AnimatorListenerএকবারে সমস্ত কলব্যাক প্রয়োগ করতে হবে না তবে কেবল আপনার প্রয়োজন হবে those এটি কোডটিকে আরও পঠনযোগ্য করে তোলে। উদাহরণস্বরূপ, নীচের কোডটি Viewতার উচ্চতা দ্বারা 0.3 সেকেন্ড (300 মিলি সেকেন্ড) এর সময়কালে একটি চাল সরিয়ে দেয় এবং যখন অ্যানিমেশনটি সম্পন্ন হয় তখন এর দৃশ্যমানতা সেট করা থাকে View.GONE

view.animate()
        .translationY(view.getHeight())
        .alpha(0.0f)
        .setDuration(300)
        .setListener(new AnimatorListenerAdapter() {
            @Override
            public void onAnimationEnd(Animator animation) {
                super.onAnimationEnd(animation);
                view.setVisibility(View.GONE);
            }
        });

6
@ নাটিক্স আমি এই সুপার কলটিকে রিডানড্যান্ট বলব না। কোন স্তরযুক্ত পৃষ্ঠায় সম্পাদনা করবেন না।
জাভার কাপেলার

5
ভাল তবে বিপরীত সঠিকভাবে কাজ করে না কেন? view.setVisibility (View.VISIBLE); আলফা (1.0f) সঙ্গে 100 প্যাডিং শীর্ষ সঙ্গে প্রদর্শিত ...
delive

15
দৃশ্যমানতার আগে অ্যানিমেশন অবশ্যই সাফ করতে হবে >> view.clearAnimation(); view.setVisibility(View.GONE);অন্যথায় লেআউটটি অদৃশ্য থাকবে এবং চলে না।
ইফতেখারী

2
@ ইফতেখারী @ তারা মোটেও নিবিড় সংস্থান নেই। এবং আপনার যদি আপ টু ডেট অ্যান্ড্রয়েড সংস্করণ থাকে তবে এখনও কম স্মৃতি বা খারাপ গ্রাফিক্স চিপ সহ আপনার কোনও পুরানো ফোন থাকলে তার চেয়ে পিছিয়ে থাকতে পারেন। এবং আমি একটি নতুন গ্রন্থাগার সম্পর্কে কথা বলছি না। অ্যানিমেটারগুলি দেশীয়। এগুলি অ্যান্ড্রয়েড ফ্রেমওয়ার্কের অংশ। তারা 5 বছর আগে মুক্তি পেয়েছে এবং আজ সমস্ত ডিভাইসের 97.9% তাদের সমর্থন করে। অ্যানিমেটারগুলি না ব্যবহার করার কোনও কারণ নেই বা কমপক্ষে ViewCompat.animate()যা সমর্থন লাইব্রেরির অংশ এবং নতুন সংস্করণে অ্যানিমেটারগুলি ব্যবহার করে এবং অ্যান্ড্রয়েড and.০ এবং নীচে অ্যানিমেশনগুলি ব্যবহার করে।
জাভার কাপেলার

1
তবে যখন সমস্ত ডিভাইসের of৯.৯% অ্যান্ড্রয়েড are.০ হয় এবং সেখানে ইউসকেস বেশি থাকে না ViewCompat.animate()
জাভার কাপেলার

69

Visibilityপরিবর্তনগুলি প্রাণবন্ত করার সহজতম উপায় হ'ল ব্যবহারটি Transition APIযা সমর্থন (অ্যান্ড্রয়েডেক্স) প্যাকেজে উপলব্ধ। কেবল কল TransitionManager.beginDelayedTransitionপদ্ধতিটি তারপরে দৃশ্যটির দৃশ্যমানতা পরিবর্তন করুন। মত বিভিন্ন ডিফল্ট ট্রানজিশন হয় Fade, Slide

import androidx.transition.TransitionManager;
import androidx.transition.Transition;
import androidx.transition.Fade;

private void toggle() {
    Transition transition = new Fade();
    transition.setDuration(600);
    transition.addTarget(R.id.image);

    TransitionManager.beginDelayedTransition(parent, transition);
    image.setVisibility(show ? View.VISIBLE : View.GONE);
}

যেখানে অ্যানিমেটেড দৃশ্যের parentপিতামাতা ViewGroup। ফলাফল:

এখানে চিত্র বর্ণনা লিখুন

এখানে Slideরূপান্তর সহ ফলাফল :

import androidx.transition.Slide;

Transition transition = new Slide(Gravity.BOTTOM);

এখানে চিত্র বর্ণনা লিখুন

আপনার যদি অন্যরকম কিছু প্রয়োজন হয় তবে কাস্টম ট্রানজিশন লিখতে সহজ। এখানে CircularRevealTransitionআমি উত্তর দিয়েছিলাম যা দিয়ে উদাহরণ । এটি সার্কুলার রিভাল অ্যানিমেশন সহ ভিউ দেখায় এবং লুকান।

Transition transition = new CircularRevealTransition();

এখানে চিত্র বর্ণনা লিখুন

android:animateLayoutChanges="true"বিকল্পটি একই কাজ করে, এটি কেবল রূপান্তর হিসাবে অটো ট্রান্সশন ব্যবহার করে ।


পুনঃটুইট এই ক্লাসগুলি অ্যান্ড্রয়েড প্যাকেজে উপলব্ধ। সবকিছু পশ্চাদপটে সামঞ্জস্যপূর্ণ
আশাকিরভ

2
কোনও ভিউ গ্রুপকে প্রসারিত / ভাঙ্গার বিষয়ে কী?
TheRealChx101

আপনি একাধিক beginDelayedTransitionএস করতে পারেন ?
জিওংবেস

26

দয়া করে এটি পরীক্ষা করুন লিঙ্কটি করুন। যা এল 2 আর, আর 2 এল, টি 2 বি, বি 2 টি অ্যানিমেশনগুলির মতো অ্যানিমেশনগুলিকে অনুমতি দেবে।

এই কোডটি বাম থেকে ডানে অ্যানিমেশন দেখায়

TranslateAnimation animate = new TranslateAnimation(0,view.getWidth(),0,0);
animate.setDuration(500);
animate.setFillAfter(true);
view.startAnimation(animate);
view.setVisibility(View.GONE);

আপনি যদি এটি আর 2 এল থেকে করতে চান তবে ব্যবহার করুন

TranslateAnimation animate = new TranslateAnimation(0,-view.getWidth(),0,0);

উপরে থেকে নীচে হিসাবে

TranslateAnimation animate = new TranslateAnimation(0,0,0,view.getHeight());

এবং তদ্বিপরীত ..


8
এটি দর্শনটিকে তার আসল অবস্থান থেকে স্থানান্তরিত করে।
Relm

24

এই লাইনটি এক্সএমএল প্যারেন্ট লেআউটে যুক্ত করার চেষ্টা করুন

 android:animateLayoutChanges="true"

আপনার লেআউটটি দেখতে এটির মতো লাগবে

<?xml version="1.0" encoding="UTF-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:animateLayoutChanges="true"
    android:longClickable="false"
    android:orientation="vertical"
    android:weightSum="16">

    .......other code here

    </LinearLayout>

এটি আমার জন্য কাজ করেছে। আমার সেটআপটি রুট ভিউ হিসাবে সীমাবদ্ধ বিন্যাস ব্যবহার করে। দৃশ্য View.VISIBLE সেট করা হলে অ্যানিমেশন প্রদর্শিত হয়
EdgeDev

খুব সহজ এবং মার্জিত সমাধান
নাভিদ আহমদ

11

@ জাভার ক্যাপেলারের উত্তরের ভিত্তিতে আমি যখন স্ক্রিনে নতুন মতামত উপস্থিত হয় তখন (এবং সেগুলি আড়াল করার জন্য অ্যানিমেশন) স্ক্রোল অ্যানিমেশন তৈরি করার একটি উপায়ও আবিষ্কার করেছি।

এটি এই অবস্থা থেকে যায়:

  • বোতাম
  • শেষ বোতাম

প্রতি

  • বোতাম
  • বোতাম ঘ
  • বাটন 2
  • বাটন 3
  • বাটন 4
  • শেষ বোতাম

এবং বিপরীতভাবে.

সুতরাং, যখন ব্যবহারকারী প্রথম বোতামে ক্লিক করবে, "বোতাম 1", "বোতাম 2", "বোতাম 3" এবং "বোতাম 4" উপাদানগুলি বিবর্ণ অ্যানিমেশন ব্যবহার করে উপস্থিত হবে এবং "শেষ বোতাম" উপাদানটি শেষ অবধি নিচে চলে যাবে। স্ক্রোল ভিউটি সঠিকভাবে ব্যবহারের অনুমতি দিয়ে লেআউটের উচ্চতাও পরিবর্তিত হবে।

এটি অ্যানিমেশন সহ উপাদানগুলি দেখানোর কোড:

private void showElements() {
    // Precondition
    if (areElementsVisible()) {
        Log.w(TAG, "The view is already visible. Nothing to do here");
        return;
    }

    // Animate the hidden linear layout as visible and set
    // the alpha as 0.0. Otherwise the animation won't be shown
    mHiddenLinearLayout.setVisibility(View.VISIBLE);
    mHiddenLinearLayout.setAlpha(0.0f);
    mHiddenLinearLayout
            .animate()
            .setDuration(ANIMATION_TRANSITION_TIME)
            .alpha(1.0f)
            .setListener(new AnimatorListenerAdapter() {
                @Override
                public void onAnimationEnd(Animator animation) {
                    super.onAnimationEnd(animation);
                    updateShowElementsButton();
                    mHiddenLinearLayout.animate().setListener(null);
                }
            })
    ;

    mLastButton
            .animate()
            .setDuration(ANIMATION_TRANSITION_TIME)
            .translationY(mHiddenLinearLayoutHeight);

    // Update the high of all the elements relativeLayout
    LayoutParams layoutParams = mAllElementsRelativeLayout.getLayoutParams();

    // TODO: Add vertical margins
    layoutParams.height = mLastButton.getHeight() + mHiddenLinearLayoutHeight;
}

এবং এনিমেশনের উপাদানগুলি লুকানোর কোড:

private void hideElements() {
    // Precondition
    if (!areElementsVisible()) {
        Log.w(TAG, "The view is already non-visible. Nothing to do here");
        return;
    }

    // Animate the hidden linear layout as visible and set
    mHiddenLinearLayout
            .animate()
            .setDuration(ANIMATION_TRANSITION_TIME)
            .alpha(0.0f)
            .setListener(new AnimatorListenerAdapter() {
                @Override
                public void onAnimationEnd(Animator animation) {
                    Log.v(TAG, "Animation ended. Set the view as gone");
                    super.onAnimationEnd(animation);
                    mHiddenLinearLayout.setVisibility(View.GONE);
                    // Hack: Remove the listener. So it won't be executed when
                    // any other animation on this view is executed
                    mHiddenLinearLayout.animate().setListener(null);
                    updateShowElementsButton();
                }
            })
    ;

    mLastButton
            .animate()
            .setDuration(ANIMATION_TRANSITION_TIME)
            .translationY(0);

    // Update the high of all the elements relativeLayout
    LayoutParams layoutParams = mAllElementsRelativeLayout.getLayoutParams();

    // TODO: Add vertical margins
    layoutParams.height = mLastButton.getHeight();
}

দ্রষ্টব্য অ্যানিমেশনটি আড়াল করার পদ্ধতিটিতে একটি সাধারণ হ্যাক রয়েছে। অ্যানিমেশন শ্রোতার mHmittedLinearLayout এ, আমাকে ব্যবহার করে শ্রোতা নিজেই অপসারণ করতে হয়েছিল:

mHiddenLinearLayout.animate().setListener(null);

এর কারণ এটি একবার অ্যানিমেশন শ্রোতা একটি দৃশ্যের সাথে সংযুক্ত হয়ে থাকে, পরের বার যখন এই দৃশ্যে কোনও অ্যানিমেশন কার্যকর করা হয়, শ্রোতার পাশাপাশি কার্যকর করা হবে। এটি অ্যানিমেশন শ্রোতার মধ্যে একটি বাগ হতে পারে।

প্রকল্পের উত্স কোডটি গিটহাবে রয়েছে: https://github.com/jiahaoliuliu/ViewsAnimated

শুভ কোডিং!

আপডেট : দর্শকদের সাথে সংযুক্ত যে কোনও শ্রোতার জন্য, এনিমেশনটি শেষ হওয়ার পরে এটি অপসারণ করা উচিত। এটি ব্যবহার করে করা হয়

view.animate().setListener(null);

এটির সেরা উত্তর
নবীন কুমার এম

1
view.animate().setListener(null);বিবৃতি আমার দিন সংরক্ষণ করা হয়েছে। এটি অবশ্যই একটি বাগ বলে মনে হচ্ছে।
মিশাল ভাইশান

@ মিশালভিশিয়ান এটি খুশি!
jiahao

8

আমি এইভাবে একটি মেনু প্রদর্শন / লুকিয়ে রাখতে সক্ষম হয়েছি:

মেনুভিউ.জভা (ফ্রেম-লেআউট প্রসারিত)

private final int ANIMATION_DURATION = 500;

public void showMenu()
{
    setVisibility(View.VISIBLE);
    animate()
            .alpha(1f)
            .setDuration(ANIMATION_DURATION)
            .setListener(null);
}

private void hideMenu()
{
    animate()
            .alpha(0f)
            .setDuration(ANIMATION_DURATION)
            .setListener(new AnimatorListenerAdapter() {
                @Override
                public void onAnimationEnd(Animator animation) {
                    setVisibility(View.GONE);
                }
            });
}

উৎস

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.